如何确认控件的默认事件?(5分)

  • 主题发起人 主题发起人 青云
  • 开始时间 开始时间

青云

Unregistered / Unconfirmed
GUEST, unregistred user!
比如说,放一个Tbutton到Form1上,双击这个button,则会触发onclck事件。
放一个TEdit到Form1上,双击这个Edit,则会触发onchange事件,
我想问一下,如果我自己做了一个控件,我做好了后,双击它,产生的默认事件是怎么确定的。
是不是要在做控件的时候,进行什么设置。

 
我刚才研究了一下,估计控件的事件是按字母的顺序排的,哪个排在最前面,哪个就是双击
是的默认事件。不知大虾们是否同意我的观点?
 
我不知道,但是我觉得不会是这么简单的,应该是最常被用到的事件别最为默认的事件,
但是我不知道在编写控件的时候怎么来写.关注
 
重载winproc过程,或者简单一点在你的控件的create过程中加上OnClick:=你的过程就行了
 
我的观念可能是对的。因为这段时间我一直做控件。情况确实如此。
 
To 青云
但是你说是按字母方式来的。
没那么最简单的,TForm的默认事件却是OnCreate,前面还有好几个事件呢
 
wr960204朋友,您说得不错,确实像您说得那样,我也想到了这样的问题,可惜我到
现在也不知道该如何解决这个问题。
 
在进行组件编写的时候,上面所说的问题实际上是组件编辑器的方法,
组件编辑器的几个主要可以重载的虚拟对象方法
1.GetVerbCount:当选中一个组件时该方法返回
向窗体设计器弹出菜单添加的菜单选项的数目
2.GetVerb:对每一个新菜单项调用一次,而且它
返回每个菜单项在弹出菜单中的文本
3.ExecuteVerb:当选中一个新菜单项时,菜单项
的数目作为参数传递,
4.Edit:用户双击组件以启动缺省操作时,调用
本方法
 
同意Justin_sh的说法,这是Delphi的编程机制
 
默认组件编辑器(TDefaultEditor):
如果一个组件没有注册一个专用的组件编辑器,那它就必须使用默认的组件编辑器。
TDefaultEditor覆盖了Edit()方法,所以它可以搜索组件的属性并生成(或转向到)OnCreate、
OnChanged、OnClick事件(用EditProperty方法判断)中的一个(看谁先被搜索到)。
如果某组件未定义组件编辑器,想在设计期用户双击组件时调用某属性的编辑器:
从默认组件编辑器TDefaultEditor派生一个组件编辑器,覆盖其EditProperty方法,在参数
PropertyEditor获取所编辑的属性名为指定属性时,调用PropertyEditor的Edit方法进行编辑,
并将Continue参数设为False即可。
 
后退
顶部