彈出菜單(快捷菜單)
繼續菜單的討論,在Delphi中,可以和主菜單一樣地建立彈出菜單。Delphi的優點是可通過組建的PopupMenu屬性把特殊彈出菜單賦給組建。當鼠標放在組件上時,點擊右鍵,就會自動彈出菜單。彈出菜單的事件處理程序和主菜單一樣。
文本編輯器的共同特點就是把Cut、Copy和Paste操作放到了快捷菜單上,下面將要為ScratchPad程序的Memo組建增加這樣的功能。要建立彈出菜單,復制部分主菜單,遵循以下步驟:
1、從組件面板中選擇PopupMenu組件,並放置到窗體上。
2、改變其Name屬性為MemoPopup。
3、雙擊PopupMenu圖標運行Menu Designer。
4、點擊右鍵彈出Menu Designer的快捷菜單,從快捷菜單中選擇“Select Menu”。出現的對話框顯示出應用程序中可以獲得的菜單,選擇MainMenu點擊OK。如下圖:
5、點擊Edit菜單,點擊Cut菜單項,按住Shift鍵點擊Paste菜單項。選中Cut、Copy和Paste三項。
6、復制選擇的項到剪貼板,從Delphi主菜單中選擇【Edit | Copy】或者Ctrl + C。
7、在從Menu Designer的快捷菜單中選擇“Select Menu”,這次選擇MemoPopup並點擊OK。Menu Designer彈出空彈出菜單。
8、從Delphi主菜單選擇【Edit | Paste】或Ctrl + V,Cut、Copy和Paste菜單項都插入到彈出菜單中,如下:
在做幾件事情就完成了,更改新的菜單項的Name屬性:
1、對於Cut菜單項,Name屬性改為PopupCut。
2、對於Copy菜單項,Name屬性改為PopupCopy。
3、對於Paste菜單項,Name屬性改為PopupPaste。
最后步驟就是為彈出菜單寫事件處理程序,主菜單中Cut、Copy和Paste事件處理已經寫好了,重復寫是多余的,還記得以前建立多個組件共享同一個事件處理程序嗎?下面我來逐步實現:
1、在Cut菜單上點擊。
2、在Object Inspector中點擊Event標簽。
3、在OnClick事件的Value欄中點擊下列按鈕,顯示出當前已有事件處理程序清單。
4、從清單中選擇EditCutClick。當點擊彈出菜單的Cut時,Edit | Cut將被調用。
5、對彈出菜單中的Copy菜單項的OnClick事件設置為EditCopyClick,Paste菜單項的OnClick事件設置為EditPasteClick。
6、在主窗口上點擊Memo組件,改變其PopupMenu屬性為MemoPopup。
現在程序已經完成了,再次運行測試效果,如下:
創建並保存菜單模板
delphi提供了幾個菜單模板,可以插入到主菜單和彈出菜單中。也可以在程序創建和保存自己的模板為將來使用。首先啟動Menu Designer,建立菜單。
創建了菜單后,從Menu Designer的快捷菜單選擇“Save As Template…”,顯示Save Template對話框。給菜單起一個有意義的名稱,點擊OK按鈕,菜單作為模板保存。如下:
要插入菜單,和以前一樣從Menu Designer中選擇“Insert From Template…”,在Insert Template對話框中選擇即可。如下:
要刪除菜單模板,從Menu Designer中選擇“Delete Template…”,在Delete Template對話框選擇要刪除的模板名稱,點擊OK即可。如下:
Menu Designer是強有力的工具,特別由於輸入菜單的能力,它使菜單的建立和編輯變得容易而有趣。
以上代碼均在Delphi 7中測試通過,本節示例代碼下載:ScratchPad(菜單設計器之三).rar