Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fenster schliesst nicht (https://www.delphipraxis.net/10797-fenster-schliesst-nicht.html)

Pseudemys Nelsoni 25. Okt 2003 15:34


Fenster schliesst nicht
 
hallo,

sagen wir mal ich möchte per button-klick form2 schliessen, und form 3 aufrufen...z.b so:

Delphi-Quellcode:
Form2.Close;
form3.showmodal;
dann schliesst sich Form 2 erst NACH schliessen von Form3, wieso? ich muss form 2 aber beenden bevor form3 visible ist

mirage228 25. Okt 2003 16:01

Re: Fenster schliesst nicht
 
hi silent,

mach mal testweise ein delay von 1000 mSek dazwischen (Delay in Delphi gibts inner Code-Lib)

mfG
mirage228

Pseudemys Nelsoni 25. Okt 2003 16:15

Re: Fenster schliesst nicht
 
geht es nicht auch ohne? ich weiss nur das es daran liegt das form3 Modal ist...aber das close von form 2 wird doch früher als as öffnen von form3 ausgelöst... :?:

mirage228 25. Okt 2003 16:16

Re: Fenster schliesst nicht
 
Versuch mal das Programm schrittweise auszuführen und schau was Nach Form1.Close(); passiert;

mfG
mirage228

Pseudemys Nelsoni 25. Okt 2003 16:23

Re: Fenster schliesst nicht
 
hoi, hab ich schon(viele schritte gibts da ja nicht *g*(habe ein neues projekt mit nur 2 zeilen erstellt zum testen)),

also wenn ich bei Form2 Button1 drücke, mit folgendem code:

Delphi-Quellcode:
Form2.Close;
Form3.ShowModal;
dann wird Form 3 geöffnet, und Form2 erst beim closen von Form3 beendet.


wenn ich es so habe:

Delphi-Quellcode:
Form2.Close;
Form3.Show;
dann wird form 2 beendet und form3 aufgerufen (so wie ichs haben will (eben nur mit showmodal))

mirage228 25. Okt 2003 16:25

Re: Fenster schliesst nicht
 
Hi silent,

ich habe auch ein neues Projekt erstellt mit 3 Formularen (Form1, Form2, Form3)

in Form1 ein Button, der Form2 mit Form2.Show aufruft.

in Form2 dann der Code
Delphi-Quellcode:
  Form2.Close;
  Form3.Showmodal;
und es klappte einwandfrei (D3 Prof Upd. 3.02)

mfG
mirage228

Pseudemys Nelsoni 25. Okt 2003 16:27

Re: Fenster schliesst nicht
 
das problem ist, das form2 auch modal ist, also form2 und 3 sind modal. ich denke das es da dann auch bei dir nicht geht

mirage228 25. Okt 2003 16:29

Re: Fenster schliesst nicht
 
Achso!

Dann ist alles klar!

im Button, der Form3 aufruft, die Eigenschaft ModalResult auf mrOk oder so und im OnClick dann:

Delphi-Quellcode:
Form2.Hide;
Form3.ShowModal;
sollte jetzt laufn!

mfG
mirage228

Pseudemys Nelsoni 25. Okt 2003 16:36

Re: Fenster schliesst nicht
 
hm, ne klappt nicht, war es so richtig?:

Delphi-Quellcode:
  Form2.ModalResult := mrok;
  Form2.Close;
  Form3.ShowModal;
was bewirkt "modalresult" eigentlich?


edit: achso den button, ich schau mal, moment

Pseudemys Nelsoni 25. Okt 2003 16:38

Re: Fenster schliesst nicht
 
ne, geht nicht O_o

mirage228 25. Okt 2003 16:40

Re: Fenster schliesst nicht
 
Also meine editierte Variante (s.O.) funktionierte (mit Form2.Hide)!

mfg
mirage228

Pseudemys Nelsoni 25. Okt 2003 16:45

Re: Fenster schliesst nicht
 
also mit Close geht es nicht?

aus der hilfe habe ich das:

Zitat:

Die Eigenschaft ModalResult einer TButton-Komponente bietet eine einfache Möglichkeit, durch das Anklicken einer Schaltfläche ein modales Formular zu schließen. Als Reaktion auf einen Klick wird die Eigenschaft ModalResult des übergeordneten Formulars auf denselben Wert gesetzt wie die Eigenschaft ModalResult der Schaltfläche.

Beispielsweise könnten die ModalResult-Eigenschaften zweier Schaltflächen (OK und Abbrechen) zur Entwurfszeit auf mrOk bzw. mrCancel gesetzt werden. Zur Laufzeit setzt dann ein Klick auf die Schaltfläche OK die Eigenschaft ModalResult des Dialogfeldes auf mrOk. Die Schaltfläche Abbrechen bewirkt dann entsprechend die Einstellung mrCancel. Wenn keine weiteren Verarbeitungsschritte erforderlich sind, werden für diese Schaltflächen keine Ereignisbehandlungsroutinen benötigt.
demnach müsste es doch gehen oder?

btw, danke für deine hilfe :)

mirage228 25. Okt 2003 16:52

Re: Fenster schliesst nicht
 
Dann habe ich noch eine Idee

Im zweiten Form setzt du dem Button den ModalResult "mrOk";

Im ersten Form, wo du das zweite Aufrufst dann schreiben

Delphi-Quellcode:
  Form2.ShowModal;
  if Form2.ModalResult = mrOk then
    Form3.ShowModal;
sollte funktionieren, hoffe ich mal..


mfG
mirage228


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 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