VisualBasic工具欄、對話框_第1頁
VisualBasic工具欄、對話框_第2頁
VisualBasic工具欄、對話框_第3頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、VisualBasic 工具欄、對話框工具欄可以用工具欄進(jìn)一步增強(qiáng)應(yīng)用程序的菜單界面。工具欄 含有工具欄按鈕,它提供了對于應(yīng)用程序中最常用的命令的快速訪問。 例如: Visual Basic 的工具欄含有執(zhí)行常用命令的 ToolBarButton , 如"翻開"翻開已存在的工程、"保存"存儲當(dāng)前的工程,等等。創(chuàng)立工具欄 工具欄也稱為發(fā)條或者控制欄已經(jīng)成為許多基于Windows 的應(yīng)用程序的標(biāo)準(zhǔn)功能。工具欄提供了對于應(yīng)用程序中最 常用的菜單命令的快速訪問。使用 ToolBar 控件來創(chuàng)立工具欄非常 容易且很方便, 它在 Visual Basic 的專業(yè)版與

2、企業(yè)版中是可用的。 如 果使用的是 Visual Basic 學(xué)習(xí)版,那么可以像本章后面的 " 協(xié)調(diào)菜單與 工具欄的外觀 " 所描述的那樣用手工來創(chuàng)立工具欄。以下例如演示為 MDI 應(yīng)用程序創(chuàng)立工具欄的過程;在 標(biāo)準(zhǔn)窗體上創(chuàng)立一個工具欄的過程根本上一樣。要手工創(chuàng)立工具欄,請按照以下步驟執(zhí)行:1. 在 MDI 窗體上放置一個圖片框。 圖片框的寬度會自 動伸展,直到填滿 MDI 窗體工作空間。工作空間就是窗體邊框以內(nèi) 的區(qū) 域,不包括標(biāo)題條、菜單欄或所有的工具欄、狀態(tài)欄 或者可能在窗體上的滾動條 注意 只能把那些直接支持 Align 屬性的控件放置在MDI 窗體上圖片框是支持這

3、一屬性的的標(biāo)準(zhǔn)控件 。2. 在圖片框中,可以放置任何想在工具欄上顯示的控 件。典型地,用 CommandButton 或 Image 控件來創(chuàng)立工具欄按 鈕。圖 6.16 表示出了一個含有 Image 控件的工具欄。要在圖片框中添加控件,單擊工具欄中的控件按鈕, 然后在圖片框中畫出它。注意 當(dāng) MDI 窗體中包含了圖片框時,該 MDI 窗體的內(nèi)部區(qū)域不包括圖片框在內(nèi)。例如:MDI窗體的ScaleHeigh屬 性返回MDI 窗體的內(nèi)部高度,這個高度已不包括圖片框的高度。3. 設(shè)置設(shè)計(jì)時屬性。使用工具欄的一個好處是可以顯示一個形象的命令圖 示。 Image 控件是作為工具欄按鈕的一個很好的選擇,

4、因?yàn)榭梢杂盟?來顯示一個位圖。 在設(shè)計(jì)時設(shè)置其 Picture 屬性來顯示一個位圖; 這 樣,當(dāng)該按鈕被單擊時,即能提供一個命令執(zhí)行的可見信息。也可以 通過設(shè)置按鈕的 ToolTipText 屬性來使用工具提示,這樣,當(dāng)用戶把 鼠標(biāo)指針保持在一個按鈕上時,就可以顯示出該工具欄按鈕的名稱。4. 編寫代碼因?yàn)楣ぞ邫陬l繁地用于提供對其它命令的快捷訪問,因 而在大局部時間內(nèi)都是從每一個按鈕的 Click 事件中調(diào)用其它過程, 比方對應(yīng)的菜單命令。提示 可用一個不顯示工具欄的 MDI 窗體來使用在運(yùn) 行時不可見的控件 比方 Timer 控件。為了做到這一點(diǎn),在 MDI 窗 體上放置一個圖片框, 把控件放

5、到圖片框中, 然后把圖片框的 Visible 屬性設(shè)置為 False。編寫工具欄的代碼 工具欄用于提供訪問某些應(yīng)用程序命令的快捷方法。例 如:圖 6.16 中工具欄上的第一個按鈕就是 "新建文件 "命令的快捷鍵。 現(xiàn)在,可以在 MDINotePad 例如應(yīng)用程序中三個地方請求創(chuàng)立新文 件。1. 在MDI窗體上MDI窗體上文件菜單中的"新建 命令。2. 在子窗體上在子窗體 "文件" 菜單上的 "新建"命令。3. 在工具欄上 "新建文件 "按鈕。與其把這個代碼重復(fù)三次,還不如從子窗體的 mnuFileNew_

6、Click 事件取出原代碼, 然后把它放入子窗體的一個公 用過程中??梢詮纳厦嫒魏我粋€事件過程調(diào)用這個過程。以下是一個 例如:'這個例程在公共過程中。Public Sub FileNew Dim frmNewPad As New frmNotePad frmNewPad.ShowEnd Sub '在子窗體的 "文件"菜單上選取 "新建"。Private Sub mnuchildFileNew_Click ()FileNewEnd Sub'在 MDI 窗體的"文件"菜單上選取 "新建"。Pri

7、vate Sub mnumdiFileNew_Click ()frmNotePad.FileNewEnd Sub'在工具欄上單擊 "新建文件 "按鈕。Private Sub btnFileNew_Click ()frmNotePad.FileNewEnd Sub協(xié)調(diào)菜單與工具欄的外觀 當(dāng)由其它應(yīng)用程序提供的對象在窗體中被激活時,有許 多方法讓對象的菜單與工具欄出現(xiàn)在容器窗體內(nèi);然而,需要規(guī)定它 們將如何顯示。這一過程叫做用戶界面協(xié)調(diào),因?yàn)?Visual Basic 與 已經(jīng)鏈接或嵌入的對象必須協(xié)調(diào)容器窗體中的空間??刂撇藛蔚耐庥^通過設(shè)置窗體的 NegotiateMe

8、nus 屬性可以決定一個鏈接或嵌入的對象的菜單是否出現(xiàn)在容器窗體中。如果子窗體的NegotiateMenus 屬性置為 True (缺省),而且容器有一個定義的 菜單欄,那么,當(dāng)這個對象被激活時,它的菜單就放置在容器的菜單 欄中。如果容器沒有菜單欄,或者 NegotiateMenus 屬性被設(shè)置為 False,那么,當(dāng)這個對象激活時對象的菜單將不出現(xiàn)。注意 NegotiateMenus 屬性不適用于 MDI 窗體。 控制工具欄的外觀MDI 窗體的 NegotiateToolbars 屬性決定了鏈接或 嵌入對象的工具欄是不固定的調(diào)色板還是被放置在父窗體上。這種性 能不要求工具欄出現(xiàn)在 MDI 父

9、窗體上。如果 MDI 窗體的 NegotiateToolbars 屬性設(shè)為 True ,那么對象的工具欄出現(xiàn)在 MDI 父窗體上。如果 NegotiateToolbars 設(shè)為False,貝卩對象的工具欄 就為不固定的調(diào)色板。注意 NegotiateToolbars 屬性只用于 MDI 窗體。如果 MDI 窗體包含工具欄,它通常被包含在父窗體的 PictureBox 控件中。圖片框的 Negotiate 屬性決定了被激活時容器 的工具欄是繼續(xù)顯示還是被對象的工具欄所代替。如果 Negotiate 設(shè)置為True,那么除了容器的工具欄外還顯示對象的工具欄。如果 Negotiate 設(shè)置為Fals

10、e ,那么對象的工具欄代替容器的工具欄。注意 菜單與工具欄的協(xié)調(diào)只發(fā)生在支持現(xiàn)場激活的可 插入對象之上。 有關(guān)現(xiàn)場激活的詳細(xì)信息, 請參閱第十章 "用部件編程 " 。用以下過程可以看到這三個屬性如何交互作用。要執(zhí)行菜單與工具欄的協(xié)調(diào),請按照以下步驟執(zhí)行:1. 在 MDI 窗體中添加工具欄。這在本章前面的 " 創(chuàng)立 工具欄 "中描述過。2. 在子窗體上放置一個可插入的對象。3. 設(shè)置 NegotiateMenus 、NegotiateToolbars 以及Negotiate 屬性。4. 運(yùn)行此應(yīng)用程序,然后雙擊該對象。對話框在基于 Windows 的應(yīng)用程

11、序中,對話框被用來:提示用戶提供給用程序繼續(xù)執(zhí)行所需要的數(shù)據(jù)。向用戶顯示信息。例如,在 Visual Basic 中,用" 翻開文件 " 對話框來顯示 已存在的工程。 VisualBasic 中的 "關(guān)于 "對話框也是一個如何使用對 話框來顯示信息的例子。在菜單欄上單擊 "幫助",選擇 "關(guān)于 Visual Basic" 菜單項(xiàng),那么顯示 "關(guān)于 "對話框。模式與無模式的對話框?qū)υ捒虿皇悄J骄褪菬o模式的。模式對話框,在可以繼 續(xù)操作應(yīng)用程序的其他局部之前,必須被關(guān)閉隱藏或卸載 。例如, 如果一個

12、對話框,在可以切換到其它窗體或?qū)υ捒蛑耙笙葐螕?" 確定"或"取消",那么它就是模式的。Visual Basic 中的 "關(guān)于"對話框是模式的。顯示重要消 息的對話框總應(yīng)當(dāng)是模式的 - 那就是說,在繼續(xù)做下去之前,總是要 求用戶應(yīng)領(lǐng)先關(guān)上對話框或者對它的消息作出響應(yīng)。無模式的對話框允許在對話框與其他窗體之間轉(zhuǎn)移焦點(diǎn) 而不用關(guān)閉對話框。當(dāng)對話框正在顯示時,可以在當(dāng)前應(yīng)用程序的其 他地方繼續(xù)工作。無模式對話框很少使用。 Visual Basic 中"編輯 "菜 單中的 "查找"對話框就是一個無模

13、式對話框的實(shí)例。無模式對話框用 于顯示頻繁使用的命令與信息。要將窗體作為模式對話框顯示,請1. 使用 Show 方法,其 style 參數(shù)值為 vbModal 一 個值為 1 的常數(shù)。例如:' 將 frmAbout 作為模式對話框顯示。 frmAbout.Show vbModal 要將窗體作為無模式對話框顯示,請2. 使用不帶 style 參數(shù)的 Show 方法。 例如:' 將 frmAbout 作為無模式對話框顯示。 frmAbout.Show 注意 如果窗體顯示為模式對話框, 那么只有當(dāng)對話框關(guān)閉 之后,在 Show 方法后的代碼才能執(zhí)行。然而,當(dāng)窗體被顯示為無 模式對話框

14、時,在該窗體顯示出來以后, Show 方法后面的代碼緊接 著就會執(zhí)行。Show 方法另有一個可選參數(shù), owner ,可用來指定窗 體的父子關(guān)系??蓪⒛硞€窗體名傳給這個參數(shù),使得這個窗體成為新 窗體的擁有者。要顯示一個窗體,作為另一個窗體的子窗體,請這里 Show 方法有兩個參數(shù): style 和 owner 。例如:' 將 frmAbout 顯示為 frmMain 的無模式子窗體。frmAbout.Show vbModeless, frmMain在 Show 方法中使用 owner 參數(shù),確保對話框在它的父窗體最小化時它也最小化,或者在其父窗體關(guān)閉時它也卸載。預(yù)定義對話框的使用在應(yīng)用

15、程序中添加對話框最容易的方法是使用預(yù)定義對話框,因?yàn)椴槐乜紤]設(shè)計(jì)、裝載或者顯示對話框方面的問題。然而, 控件在其外觀上要受到限制。預(yù)定義的對話框總是模式的。下表列出了 Visual Basic 應(yīng)用程序中添加預(yù)定義對話框時能使用的函數(shù)。用輸入框來提示輸入應(yīng)用 InputBox 函數(shù)請求提供數(shù)據(jù)。 這個函數(shù)顯示要求輸入數(shù)據(jù)的模式對話框。圖 6.17 所示的文本輸入框提示輸入要翻開 文件的名稱。以下代碼顯示圖 6.17 中所示的輸入框。FileName = InputBox("Enter file to open:", "FileOpen")注意 切記當(dāng)使用

16、 InputBox 函數(shù)時,對對話框的各部分的控制非常有限。只能改變標(biāo)題欄中的文本、顯示給用戶的命令提 示、對話框在屏幕上的位置以及它是否顯示一個 "幫助 "按鈕 詳細(xì)信息 請參閱?語言參考?的 "InputBox 函數(shù)" 。 用消息對話框顯示信息可以用 MsgBox 函數(shù)獲得 "是"或者 "否"的響應(yīng),并顯 示簡短的消息,比方:錯誤、警告或者對話框中的期待??赐赀@些消 息以后,可選取一個按鈕來關(guān)閉該對話框。如果文件不能翻開,那么名為 Text Editor 的應(yīng)用程序 就會顯示如圖 6.18 所示的消息對話框。以

17、下代碼顯示如圖 6.18 所示的消息框:MsgBox "Error encountered while trying to openfile, _please retry.", vbExclamation, "Text Editor"注意 所謂模式的, 既可以局限于應(yīng)用程序中, 也可以局 限于系統(tǒng)中。 如果消息框的模式局限在應(yīng)用程序中 缺省,那么在這個 對話框未消失之前不能切換到該應(yīng)用程序的其他局部,但是可以切換 到其他應(yīng)用程序。在消息框未消失之前系統(tǒng)的模式消息框不允許切換 到別的應(yīng)用程序。詳細(xì)信息 請參閱?語言參考?的 "MsgBox 函數(shù)

18、"。用窗體作為自定義對話框 自定義對話框就是用戶所創(chuàng)立的含有控件的窗體 - 這些 控件包括命令按鈕、選取按鈕和文本框 - 它們可以為應(yīng)用程序接收信 息。通過設(shè)置屬性值來自定義窗體的外觀。也可以編寫在運(yùn)行時顯示對話框的代碼。要創(chuàng)立自定義對話框,可以從新窗體著手,或者自定義 現(xiàn)成的對話框。如果重復(fù)過多,可以建造能在許多應(yīng)用程序中使用的 對話框的集合。要自定義現(xiàn)存的對話框,請按照以下步驟執(zhí)行:1. 從"工程"菜單中選取 "添加窗體 ",在工程中添加一現(xiàn) 存的窗體。2. 從"文件"菜單中選取 "filename 另存為 &

19、quot;并輸入新的 文件名這可以防止改變已存在的窗體版本 。3. 根據(jù)需要自定義窗體的外觀。4. 在代碼窗口中自定義事件過程。要創(chuàng)立新的對話框,請按照以下步驟執(zhí)行:1. 從"工程"菜單中選取 "添加窗體 "。- 或者 -在工具欄上單擊 "窗體 "按鈕,創(chuàng)立新的窗體。2. 如有必要,自定義窗體外觀。3. 在"代碼 "窗口中自定義事件過程。有很大的自由來定義自定義對話框的外觀。它可以是固定的或可移動的、模式或無模式的。它可以包含不同類型的控件;然而,對話框通常不包括菜單欄、窗口滾動條、最小化與化按鈕、狀態(tài)條或者尺寸可

20、變的邊框。本主題余下的局部將討論創(chuàng)立典型類型的對 話框方法。添加標(biāo)題對話框總應(yīng)當(dāng)有標(biāo)識它的標(biāo)題。要創(chuàng)立標(biāo)題,設(shè)置該窗 體的 Caption 屬性為將在標(biāo)題條中顯示的文本字符串。通常,這一 步是在設(shè)計(jì)時使用 "屬性 "窗口來完成的,但也可以用代碼來完成這一 步。例如:frmAbout.Caption = "About"提示 如果想完全刪除此標(biāo)題欄,可以設(shè)置窗體的ControlBox、MinButton和 MaxButton為 False;設(shè)置BorderStyle 為尺寸不可變的設(shè)置 (0、 1 或 3),并設(shè)置 Caption 為 空字符串 ("

21、;") 。設(shè)置標(biāo)準(zhǔn)對話框的屬性 一般來說,用戶響應(yīng)對話框時,先提供信息,然后用 " 確定"或者"取消 "命令按鈕關(guān)閉對話框。 因?yàn)閷υ捒蚴桥R時性的, 用戶 通常不需要對它進(jìn)行移動、 改變尺寸、 化或最小化等操作。 其結(jié)果是: 隨新窗體出現(xiàn)的可變尺寸邊框類型、"控制"菜單框、 "化"按鈕以及 "最小化 "按鈕,在大多數(shù)對話框中都是不需要的。通過設(shè)置 BorderStyle 、 ControlBox 、 MaxButton 和 MinButton 屬性,可以刪除這些工程。 例如,"

22、;關(guān)于 "對話框可能使用 以下的屬性設(shè)置。記住,如果刪除 "控制 "菜單框 ( ControlBox = False ) , 那么必須向用戶提供退出該對話框的其它方法。實(shí)現(xiàn)的方法通常是在對 話框中添加 "確定"、"取消 "或者"退出"命令按鈕,并在隱藏或卸載該 對話框的 Click 按鈕事件中添加代碼。添加和放置命令按鈕 模式對話框必須至少包含一個退出該對話框的命令按 鈕。通常用兩個命令按鈕:其中一個按鈕開始動作,而另一個按鈕關(guān) 閉該對話框而不做任何改變。 典型狀態(tài)是,這兩個按鈕的 Caption 屬 性

23、設(shè)置 "確定"與"取消"。在這個方案中, "確定"命令按鈕的 Default 屬性設(shè)置為 True ,而 Cancel 命令按鈕的 Cancel 屬性設(shè)置為 True。雖然"確定"與"取消"是最常用的按鈕,其他的按鈕標(biāo)題組合也 可使用。顯示消息的對話框通常使用 Label 控件來顯示錯誤消 息或者命令提示,并且用一至兩個命令按鈕來執(zhí)行動作。例如,也許 給標(biāo)識的 Caption 屬性賦以錯誤消息或者命令提示,而給兩個命令 按鈕控件的 Caption 屬性指定 "是"與"

24、;否"。當(dāng)用戶選取 "是",那么發(fā)生 一個動作,中選取 "否"時,那么發(fā)生另一個動作。這種類型對話框的命令按鈕通常被放置在對話框的底部 或右邊,而頂部或左邊的按鈕為缺省按鈕,如圖 6.19 所示。設(shè)置缺省、取消和焦點(diǎn)命令按鈕控件提供了以下的屬性:DefaultCancelTabIndex按鈕就是當(dāng)用戶按下 ENTER 鍵時選中的按鈕。 在一個 窗體上,只能有一個命令按鈕的 Default 屬性可以設(shè)置為 True 。按 下 ENTER 鍵就調(diào)用缺省命令按鈕的 Click 事件。這個功能連同編輯 控件比方 TextBox 一起工作。例如,可以在文

25、本框中鍵入數(shù)據(jù), 然后按下 ENTER 鍵來產(chǎn)生 Click 事件,以取代選取 "確定 "按鈕。"取消 "按鈕就是當(dāng)按下 ESC 鍵時選中的按鈕。在一個 窗體上,只能有一個命令按鈕的 Cancel 屬性可以設(shè)置為 True 。按 下 ESC 鍵調(diào)用"取消"命令按鈕的 Click 事件。 "取消"按鈕也可以為 缺省命令按鈕。要指定對話框的 "取消 "按鈕,設(shè)置該命令按鈕的 Cancel 屬性為 True 。提示 一般說來,代表最可靠的或者最平安的操作的按鈕 應(yīng)當(dāng)是缺省按鈕。例如,在 "文

26、本替換"對話框中, "取消"應(yīng)當(dāng)是缺省 按鈕,而不是 "全部替換 "。也可以指定當(dāng)對話被顯示時具有焦點(diǎn)的按鈕。當(dāng)窗體被 顯示時,帶有最低的 TabIndex 設(shè)置的控件接收焦點(diǎn)。按下 ENTER 鍵會調(diào)用缺省命令按鈕或者有焦點(diǎn)的命令按鈕的 Click 事件。要在窗 體被顯示時將焦點(diǎn)給某個命令按鈕,那么設(shè)置該命令按鈕的 TabIndex 為 0,它的 TabStop 屬性為 True 。也可以用 SetFocus 方法在窗 體被顯示時將焦點(diǎn)給指定的控件。詳細(xì)信息 請參閱?語言參考?的 "TabIndex 屬性 "與 "TabStop 屬性 "。使對話框上的控件無效有時候需要使控件無效,因?yàn)樗鼈兊膭幼髟诋?dāng)前的上下文中不適用。例如,當(dāng) Visual Basic 的"查找"對話框第一次顯示時, " 查找下一個 "按鈕應(yīng)無效,如圖 6.20 所示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論