在DELPHI中如何利用程序获取一个对象的所有信息。包括属性,方法!可以不包括继承下来的属性和方法!在DELHI每一个版本中都有一个对象浏览器,可以知道当前对象的所有信息,包括继承的层次关系!我记得在一个老的DELPHI版本中有过一个类似的代码,但现在手里已经没有那个盘了,望各位高手给予帮助!多谢了啊!

解决方案 »

  1.   

    uses 
      TypInfo; procedure ListComponentProperties(Component: TComponent; Strings: TStrings); 
    var 
      Count, Size, I: Integer; 
      List: PPropList; 
      PropInfo: PPropInfo; 
      PropOrEvent, PropValue: string; 
    begin 
      Count := GetPropList(Component.ClassInfo, tkAny, nil); 
      Size  := Count * SizeOf(Pointer); 
      GetMem(List, Size); 
      try 
        Count := GetPropList(Component.ClassInfo, tkAny, List); 
        for I := 0 to Count - 1 do 
        begin 
          PropInfo := List^[I]; 
          if PropInfo^.PropType^.Kind in tkMethods then 
            PropOrEvent := 'Event' 
          else 
            PropOrEvent := 'Property'; 
          PropValue := VarToStr(GetPropValue(Component, PropInfo^.Name)); 
          Strings.Add(Format('[%s] %s: %s = %s', [PropOrEvent, PropInfo^.Name, 
            PropInfo^.PropType^.Name, PropValue])); 
        end; 
      finally 
        FreeMem(List); 
      end; 
    end; // Example: List all Properties/Events from Button1 in a TListBox procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      ListComponentProperties(Button1, ListBox1.Items); 
    end;