Sayfayı Yazdır | Pencereyi Kapat

Bir sınıftan türeyen alt sınıfların listesi(Rtti)

Nereden Yazdırıldığı: Datakent
Kategori: Diğer bölümler
Forum Adı: Borland Delphi
Forum Tanımlaması: Borland Delphi ile ilgili soru / sorun / paylaşım bölümü
URL: http://forum.datakent.com/forum_posts.asp?TID=2392
Tarih: 18.Nisan.2024 Saat 22:17


Konu: Bir sınıftan türeyen alt sınıfların listesi(Rtti)
Mesajı Yazan: turknetyazilim
Konu: Bir sınıftan türeyen alt sınıfların listesi(Rtti)
Mesaj Tarihi: 20.Temmuz.2012 Saat 10:54
// Bir class'tan türeyen alt class'ların listesini döndürür

uses
   Rtti,
   TypInfo,
   Classes;

function GetSubClassList(AClass: TClass): TStrings;
var 
  atypes:TArray<TRttiType>;
  atype:TRttiType;
  alist:TStringList; 
begin
   r:=TRttiContext.Create;
   atypes:=r.GetTypes;

   alist:=TStringList.Create;
   for atype in atypes do
   begin            
      if (atype.TypeKind=tkClass) and atype.IsInstance and 
          atype.AsInstance.MetaclassType.InheritsFrom(AClass) 
         and (atype.Name<>AClass.ClassName) then
         begin
            alist.Add(atype.Name);
         end;
   end;
  //atype.AsInstance.BaseType.MetaclassType.ClassName
  Result:=alist;
end;


Kullanım :
ShowMessage(GetSubClassList(TControl).Text);



Sayfayı Yazdır | Pencereyi Kapat