![]() |
Formular rücksetzen auf Anfangswerte
Mit folgendem Code kann man ein Formular zurück auf den Anfang setzen.
Das Rücksetzen ist etwas "tricky", deshalb kann es sein, dass der Code bei manchen Komponenten versagt. Die Events OnCreate und OnDestroy werden nicht aufgerufen.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const UM_RESETFORM = WM_USER+100; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } procedure HandleResetForm(var Message: TMessage); message UM_RESETFORM; public { Public-Deklarationen } end; var Form1: TForm1; implementation uses Consts; {$R *.DFM} procedure ResetForm(const frm:TForm); begin if Assigned(frm) then begin // Alle Komponenten auf dem Formular löschen while frm.ComponentCount > 0 do frm.Components[0].Free; (* frm.Name := ''; Screen.RemoveForm(frm); // leider kann diese Methode nicht aufgerufen werden :-( frm.Create(frm.Owner); // sonst könnte man den Konstruktor aufrufen *) // Komponenten neu laden if not InitInheritedComponent(frm, TForm) then raise EResNotFound.CreateFmt(SResNotFound, [frm.ClassName]); frm.Visible := True; end; end; procedure TForm1.Button1Click(Sender: TObject); begin // Message an das eigene Formular schicken PostMessage(Self.Handle, UM_RESETFORM, 0, 0); end; procedure TForm1.HandleResetForm(var Message: TMessage); begin ResetForm(Self); end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text := 'Hallo'; Edit2.Text := 'TESTTEST'; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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