如何能做到点击属性右边的小按钮弹出窗口编辑属性?(200分)

  • 主题发起人 主题发起人 gz85521734
  • 开始时间 开始时间
G

gz85521734

Unregistered / Unconfirmed
GUEST, unregistred user!
我希望知道:
1。如何做到点击属性右边的小按钮弹出窗口编辑属性这样子的一种属性
2。如何做到设计期右键点击在菜单中选择后弹出窗口编辑属性这样子的一种属性

完全答中的200分奉上,我只有200分
 
看不懂。
 
譬如你看看 savedialog的filter属性就明白了,
既能够直接输入字符串,也能否按小按钮弹出编辑窗口
或者adoquery右键点击打开选择parameter的窗口
那样子
 
看看delphi的原代码,有关于edit的编辑窗体单元,比如ADO中,EditConnectionString()就可在源文件
中找到.
 
ado.pas 里边找不到 EditConnectionString() 呀?!
 
不是在ado.pas中,而是有一个专门的文件夹,里面放的都是属性编辑单元.
名称我忘了,可以搜索一下.
 
这么多文件,怎么找呀,能告诉我吗?
 
写属性扩展很容易的,很多控件都有,Delphi自己的也有。我自己也写了几个,现在在
CnPack之中了,有源码,可以到CnPack的网站下载。
 
用Ctrl+鼠标单击关键词可以在源代码间浏览
 
to shenloqi,我搞不清楚你说的是cnpack的哪个控件,请明示。

to ysai,我知道如何浏览vcl代码,但是我真的看不出这些属性跟其他属性有什么不同,譬如Memo的Lines属性来说吧:

TCustomMemo = class(TCustomEdit)
private
FLines: TStrings;
...
public
...
property Lines: TStrings read FLines write SetLines;
end;

procedure TCustomMemo.SetLines(Value: TStrings);
begin
FLines.Assign(Value);
end;

这不是跟平常的属性写法一样么?为什么这个属性却能做到属性扩展?真的不明白呀,请明示
 
1.属性编写都一样,关键是要在设计期让IDE知道和弹出编辑窗口,所以要从TStringProperty
TBoolProperty....等类中继承(VCL已经提供,也可以自己编写),并override Edit函数,则产
生了设计期应提供的内容,然后注册(通过RegisterPropertyEditor()函数)该属性,则在设计
期IDE就知道应该如何操作了,
2.设计期右键点击在菜单中选择后弹出窗口编辑属性:元件编辑器应该从TDefaultEditor继承
下来,如果要双击弹出,则从TComponentEditor继承下来,注册通过RegisterCompomentEditor()
具体看看说明,VCL都已经封装好了,很简单,关键是你的元件功能了
 
多人接受答案了。
 
后退
顶部