需求背景:用户鼠标从别处移到菜单项上,则自动弹出该项的下级菜单。
问题看似简单,但delphi中的mainmenu没有声明出类似的任何事件,而且关键点:1。用户鼠标从别处移到mainmenu的某个菜单项上,触发何种事件,如何拦截?
        2。如何pop出一个mainmenu 中的某个子菜单项?
更进一步,再来个难点的。
        3。pop了一个子菜单项,如何在鼠标移出子菜单项的区域后,自动收起。各位大侠不要让我用其他第三方的菜单控件,我就是想看看这个问题有没有法解决。
请教各位,小弟先行谢过。

解决方案 »

  1.   

    说个方法,继承TMenuItem类,加入相应CM_ENTER事件 CM_Exit加入 函数指针TMypro=procedure(sender:Tobject);定义一个属性 property onenter:Tmypro;read fonenter write setonenter;加入相应消息事件 procedure CMEnter(var Message: TCMEnter); message CM_ENTER;判断 FONENTER是否assigned 然后出发  fonenter(sender);
      

  2.   

    TMenuItem  应该在mainmenu中以数组形式存在,所以还必须改动 mainmenu的代码~
      

  3.   

    想收起的话 加入 CM_Exit 响应它的事件