Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Form zur Laufzeit neu erstellen (https://www.delphipraxis.net/111365-form-zur-laufzeit-neu-erstellen.html)

RavenIV 2. Apr 2008 12:16

Re: Form zur Laufzeit neu erstellen
 
Zitat:

Zitat von mkinzler
Das ist natürlich bei modalen Eingabeformularen sehr geschickt, nach schließen des Formualar sind die Eigaben gleich weg. :gruebel:

Worin liegt der Sinn, auf Elemente eines gelöschten Objekts zuzugreifen?
Wenn ich ein Fenster schliesse, dann brauche ich auch die Eingabefelder nicht mehr.
Beim Schliessen (z.B. OK-Button) soll das Fenster (Formular) selber dafür sorgen, dass die relevanten Eingaben dauerhaft gespeichert werden. Entweder in einer ini oder in Variablen einer Daten-Unit.

Peinhard 2. Apr 2008 19:54

Re: Form zur Laufzeit neu erstellen
 
Nun, manchem mag es zB gefallen, die Eingaben eines modalen Dialogs in der aufrufenden Routine auszuwerten:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TForm2.Create(nil) do
  try
    ShowModal;
    //Eingaben auswerten
  finally
    Free;
  end;
end;

Hansa 2. Apr 2008 19:58

Re: Form zur Laufzeit neu erstellen
 
Zitat:

Zitat von RavenIV
...Beim Schliessen (z.B. OK-Button) soll das Fenster (Formular) selber dafür sorgen, dass die relevanten Eingaben dauerhaft gespeichert werden.

... oder auch nicht. Aber ich weiß, was Du meinst. Dafür gibt es ja OnCloseQuery. Bei mir steht da 1. "abbrechen" => zurück zum Form. 2. "speichern" => Daten speichern (Post, Commit...), Form schließen. 3. "Wollen sie die Änderungen nicht speichern " => otfalls Rollback etc. Hinzu kommt dann natürlich noch "Wollen sie wirklich nicht ...." also das Übliche. 8) Der Vorteil, Forms zur Laufzeit erst zu erzeugen, besteht eigentlich nur darin, dass die Ereignis - Sequenzen auch richtig durchlaufen werden und man auch lesbaren Quelltext hat, wo man auch nach Jahren noch sicher ist, das kein Seiteneffekt so nach Art von OnClick in irgendeinem zur Laufzeit erzeugten Button irgendwo einem alles verhagelt. Bei 10 EUR für 1 GB RAM ist alles andere Blödsinn.

Chemiker 3. Apr 2008 19:03

Re: Form zur Laufzeit neu erstellen
 
Hallo,

@Peinhard: Es ist doch ohne weiteres möglich mit dem out – Parameter noch nachträglich eine Auswertung vorzunehmen.

Delphi-Quellcode:
class function TFormSPSDAPPassWort.PassWortFreigabe (out Rueckgabe : Boolean): Boolean;
begin
  with TFormSPSDAPPassWort.Create(nil) do
    try
      Result := ShowModal=mrok; // ModalResult auf mrOk
      if Result then
        Rueckgabe := TRUE           // Rückgabe-Wert
       else
        Rueckgabe := FALSE;
     finally
       free;                   // Speicherfreigabe
   end;
end;

procedure TFormSPSDAPPassWort.Edit1Change(Sender: TObject);
begin
  if Edit1.Text = 'P' then  // Das Paßwort muss noch geändert werden.
    BitBtn3.Enabled := TRUE; // Der Button wird freigegeben
end;
Im Hautprogramm wird dann der out – Parameter ausgewertet. Im meinem Beispiel wird das Programm nur beendet, wenn das richtige Passwort eingegeben worden ist.

Delphi-Quellcode:
procedure TSPSDAPHauptForm.Beenden1Click(Sender: TObject);
begin
  TFormSPSDAPPassWort.PassWortFreigabe (PRG_Ende);
  if Prg_Ende then
  begin
    close;
  end;
end;
Bis bald Chemiker


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 Uhr.
Seite 3 von 3     123   

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