一个类的public的属性和事件可以找出来,但是如何列举类的所以方法呢?

解决方案 »

  1.   

    RTTI
    资料http://www.delphibbs.com/delphibbs/dispq.asp?LID=2420610
      

  2.   

    用如下 方法即可,具体可以参考http://www.delphibbs.com/delphibbs/dispq.asp?LID=2420610procedure GetClassProperties(AClass: TClass; AStrings: TStrings);
    var
      PropCount, I: SmallInt;
      PropList: PPropList;
      PropStr: string;
    begin
      PropCount := GetTypeData(AClass.ClassInfo).PropCount;
      GetPropList(AClass.ClassInfo, PropList);
      for I := 0 to PropCount - 1 do
      begin
        case PropList[I]^.PropType^.Kind of
          tkClass      : PropStr := '[Class] ';
          tkMethod     : PropStr := '[Method]';
          tkSet        : PropStr := '[Set]   ';
          tkEnumeration: PropStr := '[Enum]  ';
        else
          PropStr := '[Field] ';
        end;
        PropStr := PropStr + PropList[I]^.Name;
        PropStr := PropStr + ': ' + PropList[I]^.PropType^.Name;
        AStrings.Add(PropStr);
      end;
      FreeMem(PropList);
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      GetClassProperties(TForm,Memo1.Lines);
    end;
      

  3.   

    如果你是D2010以下的话,public的是列不出来的,默认只能列published。要能列public的话,需要给类加上{$METHODINFO ON}的编译符。获取方法见3楼