日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Delphi Menu Designer(菜单设计器)之一

發布時間:2024/4/15 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Delphi Menu Designer(菜单设计器)之一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

菜單包括大多數Windows應用程序的大部分內容。一些Windows應用程序沒有菜單,但絕大多數都有。Delphi使用Menu Designer使得創建菜單變得容易。Menu Designer有如下特點:

  • 可以創建主菜單和彈出菜單(快捷菜單)。
  • 為菜單項處理提供OnClick事件。
  • 從模板或源文件插入菜單。
  • 以模板形式保存客戶菜單。

所有Menu Designer命令通過其快捷菜單或者使用Object Inspector來操作。如下圖,顯示了Menu Designer的快捷菜單:

從大部分情況下,這些快捷菜單項通過其名字就能知道它的用途,因此不在這里做進一步討論。

下面我們通過使用菜單項來了解它們,首先為前面創建ScratchPad應用程序添加一個主菜單,然后添加一個快捷菜單。

一、創建主菜單

Menu Designer能夠很快建立任何菜單。主菜單的菜單結構由MainMenu組件構成,它由VCL類TMainMenu表示。菜單上每一項是TMenuItem組件,封裝在TMenuItem類中。不必太關心這些類如何協同工作的細節,因為Menu Designer使得建立菜單變得非常容易。TMainMenu和TMenuItem繼承關系圖如下:

?

1、 添加主菜單到窗體

首先必須添加MainMenu組件到窗體。

Note

現在大家對Delphi已有了使用經驗。從這時起,要縮略某些需要執行動作的步驟。例如,從現在開始說“把MainMenu組件放到窗體上”,而不是說“在組件面板上點擊Standard標簽,點擊MainMenu按鈕,點擊窗體放置MainMenu組件。”不要擔心,在引入新操作前,會給出大量的細節。

(1)打開上一講創建的ScratchPad工程。

(2)在窗體上放置MainMenu組件,顯示為一個圖標,如下圖,改變其Name屬性為MainMenu。注意MainMenu組件有很少幾個屬性且沒有時間,所有菜單的工作由單個菜單項完成。

(3)雙擊MainMenu圖標,顯示出Menu Designer。

Menu Designer看起來像沒有坐標網格點的空窗體,它可以任意調整大小,調整大小只是為了方便,與在運行階段菜單如何操作沒有多大關系。在此意義上,Menu Designer等待著開始建立菜單。在建立完第一個菜單后,就會發現建立菜單是容易而且可視的。

2、手工創建菜單

盡管有更容易的方式建立File菜單,但是我們要是要手工來創建第一個菜單。Menu Designer總有空菜單項作為新菜單項的占位標識符。當 開始啟動Menu Designer時,選擇空項目。

(1)改變Name屬性為FileMenu

(2)在Object Inspector中點擊Caption屬性,輸入“&File”,按Enter鍵確定,如下圖:

Note

&符號用于建立菜單項的下劃線字符。下劃線字符是加速器,允許用戶用鍵盤+Alt快速啟動菜單項。可把&字符放在菜單項文本的任意位置。例如Exit菜單項的常用文字字符串為E&xit,故x是加速鍵。

輸入上面的File菜單后,有幾件事會發生。首先File菜單顯示在Menu Designer中,它也出現在Menu Designer背后的主菜單上,另一件是新的空白占位標志符增加在剛建立的File菜單下面(必須點擊Menu Designer中的File菜單來看占位標志符)。Object? Inspector顯示空MenuItem組件,等待輸入Caption和Name屬性。如下圖:

繼續創建菜單

(1)更改Name屬性為FileNew

(2)更改Caption屬性為&New,按Enter鍵,在Menu Designer中又建立了空白項。

(3)重復(1)、(2)步,為OpenSaveSave As創建菜單項。效果如下圖,不要擔心做的不好,總可以回過頭來修正錯誤的。

Tip

盡可能把菜單做的標準些。保證加速鍵(下劃線字符)與其他Windows程序相同。記住,菜單項標題后面有省略號(…)的說明是對話框。

?

New Term

菜單分隔符(separator)是菜單上分隔菜單組的橫向線。

用Delphi Menu Designer增加分隔線是容易的,所做的是在Caption屬性中輸入連字符(-)。上圖中在“Save As…”菜單下面就是一個分隔符,其Name屬性為N1,Caption屬性輸入的為“-”。

Note

Menu Designer總在每個彈出菜單底端和菜單欄右邊提供空項。不能也沒必要刪除這些空白菜單,它們只用于Menu Designer,在程序運行時不顯示在菜單上。

現在,File菜單已經做好了,下面將要創建Edit菜單和Help菜單。

?

3、從模板插入菜單

這次要采取容易的方法。首先,點擊File菜單右邊的空白菜單項。然后點擊鼠標右鍵選擇快捷菜單中的“Insert From Template…”,將顯示出Insert Template對話框,如下圖:

此對話框顯示供選擇的一系列模板,可使用預定義模板或建立自己的模板。此時我們只選擇Edit Menu,點擊OK。Edit菜單立刻插入到了Menu Designer中了,如下圖,其中有其菜單項目我們沒有用,稍后我們講解刪除菜單項時再處理。

這里可以增加Help菜單,點擊Edit菜單右邊的空白占位符,在選擇“Insert From Template…”,這次我們插入“Help Menu”,立刻Help菜單出現在了Menu Designer中。

Note

可插入模板來創建彈出菜單,與創建主菜單項一樣容易。

從模板插入真的那么容易,使用Delphi之后,多半會用自己定制的模板快速而容易地建立菜單。雖然仍要更新Name屬性為有意義的名字,但比從Menu Designer中一步一步創建要容易的多。

Note

Insert From Resource 與 Insert From Template 的作用一樣,但它要求含有有效的菜單定義的資源文件(RC擴展名)。菜單資源必須使用begin/end菜單資源語法,而且不能使用花括號。例如下面的定義是無效的:

MENU_1 MENU {POPUP "FILE"{MENUITEM "OPEN", 100MENUITEM "ABOUT", 101} }

而下面是合法菜單資源:

MENU_1 MENU BEGINPOPUP "FILE"BEGINMENUITEM "OPEN", 100MENUITEM "ABOUT", 101END END

上面的合法菜單資源僅用于由Insert From Resource插入的菜單,而非一般菜單資源。

?

4、刪除菜單項

建立Windows應用程序的過程,很少第一次就能恰好正確。用戶需要新特色,老板提出一些改進,甚至某些特性需要刪掉,這些變動就要求經常更新應用程序的菜單。例如最初插入的Edit模板菜單非常的長,其中有些項不需要,毫無疑問就必須刪除它。

?

(1)在Edit菜單上點擊。

(2)點擊Repeat<command>項。

(3)在鍵盤上按Delete鍵或從Menu Designer快捷菜單中選擇“Delete”刪掉此項,該項消失,其余項目上移。

(4)刪除Paste Special項。

對Edit菜單還未處理完,繼續之前提一下Menu Designer中有用用的特性。就是Shift + ClickCtrl + Click。這個技術可用于在Windows資源管理器中選擇文件。Menu Designer支持這個技術。

(1)Edit菜單應該仍在顯示著,若沒有,點擊Edit菜單來顯示Edit菜單。

(2)點擊菜單項Go to

(3)按下Shift鍵,點擊菜單項Object,這兩個之間的所有項都已經選定。

(4)按Delete鍵一次消去所有項。

(5)點擊Help菜單,刪除中間兩項,保留Contents項和About項。

可見Shift+Click技術用于快速刪除不想要的菜單項。

?

5、插入菜單項

插入菜單項非常直接,就在要插入新項的菜單項上點擊,在鍵盤上按Insert鍵或從Menu Designer快捷菜單中選擇Insert。空菜單項即被插入了,可以像以前一樣改變Name屬性和Caption屬性。

下面在Edit菜單中插入一項。

(1)點擊Edit顯示Edit菜單。

(2)點擊Find菜單項。

(3)按鍵盤Insert鍵插入一個新菜單項,所有在新項目下面的項都向后移動。

(4)改變Name屬性為EditSelectAll,并改變Caption屬性為“Select &All”。

(5)點擊Edit菜單底端的空占位符,增加菜單分隔符。

再點擊占位符以增加新項,設置Name屬性為EditWordWrap,Caption屬性為“&Word Wrap”。

現在Edit菜單看起來如下:

?

6、移動菜單項

需要時能容易移動菜單項,可以在它們所在彈出菜單中上下移動,或者移出彈出菜單。

有兩種方式移動菜單項:

  • 第一種使用Cut和Paste。
  • 第二種是把它拖動到新位置然后釋放。

下面來試試,把Select All菜單項放到Undo項的下面,這是很容易的,只要移動它。

(1)點擊Edit顯示Edit菜單。

(2)點擊Select All項,拖動它知道Undo項下的分隔線亮起來。

(3)釋放鼠標,菜單項移動了。

這就是Delphi,非常容易。

?

7、批量修改屬性

有時想一次改變幾個菜單項的屬性,例如,在ScratchPad應用程序中,有幾個菜單項不準備這次完成,比如不準備支持打印,也不準備完成幫助系統。因此需要屏蔽這些菜單項。

(1)在Meun Designer中選擇Help | Contents

(2)改變其Enabled屬性為False,該菜單項目被屏蔽。

(3)點擊File菜單。

(4)點擊Print菜單項,按住Shift鍵,點擊Print Setup菜單項,兩個項目都被選定。

(5)在Object Inspector中,改變它們的Enabled屬性為False,兩個菜單項都被屏蔽了。

重復(4)、(5)步來屏蔽Edit菜單上的Find 和 Replace菜單項。

用這種方法可以一次改變一組菜單項,只需要選擇想要改變的項,按要求改變其屬性。

?

8、增加位圖到菜單欄

可以容易地增加位圖到菜單上。在想增加位圖的菜單上點擊,然后在Object Inspector中Bitmap屬性的Value欄中雙擊,彈出Picture Editor對話框,選擇要顯示的位圖即可。位圖可以是單個圖像或者圖像列表。如果使用圖像列表,還應該設置ImageIndex屬性為要顯示的圖像列表中的索引號。

Note

在設計階段,菜單項目位圖不顯示在Menu Designer中或者窗體上,必須運行程序來看位圖菜單。

?

9、創建子菜單

創建子菜單沒有什么特別或需要技巧的地方。子菜單是一種菜單項,點擊時能擴展顯示更多的菜單選項。子菜單是以菜單項標題附近的右向箭頭標記的。可從Menu Designer快捷菜單中選Create Submenu或按住Ctrl+右箭頭建立子菜單。如下:

建立子菜單時,空菜單項安排在菜單項的右邊。可往子菜單增加菜單項,就想生成主菜單一樣。也可以插入菜單模板建立子菜單。如下:

?

10、增加快捷鍵

可通過改變Object Inspector中的ShortCut屬性來增加菜單項的快捷鍵。以前插入的Edit菜單已有內部快捷鍵。例如,Cut的快捷鍵是Ctrl+X,如果看Edit菜單,會看到Ctrl + X列在Cut項目旁邊。

在Cut菜單項上點擊,在Object Inspector的ShortCut屬性中看到其值為Ctrl + X。點擊ShortCut屬性的Value欄,會看到下拉按鈕,點擊按鈕列出所有的快捷鍵列表。要為菜單項設置快捷鍵,只要從表中選擇即可。

Select All菜單項目的標準快捷鍵是Ctrl + A,因此我們為Select All菜單項增加快捷鍵。

(1)從Menu Designer中選擇 Edit | Select All

(2)在Object Inspector中點擊ShortCut屬性。

(3)從列表中選擇Ctrl + A,則Select All項顯示出Ctrl + A來。如下:

這時所有要做的,以后Delphi來照顧它,快捷鍵不需要編寫任何代碼。

?

11、最后的工作

下載來完成菜單。

首先,Word Wrap菜單項用于打開或關閉換行的。當該項打開時,Word Wrap菜單項前面有一個對勾;當該項關閉時,則沒有對勾。通過設置Word Wrap菜單項的Checked屬性為True來表示換行特性的打開。如下:

另一件事情就是改變從模板插入的所有菜單項目的Name屬性。默認插入時都是缺省值,需要把它們改為更為有意義的名字。

(1)點擊Edit | Undo菜單項,更改Name屬性為EditUndo。如果使用的是缺省值,則需要在Undo1基礎上,在前面加上Edit前綴,然后刪除掉結尾處的1。

(2)可使用命名慣例但要前后一致,對Cut、Copy、Paste、Find及Replace菜單項Name屬性進行修改,依次為EditCut,EditCopy,EditPaste、EditFind及EditReplace

(3)現在更改Help菜單,將其中Contents菜單項的Name屬性改為HelpContents,About菜單項Name屬性改為HelpAbout

這就快要完成菜單了,在檢查一遍,如果發現錯誤就做必要的修改。當一切沒有問題了,點擊關閉框關閉Menu Designer。

Note

可雙擊任何菜單項直接從Menu Designer中訪問Code Editor,雙擊菜單項是,Code Editor將顯示該項的OnClick事件,這時可以開始輸入代碼。在一下講解中,我將要編寫菜單代碼。

以上代碼均在Delphi 7中測試通過,截止到本講示例代碼下載:ScratchPad(菜單設計器之一).rar

(請繼續下一講)

轉載于:https://www.cnblogs.com/pchmonster/archive/2012/01/16/2324204.html

總結

以上是生活随笔為你收集整理的Delphi Menu Designer(菜单设计器)之一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。