Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Modales Fenster beim Schliessen eines Modalen Fensters öffne (https://www.delphipraxis.net/43879-modales-fenster-beim-schliessen-eines-modalen-fensters-oeffne.html)

torud 10. Apr 2005 07:08


Modales Fenster beim Schliessen eines Modalen Fensters öffne
 
Hallo Wissende!

Ich habe ein Formular mit ShowModal geöffnet und möchte dieses Schliessen und direkte danach ein anderes Formular mit Showmodal aufrufen.

Leider klappt das nicht ganz wunschgemäss. Wenn ich dieses Fenster aus dem 1. modalen Formular beim Schliessen aufrufe, wird das 2. Formular modal angezeigt noch bevor das 1. Formular wirklch geschlossen wurde.

Welche Lösung schlagt Ihr dafür vor?

mschaefer 10. Apr 2005 07:30

Re: Modales Fenster beim Schliessen eines Modalen Fensters ö
 
Moin, Moin,

entweder modales Fenster 1 auf visible = false stellen bevoer Modal 2 aufgerufen wird oder Modal 2 vom Hauptaufrufspunkt aus aufrufen wo Du auch Modal 1 her aufgerufen hast.

Grüße // Martin

marabu 10. Apr 2005 07:44

Re: Modales Fenster beim Schliessen eines Modalen Fensters ö
 
Professionell ist die Lösung mit nur einer Kontrollinstanz.

Sharky 10. Apr 2005 09:34

Re: Modales Fenster beim Schliessen eines Modalen Fensters ö
 
Hai torud,

wie sieht denn dein Quellcode aus?

Wenn ich das so mache sieht es eigenltlich richtig aus ;-)
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  newFormClass : TFormClass;
  newForm : TForm;
begin
  newFormClass := TForm2; // Form 2
  newForm := newFormClass.Create(self);
  newForm.ShowModal; // Modal anzeigen
  newForm.Free;

  newFormClass := TForm3; // Form 3
  newForm := newFormClass.Create(self);
  newForm.ShowModal; // Modal anzeigen
  newForm.Free;
end;

torud 10. Apr 2005 11:22

Re: Modales Fenster beim Schliessen eines Modalen Fensters ö
 
Hallo!

Also mein derzeitiger Code sieht so aus:

Delphi-Quellcode:
procedure Tassi_new_projekt.btn_prj_createClick(Sender: TObject);
begin
     self.Close;
     assi_editor.ShowModal;
end;
Tassi_new_projekt ist das Modale Formular 1 und wenn dort eine Checkbox aktiviert ist, soll direkt ein anderer Assistent aufgerufen werden => assi_editor!

Das mit dem Visible:=flase ist nicht mein Ding. Das wäre nicht so edel, denke ich. Im Notfall mache ich es so, dass ich dann dem Hauptform einen Befehl übergebe. Ich hoffe nur, dass der Befehl dann nicht noch vor dem Close ausgeführt wird.

Ansonsnten werde ich mal den Vorschlag von Stephan in Erwägung ziehen!

Sharky 10. Apr 2005 11:31

Re: Modales Fenster beim Schliessen eines Modalen Fensters ö
 
Zitat:

Zitat von torud
...Tassi_new_projekt ist das Modale Formular 1 und wenn dort eine Checkbox aktiviert ist, soll direkt ein anderer Assistent aufgerufen werden ...

Das bedeutet das zweite Modale Fenster soll nur aufgerufen werden wenn in dem ersten eine bestimmte Bedingung zutrifft (CheckBox).
Dann könntest Du es so machen:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  myForm2 : TForm2;
  myForm3 : TForm3;
  showForm3 : Boolean;
begin
  myForm2 := TForm2.Create (self);
  try
    myForm2.ShowModal;
    showForm3 := myForm2.CheckBox1.Checked;
  finally
    myForm2.Free;
  end;
  if (showForm3) then
  begin
    myForm3 := TForm3.Create(self);
    try
      myForm3.ShowModal;
    finally
      myForm3.Free;
    end;
  end;
end;

torud 10. Apr 2005 11:40

Re: Modales Fenster beim Schliessen eines Modalen Fensters ö
 
Mille Gracie!

Ich muss dann eben die 2 Formulare aus der automatisierten Erzeugung herausnehmen, damit sie nicht doppelt erzeugt werden - richtig???

Sharky 10. Apr 2005 11:44

Re: Modales Fenster beim Schliessen eines Modalen Fensters ö
 
Zitat:

Zitat von torud
...Ich muss dann eben die 2 Formulare aus der automatisierten Erzeugung herausnehmen, ...

Jup.
Ich mache das immer so. In der Regel wird bei mir nur die MainForm automatisch erzeugt (eventuell noch ein TDatenModul wenn es eine Datenbank Anwendung ist).
Wenn alle Forms beim Programmstart erzeugt werden muss nämlich auch für alle der Speicher reserviert werden. Und das obwohl sie womöglich nie gebraucht werden ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr.

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