第一卷 為應用程序添加菜單和工具欄(1 / 3)

第一卷 為應用程序添加菜單和工具欄

菜單和工具欄在應用程序中相當常見。如果把菜單和工具欄設計得很好,那麼隻要根據菜單的組織形式和內容,用戶就可以很好地理解應用程序。恰當地計劃並設計菜單和工具欄,將使應用程序的主要功能得以體現,讓用戶在使用應用程序時不致受挫。

現在幾乎所有的Windows應用程序都使用下拉式菜單,下拉菜單能較好地組織應用程序的各種操作,為用戶提供了一個結構化的訪問途徑。快捷菜單在Windows 95/98中應用廣泛,用戶在控件或對象上單擊右鍵時,就會顯示快捷方式菜單,可以快速展示當前對象可用的所有功能。工具欄常常通過易讀的圖標來快速實現某一功能,它能夠快捷地訪問程序,為用戶節省操作時間。

本章要講述的就是設計菜單和工具欄方麵的知識,主要包括創建下拉式菜單、快捷菜單和設計自定義工具欄。

第一章 菜單設計器的使用

7.1.1 概述

創建菜單係統的工作主要是在"菜單設計器"中完成的,在那裏可創建實際的菜單、子菜單和菜單選項。

在 "New File(新建文件)"對話框中,選擇"Menu"項,進入"New Menu(新建菜單)"窗口,如圖7-1所示。它有兩個選項,選項"Menu"用來建立一個一般的下拉式菜單,選項"Shortcut"用來建立一個快捷菜單,可單擊這兩個按鈕中的任何一個,現在選擇"Menu"按鈕,就進入了菜單設計器,如圖7-2所示。

圖7-1 "New Menu(新建菜單)"窗口

圖7-2 "Menu Designer(菜單設計器)"窗口

7.1.2 菜單設計器的使用

在出現的"菜單設計器"窗口中,左側屏幕中有三個選項:

1.Prompt項

此項中輸入的是菜單標題,它是在菜單運行時顯示的內容,而不是在設計時引用菜單的內部名字,它相當於表單設計時對象的Caption屬性。

用戶在設計此項時,應當給它輸入一個有意義的菜單標題,並且這個標題應能準確地描述該菜單項的功能。通常要使用簡單的常用詞語,使用英文標題時要混合大小寫。

2.Result項

指定該菜單項結果,它有四個選項: "Command"、"Pad Name"、 "Submenu"和"Program",如圖7-3所示。

圖7-3 菜單結果的四個選項

(1)Command:表示該菜單項用來執行一條命令語句,選擇這一項後,"Result"列右側出現一個輸入框,讓用戶輸入命令語句,如圖7-4所示。

(2)Pad Name:設計菜單時,在缺省狀態下,Visual FoxPro 6.0會自動給每個菜單項添加一個唯一的名稱(Pad Name),它類似於表單控件的Name屬性,Visual FoxPro 6.0通過它來引用這個菜單項,但若用戶選擇此項,"Result"列右側出現一個輸入框,用戶便可輸入自己定義的菜單名稱,如圖7-4所示。此名稱的命名規則與Visual FoxPro 6.0中變量的命名規則相同。但在實際設計時並不需要選用此項,因為無論用戶選擇的菜單項結果是"Submenu"、"Command"還是"Procedure",都可以為該菜單項設置自定義名稱,關於這一點在下文有闡述。

圖7-4 選取不同選項的菜單實例

(3)Submenu:選擇此項,表示該菜單項包含一個子菜單,當菜單運行時用戶選取該菜單項,將彈出它的子菜單。選擇此項後,"Result"列右側出現"Create"按鈕,單擊它進入編輯子菜單狀態,如圖7-5所示,除"Menu Level"項與圖7-2不同外,其餘各項完全相同,它各項的意義與圖7-2也完全相同。

圖7-5 一個子菜單編輯窗口

(4)Procedure:這種菜單項在執行時被選取後,會執行一個程序,它與"Command"菜單項有共同之處,當要執行的程序中隻有一條語句時,使用這兩者都可,但它的優點是能執行含多個語句的一個過程。選擇這一選項後,"Result"列右側也會出現一個"Create"按鈕,單擊後,會出現一個過程編輯窗口。

在編輯過程時,不必在開始和結束處書寫"Procedure ...EndProc"語句,這是由於在生成菜單程序文件.MPR時,係統會自動把這一語句添加到過程的開始和結束處。這個編輯窗口與程序文件(.PRG)的編輯窗口沒有兩樣,也使用程序文件的設計方法來設計這個過程。如圖7-6所示。

圖7-6 過程編輯窗口

3.Options項

選擇這個選項列的按鈕後,出現"Prompt Options"窗口,如圖7-7所示。用來設置菜單項的各種高級屬性,其中各項的使用方法在本章後麵有詳述。

圖7-7 "Prompt Options(提示選項)"窗口

除了上述的"Prompt"、"Result"和"Option"三項外,菜單設計器窗口中還有三項:

1.Menu Level

這個下拉組合框用來指示或改變當前設計的子菜單在菜單係統層次結構中的位置,若為"Menu Bar"時則表示正在設計係統主菜單。

2.Item

"Insert"、"Insert Item"、"Delete"按鈕分別用來插入一個菜單項、插入一個Visual FoxPro 6.0係統菜單條、刪除一個菜單項。其中"Insert Item"按鈕隻用於設計子菜單時("Menu Level"不能是"Menu Bar")。

3.Preview

用來預覽設計的菜單,預覽時設計的菜單直接顯示在Visual FoxPro 6.0主窗口中,能幫助用戶更好地設計菜單。圖7-4菜單的預覽結果如圖7-8所示。注意預覽時隻是顯示菜單的各個菜單項,並不能響應菜單命令和程序。

圖7-8 預覽菜單

第二章 創建菜單

7.2.1 快速菜單

打開"菜單設計器後",Visual FoxPro 6.0係統主菜單中出現了一個新的"Menu"菜單項,選取它,彈出其子菜單,如圖7-9所示。

圖7-9 "Menu"的子菜單

如果用戶沒有設計菜單的經驗,可以選取"Quick Menu"來自動生成一個菜單係統,這就是快速菜單,如圖7-10所示。快速菜單其實就是Visual FoxPro 6.0的係統主菜單,讀者可以通過查看這個快速菜單,來學習設計菜單的一般方法。當然用戶也可以修改這個快速菜單來達到更滿意的效果。

Quit Menu(快速菜單)是設計菜單的捷徑,它很類似於一種向導,隻不過它的靈活性更差,隻能生成單一形式的菜單,因此直接使用它的情況較少。通常情況下要修改它後再使用,例如可以刪除不必要的菜單項,或者把這個菜單漢化,修改菜單的方法與下文創建下拉式菜單相同。

圖7-10 Quit Menu(快速菜單)

7.2.2 規劃、形成菜單係統

一個菜單係統是各個菜單項的有機組合,要根據應用係統的要求,來完成下麵的幾項工作。

1.規劃主菜單

主菜單項應囊括應用係統的各種功能,它們通常又包含自己的子菜單。例如現在要設計一個銀行帳務管理係統的主菜單,它由"存款"、"取款"、"打印"、"查詢"、"幫助"和"退出"六個主菜單項組成,如圖7-11所示。圖中除"退出"一項外,其餘各項的"Result"都選擇"Submenu",即表示都有子菜單。

圖7-11 "銀行帳務管理係統"的主菜單項

2.設計子菜單

不僅子菜單子項中能包含子菜單,子菜單項也可以再有它的子菜單,一個菜單項的子菜單的內容一定要與它本身聯係緊密,讓使用者操作時不致感到混亂。如現在給圖7-11中"查詢"項設計子菜單,它包含"賬號餘額"、"存款日期"、"取款日期"、"戶主地址"四項,分別代表要查詢的內容,如圖7-12所示。

圖7-12 查詢菜單項的子菜單

3.給菜單項排序、分組

在一個子菜單中,各項的使用頻率不同,要根據頻率估計來給菜單項排序,讓使用頻率高的菜單排在前麵。例如"存款"的子菜單中包含"活期"、"定期"、" 零存整取"、" 定活兩便"、" 新開賬戶"五項,顯然,"活期"與"定期"兩項的使用頻率要比其他幾項高的多,把他們排在前麵,如圖7-13所示。

圖7-13 給菜單排序、分組

移動菜單項改變順序的方法是:先選中要移動的項,按住它前麵的按鈕"",把它拖動到新位置後在鬆開左鍵,這兩個菜單項的位置就調換了。

有時候各個菜單項的功能類別有些差異,就需要給菜單項分組,以增加操作時的可讀性。圖7-13中前麵四項都是存款的類別,應與最後一項"新開賬戶"分開。分組的方法是:在要分組的兩個菜單項(即"定活兩便"與"新開賬戶")之間插入一個新菜單項,並在其"Prompt"列中輸入"\-",如圖7-13所示。

7.2.3 指定菜單項名稱和提示信息

上文講過,在菜單設計器的"Result(結果)"項中選擇"Pad Name"能給一個菜單項命名,但更廣泛的命名方式是通過"Prompt Options(提示信息)"窗口中的"Pad Name"輸入框來命名,例如給上麵"銀行帳務管理係統"中主菜單項"存款"命名為"in_money",如圖7-14所示,在程序或過程中使用這個名稱就能夠引用這個菜單項。

添加提示信息的工作是在"Prompt Options"窗口的"Message"輸入框中完成的,添加的提示信息在運行時顯示在Visual FoxPro 6.0的狀態條(位於屏幕最下麵)中。輸入的提示信息可以是任意的變量和常量,顯示一串文字時須用" "括起來,以表示是字符型常量。如圖7-14所示。選取它右側的觸發式按鈕""出現"Expression Builder(表達式生成器)",然後用戶輸入複雜的提示信息。

圖7-14 指定菜單名稱和添加提示信息