delphi – 如何检测TMenuItem右键?

delphi – 如何检测TMenuItem右键?,第1张

概述平台:delphi 2010 >在form1上删除Tmainmenu >在form1上删除Tpopupmenu >添加mainmenu1和popupmenu项目 (mainmenu – > file – > item1,popupmenu – > popup item1) > item1.onRgihtClick show popupmenu > f9 > file – > item1右键单击,d 平台:delphi 2010

>在form1上删除Tmainmenu
>在form1上删除Tpopupmenu
>添加mainmenu1和popupmenu项目
(mainmenu – > file – > item1,popupmenu – > popup item1)
> item1.onRgihtClick show popupmenu
> f9
> file – > item1右键单击,d出菜单,选择item1 bla bla bla ….

object Form1: TForm1  left = 0  top = 0  Caption = 'Form1'  ClIEntHeight = 222  ClIEntWIDth = 447  color = clBtnFace  Font.Charset = DEFAulT_CHARSET  Font.color = clWindowText  Font.Height = -11  Font.name = 'Tahoma'  Font.Style = []  Menu = MainMenu1  oldCreateOrder = False  PixelsPerInch = 96  TextHeight = 13  object MainMenu1: TMainMenu    left = 136    top = 64    object file1: TMenuItem      Caption = 'file'      object recentfile1: TMenuItem        Caption = 'item 1'      end    end  end  object PopupMenu1: TPopupMenu    left = 24    top = 136    object popupitem1: TMenuItem      Caption = 'popup item'      OnClick = popupitem1Click    end  endend
解决方法 这是以下示例的菜单结构

file1           Edit1  fileItem11      EditItem11  fileItem21      EditItem21

和两个d出菜单项.代码:

type  TForm1 = class(TForm)    MainMenu1: TMainMenu;    file1: TMenuItem;    fileItem11: TMenuItem;    fileItem21: TMenuItem;    Edit1: TMenuItem;    EditItem11: TMenuItem;    EditItem21: TMenuItem;    PopupMenu1: TPopupMenu;    PopupItem11: TMenuItem;    PopupItem21: TMenuItem;    procedure PopupItem11Click(Sender: TObject);    procedure PopupItem21Click(Sender: TObject);  private    FSelectedItem: TMenuItem;    FTracking: Boolean;    procedure MenuRbuttonUp(var Msg: TMessage); message WM_MENURbuttonUP;  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.MenuRbuttonUp(var Msg: TMessage);var  Cmd: UINT;begin  if not FTracking then    FSelectedItem :=        MainMenu1.FindItem(GetMenuItemID(Msg.LParam,Msg.WParam),fkCommand);  if (not FTracking) and (FSelectedItem <> nil) then begin    FTracking := True;    LongBool(Cmd) := TrackPopupMenuEx(PopupMenu1.Handle,TPM_RECURSE or TPM_BottOMAliGN or TPM_RETURNCMD,Mouse.CursorPos.X,Mouse.CursorPos.Y,Handle,nil);    FTracking := False;    if Cmd <> 0 then      PopupMenu1.dispatchCommand(Cmd);  end;  inherited;end;procedure TForm1.PopupItem11Click(Sender: TObject);begin  Caption := 'Popup Item 1 clicked on ' + FSelectedItem.Caption;end;procedure TForm1.PopupItem21Click(Sender: TObject);begin  // whatever..  Caption := 'Popup Item 2 clicked on ' + FSelectedItem.Caption;end;
总结

以上是内存溢出为你收集整理的delphi – 如何检测TMenuItem右键?全部内容,希望文章能够帮你解决delphi – 如何检测TMenuItem右键?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1272014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存