>在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右键?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)