![]() |
Re: showmodal Fenser ansprechen ?
Hallo,
was ist, wenn du die Aufrufe einfach drehst: also so (Beispiel):
Delphi-Quellcode:
So hast du 1. die Daten übergeben und 2. das Fenster Modal geöffnet
with Form2 do
begin Edit1.Text := 'hallo'; Label1.Caption := 'winke'; ShowModal; end; |
Re: showmodal Fenser ansprechen ?
...davor muss ich das Fenster aber Createn
:( |
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:
4.) Ergebnisse des Formulars auslesen und versorgen (speichern)
case formX.ShowModal of
mrOK: // OK-dedrückt; Ergebnisse auslesen begin end; mrAbort: begin end; end; 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; |
Re: showmodal Fenser ansprechen ?
Um zurück zur Ursprünglichen Frage zu kommen:
Zitat:
|
Re: showmodal Fenser ansprechen ?
Hallo. Ich habe das gelöst. Es war MEIN Fehler bei der Eigenschaft VISIBLE des Forms.
Delphi-Quellcode:
Am morgen sind die probleme von gestern leich zu lösen ;)
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; Dank für Ihre Tipps. |
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:
und dann wird diese Public-Methode aufgerufen. Vorteil von dieser Variante ist das man auch auf Private-Elemente beim Initialisieren was zuweisen kann.
function Tf_Kontakte.Execute(ASearchText: String): Boolean;
begin e_suchbegriff.Text := ASearchText; result := ShowModal = mrOK; end; 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; |
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:
|
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.
|
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. |
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. |
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