![]() |
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:
Die Unit, in der das Formular oder Datenmodul implementiert wird braucht nur
initialization
RegisterClass(TMeinFormular66); end; ins Projekt eingefügt werden.
Delphi-Quellcode:
Und so wird dann ein Formular erzeugt:
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;
Delphi-Quellcode:
Datenmodule und andere Komponenten können analog obigem Beispiel erzeugt werden.
var
newform : TForm; begin newform := CreateComponentByClassName('TMeinFormular66', nil) as TForm; newform.ShowModal; // anzeigen newform.Free; // und wieder vernichten end; [edit=Matze]Code formatiert. Mfg, Matze[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 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