ich brauche den Klassennamen der Items einer von TCollection abgeleiteten Klasse
die untenstehende Funktion funktioniert soweit, dass ich den Namen der TCollection-Klasse habe (TStatusPanels), und mir ein Object dessen erzeugt, leider ist dessen property ItemClass=nil somit kome ich nicht an den namen ran...
Jemand eine Idee?
Beispiel für untenstehende Funktion:
classname ist z.B. TStatusbar
propname ist Panels
Delphi-Quellcode:
function getCollectionClass(classname,propname:string):string;
var ti:pTypeinfo;
td:pTypeData;
pi:pPropInfo;
classe:TClass;
col:TCollection;
begin
ti:=FindTypeInfo(classname); //funktion von Hagen ähnlich Typeinfo() nur mit strings
pi:=GetPropInfo(ti,propname);
if pi.PropType^.kind=tkClass then
begin
ti:=FindTypeInfo(pi.PropType^.Name);
td:=GetTypeData(ti);
classe:=td.ClassType;
if assigned(classe) and (classe.InheritsFrom(TCollection)) then
begin
//showmessage(pi.PropType^.Name); //TStatusPanels wird angezeigt
//hier muss ich irgendwie and den Namen der CollectionItems (TStatusPanel) herankommen
col:=TCollection(classe.create);
showmessage(col.ItemClass.ClassName);
col.Free;
end;
end;
end;
Gruß Frank