Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: VCL / WinForms / Controls (https://www.delphipraxis.net/24-library-vcl-winforms-controls/)
-   -   Delphi Formular clonen (https://www.delphipraxis.net/40629-formular-clonen.html)

shmia 18. Feb 2005 13:01


Formular clonen
 
Hier wird gezeigt, wie man ein Formular zur Programmlaufzeit clonen kann.
Alle Komponenteneigenschaften des aktuellen Formulars werden kopiert.
Private Daten werden nicht kopiert.

Delphi-Quellcode:
// diese Funktion erzeugt ein neues Form aus dem aktuellen Form
function TForm1.CloneForm: TForm;
var
  mstream: TMemoryStream;
begin
  mstream := TMemoryStream.Create;
  try
    mstream.WriteComponent(self);
    // der Trick: die aktuelle Klasse wird nach TFormClass gecastet
    // und dann mit CreateNew eine neue, leere Instanz erzeugt
    Result := (TFormClass(Self.ClassType)).CreateNew(Application);
    mstream.Position := 0;
    mstream.ReadComponent(Result);
  finally
    mstream.Free
  end;
end;
Hier ist noch ein Beispiel, wie man die Funktion CloneForm anwendet:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  f : TForm;
begin
  f := CloneForm;
  f.Visible := False; // unsichtbar machen
  f.Caption := 'this is the cloned form';
  f.Left := f.Left+10;
  f.Top := f.Top +10;
  f.ShowModal;  // modal anzeigen
  f.Free;
end;
Man darf das Form, dass von CloneForm geliefert wird auch auf die eigene
FormKlasse casten:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  f : TForm2;
begin
  f := CloneForm as TForm2;
[edit=Matze]Code formatiert. Mfg, Matze[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz