获取对象的方法,属性和事件列表?

时间:2009-09-10 16:50:37

标签: delphi oop

当尝试没有文档的新组件时,我需要通过它的方法,属性和事件来试图找出它能做什么。通过IDE的Object Inspector执行此操作有点单调乏味。

是否有以更易读的格式显示此列表的实用程序?

谢谢。

7 个答案:

答案 0 :(得分:3)

当我想知道可以做些什么时,我阅读源代码。除非有大量的继承,否则类声明将包含所有方法和属性的简洁列表。定义将告诉您希望方法如何。

另一件事是声明一个你感兴趣的类型的变量,输入它的名字和句点,然后按Ctrl + Space让Class Completion显示你可​​以做的一切。

答案 1 :(得分:2)

正如其他人所说,使用来源。 UML工具也会有所帮助。 但是如果你不想使用它,你可以使用这个程序(你需要Delphi 2010,并确保将RTTI添加到'Uses'子句中):

procedure DumpProps(aObject: TObject; aList: TStringList);
var
  RttiContext: TRttiContext;
  RttiType: TRttiType;
  I: Integer;
  n: integer;
  props: TArray<TRttiProperty>;

begin
  aList.Clear; //it must be <> nil
  RttiType := RttiContext.GetType(aObject.ClassType);
  props:=RttiType.GetProperties;
  with aList do 
    begin
      Append('');
      Append('==========');
      Append('Begin Dump');
      Append('----------');
      for I := Low(props) to High(props) do
      begin
        try
          Append(props[i].Name+': '); //odd construction to see if the Getter blows
          n:=Count-1;
          Strings[n]:=Strings[n]+props[i].GetValue(aObject).AsString;
        except
          on E: Exception do
            Strings[n]:=Strings[n]+' >>> ERROR! <<< '+E.Message;
        end;
      end;
    end;
end;

上面你可以在运行时使用,如果你建立一个菜单向导,你可以在设计时获得你的信息。

HTH

答案 2 :(得分:1)

您可以使用GExperts附带的类浏览器 我还建议使用IDE或ModelMaker构建模型图。它有助于看到视觉关系。

答案 3 :(得分:1)

在欧比旺克诺比的不朽言论中 - “使用来源”。

无法替代阅读和理解组件(或任何内容)的源代码,以了解它的作用和内容。

源代码是Lingua Franca的编程。

答案 4 :(得分:0)

查看为C ++ Builder支持生成的.hpp。它类似于Delphi单元的接口部分。

答案 5 :(得分:0)

我只使用代码完成。如果你无法从属性和方法的名称中弄清楚组件的作用,那么它的设计可能很差,你最好不要使用它。此外,既然你问这个问题,我猜你没有来源。如果你不这样做,我再也不会使用该组件。你只是为自己制造麻烦。

答案 6 :(得分:-1)

RTTI ...