Delphi:在Object Inspector中使用组合框编辑器的属性。在列表中获取表单组件

时间:2014-04-11 12:13:16

标签: delphi components

我想通过下拉列表在Object Inspector中编辑已发布的属性。 我们说它是DataSet: TDataSet

我还没有开始,但是使用这个http://delphi.about.com/library/bluc/text/uc092501c.htm我将创建一个属性编辑器,在GetValues方法中我应该做一些工作来找出哪些组件,即{{1}的后代已经在我正在设计的表格上。

然而没有找到任何例子。我应该如何在TDataSet方法中提供对当前表单的访问权限?还是有另一种方法?

为什么不是这样: How to create a component property that lists other components?

因为在下拉列表中的某些时候应该列出两种或更多类型的组件。最后 - 我需要在Property中保存一个指向某个组件的指针,该组件与声明的类型不同。

我重复:PropertyEditor.GetValues并在那里列出:Property: TClassNone <{1}}的下降。

2 个答案:

答案 0 :(得分:5)

我认为您需要做的就是将其作为组件的已发布属性,并让Delphi的默认属性编辑器完成其工作:

type
  TMyComponent = class(TComponent)
  ...
  published
    property DataSet: TDataSet read GetDataSet write SetDataSet;
  end;

例如,我认为TDataSource的工作方式与此无需为其注册任何特殊的属性编辑器。

答案 1 :(得分:1)

抱歉,我写的原始答案太仓促了。这是一个编辑:

编写TComponentProperty的后代并覆盖GetValues。查看TInterfaceProperty中的DesignEditors实现,该实现仅将选择过滤到支持可分配给属性的接口的组件实例。