Delphi非RTTI检视器

5
我有一些虚拟控件,它们是我制作的设计系统的一部分。它们模仿了Delphi自己的组件,但是它们是完全自绘的。我面临的问题是,由于我的属性系统与普通的Delphi有所不同,我无法使用RTTI检查器来编辑属性。
有人知道一个检查器,外观和操作类似于正常的Delphi检查器,但允许我通过代码定义属性吗?
如果可能,还希望能够定义枚举类型:
with edInspector.Items.add('align') do
Begin
  Options.add('alLeft',ftord(TMyAlign.azLeft));
  Options.add('alTop',ord(TMyAlign.azTop));
  Options.add('alRight',ord(TMyAlign.azRight));
  Options.add('alBottom',ord(TMyAlign.azBottom));
  Options.add('alClient',ord(TMyAlign.azClient));
end;

还有复杂类型:

with edInspector.Items.add('font') do
Begin
  subitems.add('name',dtString).value:=def_FontName;
  subitems.add('size',dtInteger).value:=def_fontSize;
  subitems.add('color',dtColor).Value:=def_fontColor;
end;

2
“你所说的‘我的属性系统与普通的Delphi有些不同’是什么意思?你是否了解公共属性和发布属性之间的区别?” - Henrick Hellström
如果您只是用不同的持久化机制,那么请使用声明为“存储 False”的已发布属性和内置对象检查器进行设计时编辑。如果您需要帮助处理持久化机制(例如将文本转换为通常键入属性可以赋值的值),请查看TReader和TFiler如何完成此工作。 - Henrick Hellström
我无法在普通的Delphi对象中定义它们,因为它们在设计时未知,而是在运行时从服务器轮询。它可以是任何结构。 - Jon Lennart Aasenden
3
你看过 JVCL TjvInspector 吗?这里可以找到摘要和使用示例:NeuglsWorkStudio - LU RD
1
一款非常老的DeveloperExpress的检查器组件允许您将属性添加到具有不同数据类型的编辑器的垂直列表中。这基本上就是我想要的,但最新的devex包对此已经过于高级,只涉及RTTI。我不是在寻找数据库解决方案,而是更多地考虑用户可以更改的ajax数据数组。因此,它并不复杂,但我希望它看起来像Delphi中的检查器。 - Jon Lennart Aasenden
显示剩余5条评论
2个回答

2

试试Inspex,它非常酷。

http://www.raize.com/DevTools/Inspex/Default.asp

你可以动态添加属性,并获得大多数常见类型的属性编辑器。

它可以像Delphi对象检查器一样工作(如果您添加多个对象,则可编辑设置,它会检测出哪些属性相同并隐藏其他属性值)。

如果有多个级别,它会以树形结构显示属性。您可以通过添加任何TObject、通过字符串或逐个添加属性来轻松填充。

截图:

Screenshot


看起来不错,但它不是免费的。我应该说明我想要一个免费的替代品。 - Jon Lennart Aasenden

0

你应该根据自己的需求进行适当的调整。 - menjaraz
我不想要运行时信息。我想在运行时编辑我自己定义的结构。但是我不想检查“真实”的对象。 - Jon Lennart Aasenden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接