定制Delphi應用程序的系統菜單
發表時間:2024-02-20 來源:明輝站整理相關軟件相關文章人氣:7
[摘要]我們使用Delphi編制應用程序,編譯運行后,在主界面的左上角出現一小圖標,用鼠標單擊此圖標,會 出現一下拉式菜單,這就是系統菜單。系統菜單包括[還原]、[移動]、[大小]、[最小化]、[最大化]和[關 閉]六項。系統菜單是Delphi自動給每個應用程序加上的,不用特意設計。但在我們的應用程序中,...
我們使用Delphi編制應用程序,編譯運行后,在主界面的左上角出現一小圖標,用鼠標單擊此圖標,會
出現一下拉式菜單,這就是系統菜單。系統菜單包括[還原]、[移動]、[大小]、[最小化]、[最大化]和[關
閉]六項。系統菜單是Delphi自動給每個應用程序加上的,不用特意設計。但在我們的應用程序中,有時為達
到一定目的,不希望在主界面上有主菜單存在,這時就可以在系統菜單上做點文章,將自己的菜單選項加入
到系統菜單中,以實現主界面的整潔。
下面是具體的實現方法。例如,我們要將[新建]和[保存]兩選項加入到系統菜單中。先將一PopupMenu組
件加入表單,雙擊此組件進入PopupMenu設計器,設置[新建]和[保存]菜單項,后單擊表單空白處,再選中
Objector Inspector的Event選項卡,雙擊OnCreate事件,進入單元窗口,編寫如下代碼:
Procedure Tform1,FormCreate(Sender:TObject);
Begin
With PopupMenul do
For I:=1 do
AppendMenu(getsystemmenu(self,handle,false),mf-popup,items[I],handle,pchar(items[I],caption));
在變量中添加:Var I:Integer;
編譯運行后就會看到系統菜單中多了[新建]和[保存]兩項。
下面我們來完成系統菜單項的響應。在Tform1的類定義中的Public部分插入如下代碼:
Procedure WMSysCommand(var Msg:Tmessage);
message WM-SysCommand;
其中WMSysCommand為用戶定義的響應函數。
Procedure WMSysCommand(var Msg:Tmessage);
Var
Item:Tmenuitem;
Begin
Inherited;
Item:=popupmenu1.Finditem(msg.wparam,fkcommand);
If not(item=nil) then
Item.click;
End
這樣,系統菜單項就可以調用原有菜單項的click函數。