如何在控件里增加右键菜单? ( 积分: 10 )

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

青云

Unregistered / Unconfirmed
GUEST, unregistred user!
比如我们自定义一个 TmyEdit=Class(Tedit);

想在 TmyEdit 默认加上 一个右键PopupMenu菜单,菜单里加上几个子按钮,写些
事件;
比如 ShowMessag('第1个默认右键按钮');ShowMessag('第2个默认右键按钮');
等等。
这个功能很容易实现,但是有一个问题,

就是当使用TmyEdit 的时候,如果在它PopupMenu属性上设置了一个PopupMenu1,那么该菜单里的按钮就覆盖了TmyEdit控件里默认的按钮。如何让这两个菜单按钮相加,显示所有菜单按钮呢?也就说设置TmyEdit 的PopupMenu 属性后,要对它内部定义的PopupMenu没有影响。

我前后尝试了三年多,仍然没有搞定。
我想覆盖其父类Tcontrol.SetPopupMenu 增加代码;
但是该函数不是虚函数,无法覆盖;

希望朋友们给与技术支持。


http://community.csdn.net/Expert/topic/4424/4424268.xml?temp=.6624567
 
比如我们自定义一个 TmyEdit=Class(Tedit);

想在 TmyEdit 默认加上 一个右键PopupMenu菜单,菜单里加上几个子按钮,写些
事件;
比如 ShowMessag('第1个默认右键按钮');ShowMessag('第2个默认右键按钮');
等等。
这个功能很容易实现,但是有一个问题,

就是当使用TmyEdit 的时候,如果在它PopupMenu属性上设置了一个PopupMenu1,那么该菜单里的按钮就覆盖了TmyEdit控件里默认的按钮。如何让这两个菜单按钮相加,显示所有菜单按钮呢?也就说设置TmyEdit 的PopupMenu 属性后,要对它内部定义的PopupMenu没有影响。

我前后尝试了三年多,仍然没有搞定。
我想覆盖其父类Tcontrol.SetPopupMenu 增加代码;
但是该函数不是虚函数,无法覆盖;

希望朋友们给与技术支持。


http://community.csdn.net/Expert/topic/4424/4424268.xml?temp=.6624567
 
将PopupMenu1里面的菜单项,复制到默认的菜单里面啊!
动态添加也可以啊!
 
楼上的兄弟,问题很复杂,当在控件的create 事件 加载默认右键菜单的时候。PopupMenu1还没有被加载。一个很关键的问题,就是不知道何时加载PopupMenu1的。如何把两个PopupMenu合在一起的问题我已早研究出来。
这个问题前后耗了我三年多,尝试了几十种处理方法。一只不能搞定。以至于让我怀疑控件就没有办法扩展这个功能。
 
1.控件的create 事件里面不写菜单的部分;
2.等需要调用菜单的时候,判断用户是否给这个控件设置了菜单:如果设置了,那么把你的菜单项动态添加到用户设置的菜单中,否则,你动态创建一个邮件菜单,把你的菜单项动态添加到你创建的菜单中!
 
"等需要调用菜单的时候"究竟是什么时候,这句话很不明确,myEdit1放在窗体上的时候,就为它设置了一个PopupMenu1,但是在myEdit控件的create里面是不会创建这个PopupMenu1的。

我的意思是就算我们在TmyEdit内部创建了右键按钮,也不要对它本身固有的PopumMenu属性有任何影响。
如果大家有兴趣把这个问题搞透,就干脆写一个demo出来看看。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部