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]