![]() |
Klassennamen in String => Instanz erstellen
Gibt es eine Möglichkeit Instanzen von Klassen zu erstellen, deren Namen (also den Klassennamen) ich in irgendeiner Liste (TStringList, z.B.) habe?
Beispiel: Ich habe folgende Liste:
Code:
Diese würde ich dann gerne in meinem Code erstellen.
TEdit
TEdit TEdit TLabel TLabel TListBox TForm2 Also etwa so:
Delphi-Quellcode:
for i := Low(Liste) to High(Liste) do
begin irgendeineVariable := Liste[i].Create(Self); end; |
Re: Klassennamen in String => Instanz erstellen
So wie ich die RTTI kenne, gibts da bestimmt irgendne Möglichkeit. Aber ich weiß leider nicht genau, welche.
|
Re: Klassennamen in String => Instanz erstellen
Habs noch nicht selbst ausprobiert aber ein Googlesuche ergab folgendes:
zu erst müssen alle in Frage kommenden Klassen via "RegisterClass" registriert werden. Anschließend kann man die via FindClass wieder auffinden. Grüße |
Re: Klassennamen in String => Instanz erstellen
Hallo zusammen,
hier mal ein Codeschnipsel unter der Annahme das in der Liste die Klassennamen enthalten sind und TControl eine gemeinsame Basisklasse ist.
Delphi-Quellcode:
// Definition der gemeinsamen Klasse
TControlClass = class of TControl; ... procedure TForm1.xyz; var ctrl : TControl; begin for i := Low(Liste) to High(Liste) do begin ctrl := TControlClass(GetClass(Liste[i])).Create(self); with ctrl do begin // gemeinsame Aktionen etc. // ... end; end end; ... initialization // einmaliges Registrieren der potentiellen Klassen RegisterClasses([TEdit,TListBox,TLabel]); HTH Markus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 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 by Thomas Breitkreuz