![]() |
showmodal Fenser ansprechen ?
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.
|
Re: showmodal Fenser ansprechen ?
Zitat:
Delphi-Quellcode:
//[...]
form2.showmodal; form2.edit1.text:='Ist das ein Zugriff?'; //[...] |
Re: showmodal Fenser ansprechen ?
Ja. Aber wenn ich das Fenster schliesse, erst dann erfolgt
Delphi-Quellcode:
Ich muss aber das gleiche Fenster öffnen aber mit unterschiedlichen Sql.abfragen
form2.edit1.text:='Ist das ein Zugriff?';
|
Re: showmodal Fenser ansprechen ?
Wenn du ein Form als ShowModal aufrufst, dann bleibt der entsprechende Thread dort solange hängen, bis die Form wieder geschlossen wurde.
Also alles was danach im Code steht, wird erst nach dem Schließen der Form ausgeführt (es sei denn du lagerst vorher was in einen anderen Thread aus). |
Re: showmodal Fenser ansprechen ?
Hallo,
wenn du nicht gerade ModalResult brauchst, kannst du auch folgendes schreiben:
Delphi-Quellcode:
Gruß,
Form1.Enabled := false;
Form2.Show; // ohne Modal Form2.WasWeisIch; ... Form2.Close; Form1.Enabled := true; // <- wichtig, nicht vergessen // oder in Form2.onClose ManuMF |
Re: showmodal Fenser ansprechen ?
Delphi-Quellcode:
so würde das auch gehen, blos das fenster öffnet sich zwei mal nach einnander :(
Show;
mache Irgendwas Visible := False; Showmodal; Die andere Lösung schaue ichmir auch an. |
Re: showmodal Fenser ansprechen ?
Ist das möglich ein Fenser zu erstellen, ohne es sichtbar zu machen?
Form.Create(nil). Macht das z.B sichtbar. |
Re: showmodal Fenser ansprechen ?
Hallo,
das ShowModal musst du dann natürlich weglassen ;-) Gruß, ManuMF |
Re: showmodal Fenser ansprechen ?
das ist ja der Hacken. Das muss schon MODAL geöfnet sein. Damit der Benuzter das Fenster beenden mus, um weiter zu machen. Aber beim Aufruf soll ich auf die Komponenten zugrefen können.
|
Re: showmodal Fenser ansprechen ?
Zitat:
Das ist eine Alternative zu ShowModal. |
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 ;)
|
Re: showmodal Fenser ansprechen ?
das "visible := false" ist wirklich überflüssig. Wie bereits geschrieben dürfte das Formular gar nicht sichtbar werden wenn es im OI richtig eingestellt wurde.
@mquadrat: Bei D2006 ist die glaub ich nicht mehr der Fall. Zumindest mein ich mich erinnern zu können das ich letztens ein neues Form dem Projekt hinzgefügt habe und dies war sofort sichtbar. |
Re: showmodal Fenser ansprechen ?
@SirThornberry
Doch ist auch in D2006 so, hab grad nachgeschaut :D |
Re: showmodal Fenser ansprechen ?
...danke :)
|
Re: showmodal Fenser ansprechen ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz