2024年4月29日发(作者:)

屏蔽右键菜单

在很多情况下我们也许想把某些控件的默认右键菜单屏蔽掉。

屏蔽控件右键菜单有很多种方法,现在就介绍我知道的其中四种。

在介绍之前,先让我们看一下下面这段代码,这段代码是VCL库中TControl对象的一

段代码,从这段代码我们可以看出右键菜单的弹出事件都写在弹出菜单消息里面。

private

procedureWMContextMenu(varMessage:TWMContextMenu);message

WM_CONTEXTMENU;

extMenu(varMessage:TWMContextMenu);

var

Pt,Temp:TPoint;

Handled:Boolean;

PopupMenu:TPopupMenu;

begin

<>0thenExit;

ifcsDesigninginComponentStatethenExit;

Pt:=SmallPointToPoint();

ifPt.X<0then

Temp:=Pt

else

begin

Temp:=ScreenToClient(Pt);

ifnotPtInRect(ClientRect,Temp)then

begin

inherited;

Exit;

end;

end;

Handled:=False;

{*调用OnContextPopup}

DoContextPopup(Temp,Handled);

:=Ord(Handled);

ifHandledthenExit;

PopupMenu:=GetPopupMenu;

{*弹出自定义菜单}

if(PopupMenu<>nil)pupthen

begin

SendCancelMode(nil);

omponent:=Self;