Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi showmodal Fenser ansprechen ? (https://www.delphipraxis.net/72237-showmodal-fenser-ansprechen.html)

Helmi 27. Jun 2006 15:32

Re: showmodal Fenser ansprechen ?
 
Hallo,

was ist, wenn du die Aufrufe einfach drehst:

also so (Beispiel):

Delphi-Quellcode:
with Form2 do
  begin
    Edit1.Text    := 'hallo';
    Label1.Caption := 'winke';
    ShowModal;
  end;
So hast du 1. die Daten übergeben und 2. das Fenster Modal geöffnet

Karstadt 27. Jun 2006 15:43

Re: showmodal Fenser ansprechen ?
 
...davor muss ich das Fenster aber Createn

:(

shmia 27. Jun 2006 16:08

Re: showmodal Fenser ansprechen ?
 
Mal was ganz grundsätzliches zu modalen Formularen:

Modale Formulare sollten so benützt werden
1.) Formular mit Create erzeugen
2.) Alle Anfangswerte bestücken
3.) Funktion ShowModal aufrufen und das Ergebnis am Besten gleich auswerten
Delphi-Quellcode:
   case formX.ShowModal of
      mrOK: // OK-dedrückt; Ergebnisse auslesen
      begin
      end;
      mrAbort:
      begin
      end;
   end;
4.) Ergebnisse des Formulars auslesen und versorgen (speichern)
5.) Fformular zerstören

Ein Login-Formular bietet z.B. User und Passwort als Eingabefelder an.
Diese Daten sollten über Properties gekapselt werden.
Delphi-Quellcode:
   property UserName:string read GetUserName write SetUserName;
....
function TModalForm.GetUserName:string;
begin
   result := EditUserName.Text;
end;
procedure TModalForm.SetUserName(const Value:string);
begin
   EditUserName.Text := value;
end;

Phoenix 27. Jun 2006 16:30

Re: showmodal Fenser ansprechen ?
 
Um zurück zur Ursprünglichen Frage zu kommen:

Zitat:

Zitat von Karstadt
Hallo. Ich habe ein Formular mit Showmodal Aufgerufen. Nun will ich nach diesen Aufruf eine Komponente anprechen.... geht das? wichtig ist, das erst showmodal kommt und erst dann zuweisung.

Um es ganz kurz und korrekt zu machen: Nein, genau das geht explizit nicht - und genau damit das nicht geht gibt es ShowModal und kein normales Show.

Karstadt 28. Jun 2006 07:46

Re: showmodal Fenser ansprechen ?
 
Hallo. Ich habe das gelöst. Es war MEIN Fehler bei der Eigenschaft VISIBLE des Forms.

Delphi-Quellcode:
var Formular: Tf_kontakte;
begin
  Formular := Tf_kontakte.Create(nil); // hier habe ich vergessen beim Formular Kontakte die Eigenschaft
                                       // visible auf FALSE zu setzen.
  Formular.e_suchbegriff.Text := 'AAAAAA'; // Hier greife ich auf die Komponente
  Formular.ShowModal;                // Hier Rufe ich das Fenster als MODAL auf.
  Formular.Free;
end;
Am morgen sind die probleme von gestern leich zu lösen ;)

Dank für Ihre Tipps.

SirThornberry 28. Jun 2006 08:28

Re: showmodal Fenser ansprechen ?
 
ich mach bei sowas in der Regel eine Public Methode in das Fenster was Modal geöffnet werden soll welche dann so aussieht
Delphi-Quellcode:
function Tf_Kontakte.Execute(ASearchText: String): Boolean;
begin
  e_suchbegriff.Text := ASearchText;
  result := ShowModal = mrOK;
end;
und dann wird diese Public-Methode aufgerufen. Vorteil von dieser Variante ist das man auch auf Private-Elemente beim Initialisieren was zuweisen kann.

Meist mach ich dann noch zusätzlich eine Class-Methode um mir das Creieren zu ersparen:
Delphi-Quellcode:
class function Tf_Kontakte.ExecuteClass(ASearchText: String): Boolean;
var lForm: TfKontakte;
begin
  result := False;
  lForm := Tf_Kontakte.Create(nil);
  try
    result := lForm.Execute(ASearchText);
  finally
    lForm.Free;
  end;
end;

mquadrat 28. Jun 2006 08:32

Re: showmodal Fenser ansprechen ?
 
Bin ich eigentlich der einzige der sich wundert, dass das Formular beim Erzeugen angeblich schon angezeigt werden soll? Also bei mir nicht :gruebel:

SirThornberry 28. Jun 2006 08:34

Re: showmodal Fenser ansprechen ?
 
@mquadrat: Es kommt darauf an was in der DFM steht, also im Objectinspektor eingestellt wurde. Ansonsten bin ich mir auch nicht sicher ob es sofort angezeigt wird weil ja noch keine Messages verarbeitet werden.

morri 28. Jun 2006 08:35

Re: showmodal Fenser ansprechen ?
 
Ich habe mich auch gewundert aber noch nichts gesagt ;)
Das visible:=false ist für mich auch quatsch.
Es wird erst createt, dann mit show oder showmodal in diesem Falle angezeigt.

mquadrat 28. Jun 2006 08:36

Re: showmodal Fenser ansprechen ?
 
Stimmt, aber Visible wird doch per Default immer erstmal auf false gesetzt, wenn man ein neues Formular anlegt.. Macht auch irgendwie überhaupt keinen Sinn das zu ändern. Aber egal, sein Problem ist ja gelöst ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz