Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 德尔福非rtti检查员_Delphi_Delphi Xe2 - Fatal编程技术网

Delphi 德尔福非rtti检查员

Delphi 德尔福非rtti检查员,delphi,delphi-xe2,Delphi,Delphi Xe2,我有一些虚拟控件,这是我制作的设计器系统的一部分。它们模仿delphi自己的组件,只是完全由所有者绘制。我面临的问题是,由于我的属性系统与普通的Delphi有些不同,我不能使用RTTI检查器来编辑属性 有谁知道一个外观和行为都像普通delphi检查器的检查器,但它允许我通过代码定义属性 如果可能,还有一个允许我定义枚举的: with edInspector.Items.add('align') do Begin Options.add('alLeft',ftord(TMyAlign.azLe

我有一些虚拟控件,这是我制作的设计器系统的一部分。它们模仿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;

尝试一下Inspex。很酷

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

它的行为非常类似于Delphi对象检查器(它允许您编辑集合,如果您添加多个对象,它会检测哪些属性相同,并隐藏其他属性,它对属性值也会这样做)

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

截图:


使用,您将能够在运行时查看对象信息

你所说的“我的财产制度与普通的德尔福有些不同”是什么意思?你知道公共财产和公共财产的区别吗?呵呵,是的。Im轮询来自外部系统的属性,这意味着它们存储在自定义对象中的名称/值对中。因此,它们在正常RTTI中不可见,我必须手动获取/设置它们。如果不同的是持久性机制,请使用已发布的属性(声明为“存储为False”)和内置对象检查器进行设计时编辑。如果您需要有关持久性机制的帮助(即,将文本转换为可以分配给正常类型属性的值),请查看TReader和TFiler是如何完成这项工作的。您看过吗?可以在这里找到摘要和示例用法。developerXPress的inspector组件的一个非常旧的版本允许您将属性添加到具有不同数据类型编辑器的垂直列表中。这基本上就是我想要的,但是最新的devex包就是为了这个而开发的,它只处理RTTI。我不是在寻找一个数据库解决方案。更多地考虑用户可以更改的ajax数据数组。所以它并不复杂,但我希望看起来像delphi中的检查器。您当然应该调整它以符合您的要求。我不需要运行时信息。我想编辑我自己的结构,这些结构是我在运行时通过代码定义的。但我不想检查“真实”的物体。看起来不错,但不是免费的。我应该说我想要一个免费的替代品。