当尝试一个没有文档的新组件时,我需要通过它的方法,属性和事件来试图找出它可以做什么。通过IDE的Object Inspector执行此操作有点繁琐。获取对象的方法,属性和事件列表?
是否有一个实用程序以更易读的格式显示此列表?
谢谢。
当尝试一个没有文档的新组件时,我需要通过它的方法,属性和事件来试图找出它可以做什么。通过IDE的Object Inspector执行此操作有点繁琐。获取对象的方法,属性和事件列表?
是否有一个实用程序以更易读的格式显示此列表?
谢谢。
有RTTI ...
看一下将用于C++ Builder的支持所产生的.HPP。它类似于德尔福单元的接口部分。
(当然,如果你有源代码,这是没有意义的,从你的问题出发,我认为你不需要) – 2009-09-11 08:25:36
当我想知道什么是可以做的,我阅读源代码。类声明将包含所有方法和属性的简洁列表,除非有很多继承。定义会告诉你想要的方法。
另一件事是声明一个你感兴趣的类型的变量,输入它的名字和句点,然后按Ctrl +空格来让Class Completion显示你能做的所有事情。
+1。我一直倾向于UTSL方法。 – 2009-09-10 19:04:22
您可以使用GExperts附带的类浏览器。
我还建议使用IDE或ModelMaker构建模型图。它有助于看到视觉关系。
感谢您的提示,但是当打开类浏览器时,除了双击右窗格中的对象并将其发送到实例创建的行外,没有什么可以做的了。 我认为类浏览器会显示一个对象提供的方法,属性和事件列表。 – Gulbahar 2009-10-22 07:56:58
在奥比万克诺比不朽的语言 - “使用来源”。
阅读和理解组件(或任何东西)的源代码以理解它的功能和功能是没有替代的。
源代码是Lingua Franca的编程。
我刚使用代码完成。如果你无法弄清楚组件在属性和方法的名称上做了什么,那么它可能设计得很差,而且最好不要使用它。另外,既然你问了这个问题,我猜你没有来源。如果你不这样做,我再也不会使用这个组件。你只为自己储存麻烦。
正如其他人所说,使用来源。另外一个UML工具也会有所帮助。 但是,如果你不想使用它,你可以使用这个程序(你需要德尔福2010年这一点,并且一定要RTTI添加到您的“用途”条款):
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
我认为他正在设计时寻找信息。 – 2009-09-10 17:01:54
@Mason Wheeler ......嗯......你的意思是简单地猜测一个组件在做什么? – smok1 2009-09-10 17:08:29
看起来他正在寻找像Object Inspector这样的东西,但是“更具可读性” – 2009-09-10 17:43:39