Delphi 禁用默认弹出(上下文)菜单
在DelphiXe7 Firemonkey项目中,我想阻止当用户在控件上按下鼠标右键时显示的默认弹出菜单 在VCL中,您可以在ContextPopup()中轻松设置Delphi 禁用默认弹出(上下文)菜单,delphi,firemonkey,delphi-xe7,Delphi,Firemonkey,Delphi Xe7,在DelphiXe7 Firemonkey项目中,我想阻止当用户在控件上按下鼠标右键时显示的默认弹出菜单 在VCL中,您可以在ContextPopup()中轻松设置Handled:=true 不幸的是,FMX中不存在此事件 有没有办法在Firemonkey中对此进行归档?您可以通过在表单中添加一个空的(无菜单项)TPopupMenu并将其分配给TEdit.PopupMenu来阻止默认的popop菜单 内部TStyledEdit检查(在TStyledEdit.ShowContextMenu()中)
Handled:=true
不幸的是,FMX中不存在此事件
有没有办法在Firemonkey中对此进行归档?您可以通过在表单中添加一个空的(无菜单项)TPopupMenu并将其分配给TEdit.PopupMenu来阻止默认的popop菜单 内部TStyledEdit检查(在TStyledEdit.ShowContextMenu()中)PopupMenu属性是否为nil,如果为nil,则显示用户定义的弹出菜单,否则显示默认的弹出菜单。但是,如果右键单击TEdit,则会中断编辑,因为弹出菜单仍会进入自己的消息循环。因此,用户必须按Esc键或左键单击以继续编辑 一个增强功能是定义一个新的TPopupMenu类,您可以使用该类控制是否启用弹出窗口:
type
TPopupMenu = class(FMX.Menus.TPopupMenu)
private
FEnabled: boolean;
public
procedure Popup(X, Y: Single); override;
property Enabled: boolean read FEnabled Write FEnabled;
end;
TForm5 = class(TForm)
Edit1: TEdit;
PopupMenu1: TPopupMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.fmx}
procedure TForm5.FormCreate(Sender: TObject);
begin
PopupMenu1.Enabled := true;
end;
{ TPopupMenu }
procedure TPopupMenu.Popup(X, Y: Single);
begin
if FEnabled then
inherited;
end;
拦截对Popup()的调用,如果未启用,则有效阻止弹出