控件的属性是下拉列表,并且其中的内容有是动态改变的,怎么作?(100分)

  • 主题发起人 主题发起人 lbsong
  • 开始时间 开始时间
L

lbsong

Unregistered / Unconfirmed
GUEST, unregistred user!
控件的属性是下拉列表,并且其中的内容有是动态改变的,也就是说,在我生成这个控件的时候
我去检测这个属性的内容有几个可选项,并将其加入到列表中,就像TDatabase的Table属性
和TTable的Fields属性一样,明白了吗?
 
可参考delphi提供的控件源代码
e.g.
type
Taaa=(bbb,ccc,ddd...);

yourcontrol=class(...)
private
faaa:Taaa;

...
published;
property aaa:Taaa ....

end;
 
to jqw:
你所说的是静态的,我要的是动态的,枚举可以作到动态吗?好像不行把?
 
难道没有人知道吗?
 
下拉列表可以是TStringList类型,这个类型有Count这个属性,你可以检测这个属性就行了。
如果还有什么有明白,可以再问或到http://delphi.ok100.net去问
 
谢谢hupeh,但是,我用了TStringList类型后它的属性编辑器不是下拉列表,而是一个String List Editor
就像ListBox中的Items属性一样,而我不想要这样
 
kao,石沉大海了?
 
可以考虑在你的控件产生时即添加你想检测的各项。
即override你的TMyComponent.Create方法:
Constructor TMyComponent.Create(AOwner: TComponet);
begin
Inherited;
....
AddItemsProc;//添加应当添加的各项内容。
end;
 
但是这个属性是什么类型那?是TStringList吗?
 
应该是TStringList,至少他们的父类都是TStrings,我跟踪了一下Fields。
 
我再试试吧
 
TStrings是一个不能直接使用的类,因为它的一些关键方法,如Insert, Delete, Clear
都被声明是抽象的(abstract)。你可以用它的继承版本,如TStringList来做。
 
to pentiumTV:
这个我是明白的
 
我明白了你的意思,要是下拉列表的数据类型只有Boolean,枚举等。
 
to hupeh:
那我怎么作?另外,TDatabase的Table属性可不是枚举吧
 
to hupeh:
原来是你呀,呵呵,你的那个动态链接库搞的怎么样了?你是那个论坛斑竹吗?
 
你需要编写一个属性编辑器,如何写你可以看一下D6中VCLEditors单元(
在$(DELPHI)/Source/ToolsAPI下)里的TFontNameProperty等。
 
to sygzch:
我想用不着这么麻烦吧
 
哈,非用属性编辑器不可的,其实也不难,参考一下Delphi带的代码
 
后退
顶部