Einzelnen Beitrag anzeigen

Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#1

[RTTI] an Klassennamen der TCollectionItems herankommen

  Alt 1. Aug 2006, 01:03
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
  Mit Zitat antworten Zitat