关于鼠标点击的消息控制(200分)

  • 主题发起人 主题发起人 5291
  • 开始时间 开始时间
5

5291

Unregistered / Unconfirmed
GUEST, unregistred user!
1)当鼠标在一个 MenuItem 上右键点击一下,如何让一个我指定的 PopupMenu 在这个<br>&nbsp; &nbsp;MenuItem 上面弹出?(这个效果就是 IE5 打开收藏菜单,右键点击某个书签时,<br>&nbsp; &nbsp;弹出一个相关的操作菜单一样)<br><br>2)当我在 WebBrowser 上鼠标左键点击一下,如何获得这个动作,并且获得它的时间?
 
我想应该可以这样解决:<br>在menuitem的onclick中检查是否单击了右键,是的话就popupmenu1.popup;就可以了。<br><br>难道WebBrowser没有OnClick事件?
 
&gt;&gt;(这个效果就是 IE5 打开收藏菜单,右键点击某个书签时,弹出一个相关的操作菜单一样)<br>那不是MenuItem吧,那是ListBox.你想你要实现在菜单中右击出现另一个子菜单的话,恐怕不<br>太好办吧.在Click事件中只有(Sender: TObject)参数,你点击它右键根本不会理.
 
在 OnClick 中判断右键还是左键是可以办到的。但是如果是在 OnClick 中再判断<br>已经太晚了。因为无论是左键还是右键,只要触发 OnClick 后,该菜单都会消失。<br>就是说这样会出现 MenuItem 所处在的菜单消失了,而另一个我弹出的菜单孤零零<br>地在屏幕上。这肯定是不行的。WebBrowser 当然也没有 OnClick 事件。我估计这<br>二个问题必须通过 Message 来解决。
 
TMenuItem是从TComponent继续下来的,无法处理消息。好像行不通。
 
听听各位的高见
 
TMenuItem本身不具备监视鼠标按键的消息。<br>事实上,在一个Menu Item被click后,拥有此Menu的窗口受到一个WM_MENUSELECT消息。然而此时Menu并没有消失。
 
可以在窗体FormMouseUp or FormMouseDown中监控,下面PopupMenu1.Popup(x,y);也可以执行,<br>没有错误,但是不能弹出,不知道为什么。<br>关注:<br>procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;<br>&nbsp; Shift: TShiftState; X, Y: Integer);<br>begin<br>&nbsp; &nbsp;if button =mbRight then<br>&nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp;PopupMenu1.Popup(x,y);<br>//其他<br>end;
 
这个效果肯定是可以实现的。51357(浏览器)就实现了这个。
 
我估计这需要从TMainMenu中新继承出一个类,然后拦截鼠标的点击动作,如果是右击的话,<br>就不用inherited,不知这样行不行?
 
用 API 的键盘事件可以获得鼠标的点击。<br>虽然可以捕捉,但是原来的菜单会消失。
 
接受答案了.
 
后退
顶部