我想通过下拉列表在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}}的下降。
答案 0 :(得分:5)
我认为您需要做的就是将其作为组件的已发布属性,并让Delphi的默认属性编辑器完成其工作:
type
TMyComponent = class(TComponent)
...
published
property DataSet: TDataSet read GetDataSet write SetDataSet;
end;
例如,我认为TDataSource的工作方式与此无需为其注册任何特殊的属性编辑器。
答案 1 :(得分:1)
抱歉,我写的原始答案太仓促了。这是一个编辑:
编写TComponentProperty
的后代并覆盖GetValues
。查看TInterfaceProperty
中的DesignEditors
实现,该实现仅将选择过滤到支持可分配给属性的接口的组件实例。