在很多情况下我们也许想把某些控件的默认右键菜单屏蔽掉。 屏蔽控件右键菜单有很多种方法,现在就介绍我知道的其中四种。 在介绍之前,先让我们看一下下面这段代码,这段代码是VCL库中TControl对象的一段代码, 从这段代码我们可以看出右键菜单的弹出事件都写在弹出菜单消息里面。 private procedure WMContextMenu(var Message: TWMContextMenu); message WM_CONTEXTMENU; … procedure TControl.WMContextMenu(var Message: TWMContextMenu); var Pt, Temp: TPoint; Handled: Boolean; PopupMenu: TPopupMenu; begin if Message.Result <> 0 then Exit; if csDesigning in ComponentState then Exit; Pt := SmallPointToPoint(Message.Pos); if Pt.X < 0 then Temp := Pt else begin Temp := ScreenToClient(Pt); if not PtInRect(ClientRect, Temp) then begin inherited; Exit; end; end; Handled := False; {* 调用OnContextPopup} DoContextPopup(Temp, Handled); Message.Result := Ord(Handled); if Handled then Exit; PopupMenu := GetPopupMenu; {* 弹出自定义菜单} if (PopupMenu <> nil) and PopupMenu.AutoPopup then begin SendCancelMode(nil); PopupMenu.PopupComponent := Self; if Pt.X < 0 then Pt := ClientToScreen(Point(0,0)); PopupMenu.Popup(Pt.X, Pt.Y); Message.Result := 1; end; if Message.Result = 0 then {* 继承Windows右键菜单} inherited; end; 下面介绍屏蔽右键菜单的几种常用的方法 第一种:绑定菜单法: [1] [2] [3] 下一页 没有相关教程
|