![]() |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Okay, gehen wir mal von der Annahme aus, daß Du zwei Formulare hast. HauptForm: THauptForm1 ist Dein, klar, Hauptformular. OnOffForm: TOnOffForm ist jenes Formular, welches immer mal wieder zu sehen sein soll.
Wenn Du mal in die Units Deiner beiden Formulare schaust, dann sieht Du direkt vor der Anweisung implementation folgende Zeilen (entsprechend der Benennung der Formulare).
Delphi-Quellcode:
Damit ist schon einmal eine Variable für Dein zweites Formular (im Beispiel: OnOffForm: TOnOffForm) definiert.
var
Form1: TForm1; implementation Jetzt aber ans Eingemachte Es sind nur zwei Dinge, die Du jetzt tun musst :-) Der erste Teil In Deinem Hauptformular empfehle ich Dir eine Methode zu erstellen, welche sich um die Darstellung des OnOffForm kümmert. In Grün der einzufüllende Code.
Code:
Diese Methode (ShowOnOffForm) rufst Du immer auf, wenn Du das OnOffForm anzeigen möchtest.
type
THauptForm = class(TForm) ... private ... public ... [color=#008000]procedure ShowOnOffForm;[/color] ... end; [color=#008000]procedure THauptForm.ShowOnOffForm; begin if OnOffForm = nil then OnOffForm := TOnOffForm.Create(Application); OnOffForm.Show; OnOffForm.BringToFront; end;[/color] Der zweite Teil Im Design-Editor gehst Du jetzt zum zweiten Form, dem OnOffForm und wählst für dieses im Objekt Inspektor das Ereignis OnClose aus. Im Code Editor musst Du jetzt nur ein oder zwei Zeilen - je nach Aufgabe eingeben. In Blau siehst Du Option 1 (Daten werden wieder angezeigt, wenn das Form das nächste Mal aufgerufen wird. In Rot Option 2, das Form kommt im Originalzustand wieder zurück.
Code:
So, das waren Theorie und Praxis ;-)
procedure TOnOffForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin [color=#0000ff]// Das Form nur verstecken (Daten bleiben erhalten) Action := caHide;[/color] [color=#e30000]// Das Form zerstören (Daten bleiben nicht erhalten) Action := caFree; OnOffForm := nil;[/color] end; ...:cat:... |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Vieln Dank sakura für deine Mühe!
Ich werde jetzt mal mein Glück damit versuchen. :wink: Gruß Matze |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
@Sakura: Im Design-Editor kann ich nicht auf meine zur Laufzeit erstellten Form klicken. Ist ja eigentlich logisch.
Ich möchte dann, dass die zur Laufzeit erstellte Form nur einmal geöffnet werden kann (siehe Bixi400). Jedoch sollte WinOpen wieder auf false gesetzt werden, sobald ich die zur Laufzeit erzeugte Form schließe. Ich hoffe, ich hab's verständlich erklärt. :wink: [Edit]Sorry! Hat sich erledigt Sakura, nochmal Danke.[/Edit] Gruß Matze |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Okay. Den Teil habe ich wohl übersehen :oops: Dann ändere Dein Hauptform wie folgt:
Delphi-Quellcode:
..:cat:...
type
THauptForm = class(TForm) ... private FOnOffForm: TForm; procedure OnOffFormClose(Sender: TObject; var Action: TCloseAction); ... public ... procedure ShowOnOffForm; ... end; procedure THauptForm.ShowOnOffForm; begin if FOnOffForm = nil then begin FOnOffForm := TOnOffForm.Create(Application); FOnOffForm.OnClose := OnOffFormClose; end; FOnOffForm.Show; FOnOffForm.BringToFront; end; procedure THauptForm.OnOffFormClose(Sender: TObject; var Action: TCloseAction); begin // Das Form nur verstecken (Daten bleiben erhalten) Action := caHide; // BEZIEHUNGSWEISE // Das Form zerstören (Daten bleiben nicht erhalten) Action := caFree; FOnOffForm := nil; end; |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Zitat:
...:cat:... |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
@Sakura: Ich meinte, ich habe es mit deinem Code doch geschafft.
Ich habe nur vergessen gehabt, ShowOnOffForm aufzurufen. :wink: Ich nehme deinen Code, du hast es also nicht umsonst gemacht. *dankt sakura* Gruß matze |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Zitat:
Freut mich, dass es funktioniert hat für Dich ;-) ...:cat:... |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Aber wie bekomme ich das hier hin?:
Zitat:
|
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Zitat:
Ansonsten einfach
Delphi-Quellcode:
aufrufen.
OnOffForm.Close;
...:cat:.. |
Re: Zur Laufzeit erstellte Form nur einmal öffnen
Ich meine, wie soll ich denn in Delphi diese Form anklicken und dann im OI bei Ereignisse was einstellen??
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 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