在開發軟體的菜單介面時,能按Windows所設定的規範進行,不僅能使所開
發出的應用軟體的菜單介面更美觀豐富,而且能與Windows中各軟體協調一致,
使大量熟悉Windows操作的使用者,一看菜單,就能根據平時的使用經驗,觸類旁通
地知曉該應用軟體的各功能和簡捷的操作方法,增強軟體的靈活性和可操作
性。
以下以VB5.0的工具功能表列(Tools)中的“菜單編輯器”和一個“學生檔
案管理軟體”(主要有“檔案”、“系統初始化” 、“年級”、“輸入與查
詢”等菜單,分別完成報表列印、建立年級庫、選年級、以及資料庫資料的輸
入與查詢等)為例,說明Windows應用軟體菜單設計的一些規則:
一、暫時不可操作的功能表命令項一般要屏蔽變灰
Windows菜單中有一些功能表項目是以變灰的形式出現的,並用虛線字元來顯
示,這一類的命令表示當前不可用,也就是說,執行此命令的條件當前還不具
備。例如,在學生檔案管理軟體中,初始的“輸入與查詢”菜單為灰,因為在
沒有選中“年級”的情況下,系統將不知要查詢哪個年級的學生資料。在圖1
中設計時,點擊“輸入與查詢”菜單條的“有效(E)”屬性,改變其預設的
“有效”為“無效”,然後設計在“年級”菜單中各年級的Click事件中傳遞
所選中的年級資訊給“輸入與查詢”模組後改變後者的“有效”屬性值,讓其
可操作:
Private Sub mnu98dz_Click() Transfer = "c:/dagl/98dz.mdb" mnuFind.Enabled = True End Sub
二、正在起作用的功能表命令旁打上選中標記(√)
Windows中有一些命令是觸發式的,打勾號表明該命令正在起作用,否則
表明不起作用,可通過點擊,反覆切換。例如,在上述所舉的學生檔案管理軟
件中,當選擇了某一年級時,系統就在對應年級菜單前打上“√”,表明正在
操作的是此年級的資料庫。要做到這一點,只要把菜單編輯器中相應菜單條的
“複選(C)"框選中即可,然後在菜單的驅動事件加入如下語句來切換該屬性:
mnu98dz.Checked=not mnu98dz.Checked
三、為命令選項設定訪問鍵(Access key)
功能表項目中帶有底線的字母,稱為該命令的訪問鍵,是為了方便使用鍵盤
的使用者而設定的,按Alt鍵和該字母時即可開啟該菜單,增加訪問鍵只要在菜
單編輯器的“標題(P)”框中,在要讓其成為訪問鍵的字母前加“&”即可,
當然,訪問鍵最好不要重複,否則系統只認定第一個有效。
四、為命令選項增加快速鍵(Shortcut Key)
某些功能表命令的右邊有一按鍵組合,稱為該命令的快速鍵,可以不開啟菜單
而直接按快速鍵來選擇執行此命令。為一個命令項增加一個快速鍵,可在菜單
編輯器中的“快速鍵(S)”列表框中為該命令項分配一個,列表中一個快捷
鍵只能被分配一次,否則系統會拒絕接受。
五、在要彈出對話方塊的命令選項後增加省略符號(...)提示使用者
Windows中,如果命令項後面有省略符號(...),表明選擇此命令將引出一
個對話方塊,從對話方塊系統要求使用者提供更多執行該命令所需的資訊,在設計時
只要在會引出對話方塊的功能表項目的標題後增加“(...)"提示即可。
六、用右指向的箭頭(→),來指引使用者選擇此項將引出串聯功能表
(Cascading Menu)
串聯功能表即所謂的子功能表,在VB中箭頭由系統根據菜單編輯器中設計菜單
大綱時所安排的“縮排”度而自動實現的,因此,關鍵是在設計菜單時合理安
排大綱中各功能表項目上下級的邏輯關係,在VB中最多 可以有四級子功能表。
七、對相關的命令用分隔條(Separate Bar)進行分組
為了讓使用者迅速地在菜單中找到他要執行的命令項,有必要對菜單中相關
的一組命令用分隔條進行 分組,如檔案菜單中,把有關列印輸出的一組
命令:“版面設定”、“預覽列印”、“列印”等用分隔條醒目地進行分隔。
這隻要在需要進行分組的命令之間插入一個特殊的命令條,該命令條的“標
題”為“-”,而“名稱”任意,因為在程式中一般不會引用此命令的名稱。
八、建立動態菜單,提高軟體的靈活性
動態菜單即運行時會伸縮的菜單,Windows中有許多軟體的[檔案] 功能表
中都具有記憶最近操作過的幾個文檔名的功能,在本文所舉例的學生檔案管理
軟體中,因為每年都會有新的學生到校,在形成新的年級時,要在“年級”菜
單中動態地增加新的年級名稱以供選擇和查詢,這首先要在設計時產生菜單命
令的控制項數組(Menu Control Array),在菜單的編輯器中加入一個菜單選項,
設其Index屬性設定為0,然後可以加入名稱相同(在本例中名稱為MnuNj),
Index值相鄰遞增的菜單選項(比如加入10個),設計時讓它們標題框均為空白留
作日後引用新年級名,並設這些備用菜單條的“可見”屬性為無效4目前不可
見。在有建立和刪年級庫功能的“系統初始化”菜單驅動事件中引
用這個數組名和索引值在“輸入與查詢”中動態地加進新的年級名選項,並且
讓可見或不可見(在刪除時):
Private AddMenu_Click() Counter=counter+1 Nj=Nj+1 'Nj是一個模組層級變數,初值為1998 MnuNj(counter).Caption= Nj & "年級" MnuNj(counter).Visible=Ture End Sub
Windows中許多應用程式的“檔案"菜單記住最近使使過的檔案名稱的實際方
法與此類似。
九、產生彈出式菜單,增強軟體的可操作性
有時為了方便使用者需要,為一些最常用的命令建立右鍵彈出式捷徑功能表,
這種菜單的前期設計和普 通菜單一樣,不同的是一般要先點擊“可見
(P)”框,讓此菜單不可見,然後在表單的MouseDown或 MouseUp事件中引
用PopupMenu方法來實現在表單上按下滑鼠右鍵時彈出此菜單:
Private Sub MdiForm1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If button=2 the Popupmenu MnuEdit 'MnuEdit為製作的要彈出的菜單 End Sub
PopupMenu方法將忽略初始設定的“不可見”屬性。
使用Windows下的其他軟體開發工具設計菜單時,情形與之類似。