Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Zur Laufzeit erstellte Form nur einmal öffnen

  Alt 23. Aug 2003, 13:48
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:
var
  Form1: TForm1;

implementation
Damit ist schon einmal eine Variable für Dein zweites Formular (im Beispiel: OnOffForm: TOnOffForm) definiert.

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:
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]
Diese Methode (ShowOnOffForm) rufst Du immer auf, wenn Du das OnOffForm anzeigen möchtest.

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:
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;
So, das waren Theorie und Praxis

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat