![]() |
Form soll sich selbst schließen und erneut anzeigen
Hallo,
ich habe ein Hauptformular und ein zweites Formular (SecondDlg). Wenn auf einem Schalter im Hauptformular gelickt werden soll, soll SecondDlg modal angezeigt werden. Im SecondDlg gibt es eine Schalter, der den SecondDlg schließen soll und eine neue Instanz vom SecondDlg anzeigen soll. Dabei habe ich das Problem, dass so gut wie immer (aber nicht immer) zwei Instanzen vom SecondDlg offen bleiben, wenn der Schalter im SecondDlg geklickt wird. Es soll aber immer nur die neue Instanz sichtbar sein. So sieht der Code aus:
Delphi-Quellcode:
unit Main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const SX_SHOW_EXERCISE = WM_USER + 1; type TMainDlg = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private procedure ShowExercise; protected procedure SXSHOWEXERCISE(var Message: TMessage); message SX_SHOW_EXERCISE; public { Public-Deklarationen } end; var MainDlg: TMainDlg; implementation uses Second; {$R *.dfm} procedure TMainDlg.SXSHOWEXERCISE(var Message: TMessage); begin // hier Message.wParam behandeln ShowExercise; end; procedure TMainDlg.Button1Click(Sender: TObject); begin ShowExercise; end; procedure TMainDlg.ShowExercise; var ASecondDlg: TSecondDlg; begin Application.CreateForm(TSecondDlg, ASecondDlg); try ASecondDlg.Execute; finally ASecondDlg.Release; end; end; end.
Delphi-Quellcode:
unit Second;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TSecondDlg = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public procedure Execute; end; //var // SecondDlg: TSecondDlg; implementation uses Main; {$R *.dfm} procedure TSecondDlg.Button1Click(Sender: TObject); begin Close; //Hier sollte das Form geschlossen werden. Oft bleibt es aber offen und die neue Instanz, die durch die nächste Zeile geöffnet wird wird zusätzlich angezeigt. PostMessage(MainDlg.Handle, SX_SHOW_EXERCISE, 0, 0); end; procedure TSecondDlg.Execute; begin caption := FormatDateTime('HHNNSS', Now); // hier Browser erzeugen und HTML-Seite laden ShowModal; end; end. |
AW: Form soll sich selbst schließen und erneut anzeigen
Warum willst du, dass er sich nach dem Schließen wieder selbst öffnet?
|
AW: Form soll sich selbst schließen und erneut anzeigen
Zitat:
|
AW: Form soll sich selbst schließen und erneut anzeigen
Zitat:
|
AW: Form soll sich selbst schließen und erneut anzeigen
Zitat:
|
AW: Form soll sich selbst schließen und erneut anzeigen
Zitat:
Das ist doch eigentlich nur eine Copy & Paste-Angelegenheit + "hier und da" ein paar Zeilen hinzufügen? Aus....
Delphi-Quellcode:
wird...
procedure TSecondDlg.Execute;
begin Berechne; MacheWas; MachNochwas; end;
Delphi-Quellcode:
procedure TSecondDlg.StartUpCode;
begin Berechne; MacheWas; MachNochwas; end; procedure TSecondDlg.Button1Click(Sender: TObject); begin StartUpCode; end; procedure TSecondDlg.Execute; begin StartUpCode; end; |
AW: Form soll sich selbst schließen und erneut anzeigen
Zitat:
|
AW: Form soll sich selbst schließen und erneut anzeigen
Zitat:
Delphi-Quellcode:
procedure TSecondDlg.StartUpCode(Meine_Parameter : String);
begin Berechne; MacheWas; MachNochwas; Show; end; |
AW: Form soll sich selbst schließen und erneut anzeigen
Zitat:
|
AW: Form soll sich selbst schließen und erneut anzeigen
Woher soll denn der Dialog beim zweiten Öffnen seine Daten bekommen, wenn die nur vom Hauptform übergeben werden? Das kann doch gar nicht funktionieren.
Erstelle den Zweitdialog einmal, füge da eine Funktion ein, mit der die benötigten Daten befüllt werden und rufe die bei Bedarf vom Hauptfenster auf. Da den Dialog zu zerstören und neu zu erstellen ist doch überflüssig. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 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