Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 

Formulare & Datenmodule dynamisch über Klassennamen erze

  Alt 14. Apr 2004, 15:54
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]
Andreas
  Mit Zitat antworten Zitat