Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Object-Pascal / Delphi-Language (https://www.delphipraxis.net/35-library-object-pascal-delphi-language/)
-   -   Delphi Formulare & Datenmodule dynamisch über Klassennamen erzeugen (https://www.delphipraxis.net/20198-formulare-datenmodule-dynamisch-ueber-klassennamen-erzeugen.html)

shmia 14. Apr 2004 15:54


Formulare & Datenmodule dynamisch über Klassennamen erze
 
Hier zeige ich, wie man Formulare und Datenmodule dynamisch zur Laufzeit erzeugt,
ohne dass man das Formular/Datenmodul zur Uses-Liste hinzufügen muss.
Das Formular/Datenmodul wird nur über den Klassennamen erzeugt.

Damit dieser Trick funktioniert, muss jede Formular- oder Datenmodulklasse
registriert werden:
Delphi-Quellcode:
initialization
  RegisterClass(TMeinFormular66);
end;
Die Unit, in der das Formular oder Datenmodul implementiert wird braucht nur
ins Projekt eingefügt werden.

Delphi-Quellcode:
function CreateComponentByClassName(const name:string; AOwner:TComponent):TComponent;
begin
  // Sollte die Klasse mit dem Namen "name" nicht registriert worden sein,
  // dann wird in FindClass eine Exception ausgelöst
  Result := TComponentClass(FindClass(name)).Create(AOwner);
end;
Und so wird dann ein Formular erzeugt:
Delphi-Quellcode:
var
  newform : TForm;
begin
  newform := CreateComponentByClassName('TMeinFormular66', nil) as TForm;
  newform.ShowModal; // anzeigen
  newform.Free; // und wieder vernichten
end;
Datenmodule und andere Komponenten können analog obigem Beispiel erzeugt werden.

[edit=Matze]Code formatiert. Mfg, Matze[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:01 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