Visual Basic 程序設計教程(第2版)第4章end_第1頁
Visual Basic 程序設計教程(第2版)第4章end_第2頁
Visual Basic 程序設計教程(第2版)第4章end_第3頁
Visual Basic 程序設計教程(第2版)第4章end_第4頁
Visual Basic 程序設計教程(第2版)第4章end_第5頁
已閱讀5頁,還剩188頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章用戶界面設計4.1界面設計概述4.2菜單設計

4.2.1菜單的基本結構

4.2.2創(chuàng)建下拉式菜單

4.2.3創(chuàng)建彈出式菜單

4.2.4在菜單中添加文件列表4.3工具欄設計

4.3.1向工具箱加入ToolBar控件

4.3.2向窗體上添加ToolBar控件

4.3.3ImageList控件的使用

4.3.4將ImageList和ToolBar控件相關聯(lián)

4.3.5利用ToolBar控件創(chuàng)建快捷按鈕

4.3.6ToolBar控件常用的事件和方法4.4狀態(tài)欄設計4.5對話框設計

4.5.1使用函數(shù)生成對話框

4.5.2通用對話框

4.5.3自定義對話框4.6多文檔界面設計返回第4章用戶界面設計

本章目的:通過本章學習了解和掌握有關VB界面的基本設計方法。本章的重點是菜單、工具欄、狀態(tài)欄、對話框的設計方法。難點是多文檔界面的設計。4.1界面設計概述用戶界面是應用程序的一個最重要的組成部分。在開發(fā)應用程序時,第一步要創(chuàng)建一個美觀、易用的界面,它是用戶與應用程序進行交互的可視部分。界面設計的一個重要原則就是一致性,包括窗體圖標的一致性和色彩搭配的一致性,以及窗體大小的一致性等等。界面設計的另一個重要原則就是簡單化。4.2菜單設計

菜單分為兩種,即下拉式菜單和彈出式菜單。

1.下拉式菜單的結構菜單的基本結構包括:菜單欄、菜單標題、一級菜單、子菜單。在菜單中包含的界面元素有:菜單項、快捷鍵、賦值訪問鍵、分隔條、子菜單提示符等,如圖所示。VisualBasic最多只允許有5層子菜單。2.彈出式菜單彈出式菜單是在Windows中常用的浮動式菜單。該類菜單不是固定在窗體的上部,而是使用鼠標右鍵觸發(fā),定位于鼠標所在的位置。彈出式菜單又可稱為上下文菜單或快捷菜單。

4.2.1創(chuàng)建菜單菜單編輯器是菜單設計的基本工具,使用“菜單編輯器”可以為應用程序創(chuàng)建自定義菜單并定義其屬性。4.2.1

創(chuàng)建菜單1.菜單編輯器的使用打開方法:(1)“工具”→“菜單編輯器”(2)單擊工具欄中的“菜單編輯器”按鈕。(3)在窗體中單擊右鍵,在彈出的快捷菜單中(如圖所示)選擇“菜單編輯器”菜單項。4.2.1

創(chuàng)建菜單打開后的菜單編輯器窗口如圖所示4.2.1

創(chuàng)建菜單“標題”輸入框用來輸入用戶建立的菜單的名稱。

“名稱”輸入框輸入各菜單標題及菜單項的控制名??刂泼浴癿nu”作為前綴??刂泼脕碓诖a編輯時,代表菜單標題或菜單項。

“索引”輸入框用來建立控件數(shù)組下標。

“快捷鍵”列表框列出可供用戶選擇的快捷鍵。

4.2.1創(chuàng)建菜單

“幫助上下文ID”輸入框用戶通過輸入數(shù)字來選擇幫助文件中特定的頁數(shù)或與該菜單上下文相關的幫助文件。

“協(xié)調位置”列表框用戶通過這一列表框來確定菜單是否出現(xiàn)或怎樣出現(xiàn)。

“復選”框用戶可以設置某一菜單項是否可選。4.2.1創(chuàng)建菜單“有效”框

“有效”框用來設置該菜單是否可執(zhí)行。如果不選中,這一菜單是無效的,不能被訪問,呈灰色顯示。

“可見”框“可見”框用來決定菜單和菜單項是否可見

“顯示窗口列表”框“顯示窗口列表”框可設置在使用多文檔應用程序時,是否使菜單控件中有一個包含當前打開的多文檔文件子窗口的列表框。4.2.1創(chuàng)建菜單箭頭按鈕

上下箭頭按鈕可將選中的菜單項向上或向下移動一位,可以改變菜單中各菜單項的順序。

左右箭頭按鈕用于將菜單項向左或向右縮進四格距離。

菜單項向右縮進四格距離,表示其為子菜單

“下一個”按鈕用于移到下一個選擇項?!安迦搿卑粹o用于插入菜單項。

“刪除”按鈕用于刪除某菜單名或菜單項。

4.2.1創(chuàng)建菜單在“菜單編輯器”窗口的下部是一個空白列表框,稱為菜單控件列表框,可以列出用戶為窗體設計的全部菜單標題和菜單項。

菜單標題和菜單下的菜單項也都是控件,菜單控件只包含一個事件即Click事件。2.在菜單編輯器中創(chuàng)建菜單的方法以下圖所示的菜單為例

4.2.1

創(chuàng)建菜單4.2.1創(chuàng)建菜單(1)選取要添加菜單的窗體。(2)從“工具”菜單中,選擇“菜單編輯器”命令或者單擊標準工具欄上的“菜單編輯器”按鈕,顯示菜單編輯器窗口。(3)在“標題”文本框中,輸入“文件&F”。菜單標題文本會顯示在菜單控件列表框中。(4)在“名稱”文本框中,輸入菜單的控制名mnufile,該名字將用在代碼中引用該菜單控件。4.2.1

創(chuàng)建菜單(5)單擊向左或向右箭頭按鈕,可以改變該控件的縮進級。即為菜單創(chuàng)建菜單項,如本例中的新建、打開、關閉、保存菜單項等。在菜單編輯器中,每一縮進級都使用4個點“????”表示。如圖所示。

4.2.1創(chuàng)建菜單4.2.1

創(chuàng)建菜單(6)單擊“下一個”按鈕可以再建一個菜單控件。也可單擊“插入”按鈕,在現(xiàn)有的控件之間增加一個菜單控件,即在本例中創(chuàng)建編輯、格式和幫助菜單和菜單項。也可以單擊向上或向下的箭頭按鈕,在現(xiàn)有的菜單控件之中移動控件,改變它們之間的相對位置。(7)如果窗體所有的菜單控件都已創(chuàng)建,菜單編輯器下部的列表框列出了當前窗體的所有菜單控件,單擊“確定”按鈕可關閉菜單編輯器。

4.2.1創(chuàng)建菜單位于列表框中左側平齊的菜單控件作為主菜單顯示在菜單欄中。列表框中縮進過的菜單控件,需單擊其主菜單標題時,才能在菜單上顯示。一個縮進過的菜單控件,后面緊跟再次縮進過的菜單控件,它作為一個子菜單顯示。在子菜單下縮進的各個菜單控件,作為該子菜單的菜單項顯示。

3.分隔菜單項

如圖所示的“文件”菜單就被分隔線分成三組。4.2.1創(chuàng)建菜單創(chuàng)建分隔線的具體方法如下:(1)若菜單中已有菜單項,應選擇“插入”按鈕,在想要分隔開來的菜單項之間插入一個菜單控件。(2)在“標題”文本框中鍵入一個連字符“-”。(3)在“名稱”文本框中輸入該菜單控件的名字。(4)單擊“確定”按鈕,關閉菜單編輯器。4.設置訪問鍵和快捷鍵訪問鍵用于在鼠標失效時,為用戶操4.2.1創(chuàng)建菜單作菜單提供的按鍵選擇。即使鼠標工作正常,用戶也可以通過訪問鍵用鍵盤操作。使用訪問鍵時,要同時按下<Alt>鍵和該字母鍵。訪問鍵的設置是在菜單編輯器的菜單控件列表框中選擇要賦值訪問鍵的菜單項。在“標題”框中,在要作為訪問鍵字符的前面直接鍵入一個&符號,該符號后的字母為該菜單的訪問鍵。運行時,菜單的訪問鍵顯示時帶有下劃線。4.2.1創(chuàng)建菜單快捷鍵為鍵盤上的功能鍵或它們與其他字母鍵的組合。有了快捷鍵,可以在不操作菜單項的情況下,直接通過快捷鍵執(zhí)行相應的命令。菜單項快捷鍵的設置可直接在該菜單項的屬性窗口選擇,也可以在“菜單編輯器”的“快捷鍵”下拉列表框中選擇,如下圖所示。如果不需要快捷鍵,應選擇列表頂部的“None”選項。

5.創(chuàng)建子菜單使用菜單編輯器創(chuàng)建的每個菜單最多可以包含5級子菜單。子菜單控件可以包括子菜單項分隔線和子菜單標題。菜單項“顏色”有子菜單“前景色”和“背景色”,它們在菜單編輯器列表框中顯示如下圖所示。

4.2.1創(chuàng)建菜單在菜單編輯器中創(chuàng)建子菜單方法如下:(1)創(chuàng)建想作為子菜單標題的菜單項“顏色”。(2)再創(chuàng)建將出現(xiàn)在子菜單中的各個項“前景色”和“背景色”。(3)然后單擊向右箭頭按鈕將它們縮進。菜單的每一個菜單項都可以看作是一個控件,而且只有一個可觸發(fā)的事件,就是Click事件。可以在菜單的Click事件過程中輸入程序代碼。4.2.2創(chuàng)建彈出式菜單彈出式菜單是獨立于窗體菜單欄而顯示于窗體任何位置的浮動菜單。彈出式菜單的顯示取決于按下鼠標右鍵時指針所處的位置。將“編輯”菜單下的菜單項作為一個彈出式菜單,運行后用戶在窗體上任意位置單擊鼠標右鍵,就會彈出一個彈出式菜單,菜單內容是“編輯”菜單下的菜單項如下圖所示。4.2.2創(chuàng)建彈出式菜單4.2.2創(chuàng)建彈出式菜單(1)在“菜單編輯器”建立一個將要作為彈出式菜單的主菜單項。如本例中的“編輯”主菜單項,該主菜單項的標題(Caption屬性)為“編輯(&E)”,名稱(Name屬性)為EDIT,所包含的菜單項為“剪切”、“復制”、“粘貼”。建好彈出式菜單所需的菜單后,可以把“編輯”的Visible屬性設置為False,也可以為True。(2)為建立好的彈出式菜單編寫程序代碼。在代碼窗口中選擇Form對象,再在過程列表框中選擇MouseUp,則出現(xiàn)Form_MouseUp事件過程的模板。4.2.2創(chuàng)建彈出式菜單PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

EndSub在事件過程模板中添加下列代碼:IfButton=2Then′檢查是否單擊鼠標右鍵

PopupMenuEDIT′EDIT是“編輯”菜單的控制名,將其激活顯示在窗體上EndIf對于上例,利用窗體的MouseUp事件4.2.2創(chuàng)建彈出式菜單在窗體中單擊鼠標右鍵時,上述代碼可將控制名為EDIT彈出式菜單激活顯示在鼠標所在處。要顯示彈出式菜單,可使用PopupMenu方法。PopupMenu方法的語法是:[object.]PopupMenu

menuname[,flags[,x[,y[,boldcommand]]]] object:窗口名稱表達式。Menuname:為所要顯示的彈出式菜單名(本例編輯菜單名為EDIT)。4.2.2創(chuàng)建彈出式菜單Flags:一個數(shù)值或常數(shù),按照下列設置中的描述,用以指定彈出式菜單的位置和行為,如下面兩個表所示。

位置常數(shù)值描述VbPopupMenuLeftAlign0缺省。指定的X位置定義了彈出式菜單的左邊界VbPopupMenuCenterAlign4彈出式菜單以指定的X位置為中心VbPopupMenuRightAlign8指定的X位置定義了彈出式菜單的右邊界4.2.2創(chuàng)建彈出式菜單行為常數(shù)值描述VbPopupMenuLeftButton0缺省。僅當使用鼠標左鍵時,彈出式菜單中的項目才響應鼠標單擊VbPopupMenuRightButton2不論使用鼠標左鍵還是右鍵,彈出式菜單中的項目都響應鼠標單擊4.2.2創(chuàng)建彈出式菜單X,Y:指定顯示彈出式菜單的X,Y坐標。如果該參數(shù)省略,則使用鼠標的坐標。Boldcommand:指定彈出式菜單中的菜單控件的名字,用以顯示其黑體正文標題。如果該參數(shù)省略,則彈出式菜單中沒有以黑體字出現(xiàn)的控件。要創(chuàng)建一個不顯示在菜單欄里的菜單,可在設計時使該菜單項目為不可見(在菜單編輯器中消除“可見”復選框)。4.2.2創(chuàng)建彈出式菜單例4.1設計一個彈出式菜單(見圖4.11)來改變窗體標簽中的字體。

程序代碼如下:PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2ThenPopupMenu

zt,2EndIfEndSubPrivateSubzt1_Click()Label1.FontName="宋體"EndSubPrivateSubzt2_Click()Label1.FontName="黑體"EndSubPrivateSubzt3_Click()Label1.FontName="楷體_GB2312"EndSubPrivateSubzt4_Click()Label1.FontName="隸書"EndSub4.2.3在菜單中添加文件列表當打開一個新的文件,將在“文件”菜單的最下面增加一個新的菜單項,該菜單項的標題就是所打開文件的文件名。實現(xiàn)這樣的功能,要用到菜單控件數(shù)組。菜單控件數(shù)組,與普通數(shù)組沒有本質的區(qū)別,只是數(shù)組中的元素是菜單控件,而不是其他類型的數(shù)據。菜單控件數(shù)組中的每一個元素都由唯一的索引值來標識,索引值由Index屬性確定。Index屬性值可以在菜單編輯器的“索引”文本框中指定。4.2.3在菜單中添加文件列表當菜單控件數(shù)組的某一元素識別Click事件時,系統(tǒng)將其索引值作為參數(shù)傳給Click事件過程。Click事件過程根據傳進來的索引值判斷選中的是哪個菜單項。設計時創(chuàng)建菜單控件數(shù)組如下圖所示,創(chuàng)建菜單控件數(shù)組方法如下:4.2.3在菜單中添加文件列表(1)在“工具”菜單中選擇“菜單編輯器”選項或單擊工具欄上的“菜單編輯器”按鈕,顯示菜單編輯器窗口。(2)在“文件”菜單的退出前加入一個分隔線,將其Visible屬性設置為False,該分割線作為菜單數(shù)組的第一個元素,它的名稱(Name屬性)mnufile是菜單數(shù)組名,索引為0。(3)在同一縮進級上創(chuàng)建第二個菜單項,并將第二個菜單項的名稱設為與第一個菜單項相同,索引值為1。4.2.3在菜單中添加文件列表(4)依次建立菜單數(shù)組的其他項,標題分別為file1、file2、file3、file4,索引分別為1、2、3、4,這些數(shù)組菜單項的Visible屬性均為False,表示可以顯示4個最近打開的文件名。例4.2在“文件”菜單中動態(tài)地顯示最近訪問過的文件列表。在窗體上選擇“File”菜單中的“Open”菜單項,在“打開”對話框中選擇一個文件,窗體上的文本框用于顯示所打開的文件名和文件路徑。然后關閉窗體,再次打開時,在“File”菜單下的文件列表中出現(xiàn)最近一次打開的文件名。在本例中,appname為“MM”,section為“User”。代碼清單DimCounAsInteger′最后打開的文件的個數(shù)DimFName(4)AsString′最后打開的文件的名字DimFCloseAsBoolean

′文件是否被關閉DimOFileAsString

′當前打開的文件名PrivateSubForm_Load()OnErrorGoToErr′錯誤處理DimiAsIntegerFClose=TrueCoun=GetSetting("MM","User","FileCount")′取最后打開的文件個數(shù)IfCoun=0Then′如果為0則退出

ExitSubEndIfFori=0ToCoun

′不為0Loadmnufile(5+i)′創(chuàng)建新的菜單控件

FName(i)=GetSetting("MM","User","FileName"+Trim(Str(i)))

′取注冊表中的文件名

IfLen(FName(i))>10Then′如果文件太長則處理

mnufile(5+i).Caption=Mid(FName(i),1,5)+".."+

Mid(FName(i),Len(FName(i))-6,6)Elsemnufile(5+i).Caption=FName(i)′否則直接將文件名作為菜單

EndIf

mnufile(5+i).Visible=True′使新的菜單控件可見NextiExitSubErr:′錯誤處理,認為沒注冊SaveSetting"MM","User","FileCount",0′注冊FILECOUNTSaveSetting"MM","User","FileName0","."′注冊FILENAMEEndSubPrivateSubForm_Unload(CancelAsInteger)DimiAsIntegerIfFClose=FalseThen′文件沒有關閉的處理IfMsgBox("FileNotClose.AreCloseIt?",vbOKCancel,"Error")=vbCancelThenExitSubEndIfEndIfIfOFile=""Then′沒有打開文件的處理

ExitSubEndIfFori=1ToCoun

′打開的文件已經在注冊表中的處理

IfFName(i)=OFileThenExitSubEndIfNextiIfCoun=4Then′注冊表中已經有4個文件的處理

Fori=1To3

FName(i)=FName(i+1)NextiFName(4)=OFileFori=1To4

SaveSetting"MM","User","FileName"+Trim(Str(i)),FName(i)NextiElse′注冊表中少于4個文件的處理

Coun=Coun+1

SaveSetting"MM","User","FileName"+Trim(Str(Coun)),OFile

SaveSetting"MM","User","FileCount",CounEndIfEndSubPrivateSubmnufile_Click(IndexAsInteger)SelectCaseIndexCase1′open

′打開文件

cdlo.Filter="AllFiles|*.*"

cdlo.ShowOpen

OFile=cdlo.FileName

txtShow.Text=OFile

′在提示中顯示

FClose=FalseCase2′close

FClose=True′關閉文件

txtShow.Text=""

Case3′-

Case4′exitUnloadForm1′關閉窗體

End

Case5′file1

txtShow.Text=FName(1)′選擇了第一個文件

OFile=FName(1)Case6′file2

txtShow.Text=FName(2)

OFile=FName(2)Case7′file3

txtShow.Text=FName(3)

OFile=FName(3)Case8′file4

txtShow.Text=FName(4)

OFile=FName(4)EndSelect

EndSub在本例中使用了GetSetting函數(shù)和SaveSetting語句,其語法格式為:

SaveSetting

appname,section,key,setting

GetSetting(appname,section,key[,default])例如:Coun=GetSetting("MM","User","FileCount")′檢索FileCount注冊表項的設置值SaveSetting"MM","User","FileCount",Coun′將Coun的值保存到注冊表中4.3工具欄設計工具欄已經成為Windows應用程序常用的界面元素。工具欄含有帶圖形的命令按鈕,它提供了對應用程序中常用命令的快速訪問,通過工具欄可以更方便用戶操作。在VisualBasic中,可以用ToolBar控件和ImageList控件創(chuàng)建工具欄。4.3.1ImageList控件ImageList控件為其他控件保管圖像,可以把它視為一種圖像倉庫。用戶可以不編寫裝載位圖或圖標(使用LoadPicture函數(shù))的代碼,而是一次性將用到的所有圖像填充到ImageList中。在需要的時候設置Key的值,然后在代碼中使用key或Index屬性引用所需的圖像。ListImage對象的屬性4.3.1ImageList控件屬性功能Index產生控件數(shù)組Key讀取或設置用于在一個集合中識別一個對象的串字符Picture返回或設置將顯示在控件中的圖片(1)用鼠標右鍵單擊ImageList控件,然后在彈出菜單中單擊“屬性”項,顯示出ImageList控件的“屬性頁”對話框。(2)單擊“圖像”選項卡。(3)單擊“插入圖片”按鈕,顯示“選定圖片”對話框。(4)用該對話框找到位圖或圖標文件,單擊“打開”按鈕將選中的圖片插入到圖像列表框中,為該圖像賦予唯一的Key屬性和Tag屬性,最后單擊“確定”按鈕,選定的圖片就加到控件中了。(5)單擊“關鍵字”框,在其中鍵入一個字符串,為該圖像賦予唯一的Key屬性。(6)重復上述操作依次裝入工具欄所需的全部圖像,為每一個圖像指定唯一的關鍵字。4.3.1ImageList控件4.3.2ToolBar控件ToolBar控件屬于系統(tǒng)擴充的ActiveX控件。使用時必須將其加入工具箱中,步驟如下:(1)在“工程”菜單中選擇“部件”菜單項,打開“部件”對話框。(2)在“部件”對話框的部件列表中找到“MicrosoftWindowsCommonControl6.0”,并用鼠標單擊其左邊的復選框。(3)單擊“確定”按鈕,部件被添加到“工具箱”面板上,共有9個控件添加到“工具箱”中,其中有要用到的ToolBar、

StatusBar和ImageList等控件。4.3.2ToolBar控件把ToolBar控件置入窗體的方法與一般控件的方法一樣,雙擊ToolBar控件,該控件被自動放在窗體內的上邊。如果窗體內有菜單,ToolBar控件緊挨在菜單下面。然后,設置其Align屬性,該屬性決定工具欄放在窗體的哪一位置。ToolBar控件的Align屬性與工具欄位置的對應關系見下表所示。

Align屬性VB常數(shù)工具欄的位置0VbAlignNone不對齊1VbAlignTop(缺省值)對齊窗口客戶區(qū)頂端2VbAlignBottom對齊窗口客戶區(qū)底端3VbAlignLeft對齊窗口客戶區(qū)左邊4VbAlignRight對齊窗口客戶區(qū)右邊4.3.2ToolBar控件1.ToolBar控件的屬性頁用鼠標右鍵單擊窗體上的ToolBar控件,在彈出菜單中選擇“屬性”菜單項,可以打開ToolBar控件的屬性對話框,如下圖所示。4.3.2ToolBar控件此對話框有三個屬性頁,缺省的是“通用”屬性頁,在這個屬性頁中可以設計工具欄的樣式、外觀、鼠標指針、按鈕寬度、圖像列表等等。例如:可以在“外觀”選項處可以看到系統(tǒng)默認為立體的(1-cc3D),若設置為0-ccFlat,則工具欄是平面式的。把“樣式”從0-tbrStandard改變?yōu)?-tbrPlatform,可以把工具欄的風格變?yōu)閃indows98的風格。

4.3.2ToolBar控件當選擇ToolBar控件的屬性頁對話框的“按鈕”頁時,可以進行按鈕索引、插入按鈕、刪除按鈕、關鍵字、標題、按鈕樣式等內容的設計。當選擇ToolBar控件的屬性頁對話框的“圖片”頁時,主要是選擇當窗體運行時,鼠標進入工具欄變成圖形化的鼠標所需要的圖片。當選擇ToolBar控件的屬性頁對話框的“按鈕”頁時,可以進行按鈕索引、插入按鈕、刪除按鈕、關鍵字、標題、按鈕樣式等內容的設計。

4.3.2ToolBar控件2.ToolBar控件的常用屬性(1)Imagelist屬性該屬性設置與ToolBar相關聯(lián)的Imagelist對象。工具欄按鈕的圖像是由與該屬性相關的Imagelist控件提供的。(2)DisableImageList屬性該屬性設置另一個Imagelist控件與ToolBar控件的關聯(lián),工具欄按鈕在被禁用時可調用該關聯(lián)的Imagelist控件中的圖像。4.3.2ToolBar控件(3)HotImageList屬性 該屬性設置另一個Imagelist控件與ToolBar控件的關聯(lián),工具欄按鈕在被按下時可調用該關聯(lián)的Imagelist控件中的圖像。(4)ShowTips

屬性該屬性決定程序運行中,鼠標指針移到工具欄按鈕時,是否出現(xiàn)該按鈕的文本提示。4.3.2ToolBar控件(5)Visible屬性設置工具欄是否可見。(6)Style屬性用于設置工具欄按鈕的樣式。4.3.2ToolBar控件雙擊工具箱中的ToolBar按鈕,窗體上會出現(xiàn)一個ToolBar控件,按以下步驟可以完成ImageList和ToolBar控件相關聯(lián)。(1)用鼠標右鍵單擊ToolBar控件,并單擊“屬性”以顯示該控件的“屬性頁”對話框。

(2)單擊下圖所示的“圖像列表”列表框右邊的下拉箭頭,從下拉列表中選擇相關聯(lián)的ImageList控件,其他各項采用默認值。4.3.2ToolBar控件4.3.2ToolBar控件按照以下步驟可在窗體上完成創(chuàng)建工具欄快捷按鈕。(1)單擊“屬性頁”對話框中的“按鈕”選項卡。(2)單擊“插入按鈕”后,“索引”文本框中出現(xiàn)數(shù)字1,其他輸入框為可用,如下圖所示。4.3.2ToolBar控件4.3.2ToolBar控件(3)“圖像”輸入框設為1,并鍵入ImageList對象的Key值。(4)重復上述步驟以添加更多的按鈕,并將圖像賦予給新添加的Button對象。(5)單擊“應用”按鈕,設置完屬性的窗口。在“屬性頁”對話框的“通用”選項卡中,將工具欄的“外觀”和“邊框樣式”屬性都設置為1,可以使工具欄更加突出、漂亮。

4.3.2ToolBar控件在“屬性頁”對話框的“按鈕”選取項卡中可以設定按鈕的“樣式”屬性。該屬性有五種選擇:(1)普通按鈕(0-tbrDefault)

如果按鈕所代表的功能不依賴于其他功能,使用Default按鈕樣式。例如該按鈕被按下,完成功能后它會自動彈回。一般系統(tǒng)中的“新建”、“打開”和“保存”按鈕,都屬于該式樣按鈕。(2)開關按鈕(1-tbrCheck)

當按鈕代表的功能是某種開關類型時,可使用Check樣式。4.3.2ToolBar控件(3)編組按鈕(2-thrButtonGroup)

當一組功能相互排斥時,可以使用ButtonGroup樣式。相互排斥的意思是說一組功能同時只能有一個有效。(4)分隔按鈕(3-thrSeparator)

分隔符類型只是創(chuàng)建寬度為八個像素的按鈕,此外沒有任何功能,分隔符樣式的按鈕可以將其他按鈕分隔開,或者用它將ButtonGroup樣式的按鈕封閉起來。4.3.2ToolBar控件(5)占位按鈕(4-thrPlaceholder)

占位符樣式按鈕的功能如同“啞”按鈕:該按鈕的作用是在ToolBar

控件中占據一定位置,以便顯示其他控件。(6)菜單按鈕(5-tbrButtonDrop)

帶下拉菜單的按鈕,這類按鈕由一個普通的按鈕和一個半寬的下三角按鈕構成,當點擊三角時,其下面會顯示一個下拉菜單。將按鈕添加到工具欄并賦予圖像之后,要為所有的按鈕添加代碼,以使用戶單擊該按鈕時,執(zhí)行相應的操作。4.3.3ToolBar控件常用的事件和方法工具欄由多個按鈕組織起來,不是采用一個按鈕對應一個事件過程的處理方法,而是采用統(tǒng)一過程,利用關鍵字進行多路分支轉移。當單擊按鈕時,會發(fā)生ButtonClick事件。用按鈕的Index屬性或Key屬性識別單擊的按鈕。利用這些屬性中的任意一個,可以用SelectCase語句編寫按鈕的功能。4.3.3ToolBar控件常用的事件和方法下圖所示。為一個添加了兩個按鈕的窗體,兩個按鈕的關鍵詞(Key)分別為“OpenFile”和“SaveFile”。4.3.3ToolBar控件常用的事件和方法可以用如下代碼段為其編程:OptionExplicitPrivateSubToolBar1_ButtonClick(ByValButtonAsMScomctLib.Button)SelectCaseButton.keyCase“OpenFile”

MagBox“YouClickedtheOpenFileButton.”Case“SaveFile”

MagBox“YouclickedtheSavefileButton.”4.3.3ToolBar控件常用的事件和方法EndSelectEndSubToolBar控件的常用方法有利于在程序運行期間進行控制和調整。對工具欄的控制主要是對其中的按鈕。常用方法包括:Add:向工具欄增加一個按鈕。Remove:從工具欄刪除一個按鈕。Clear:將工具欄上所有的按鈕刪除。1.Add方法Add方法的語法為:

4.3.3ToolBar控件常用的事件和方法

ToolBar

控件名.Buttons.Add(Index,Key,Caption,Style,Image)Index用于指定新增按鈕的關鍵字,該索引值決定了按鈕在ToolBar中的位置。Key用于指定新增按鈕的索引值,可以省略。Caption用于指定新增按鈕的標題,可以省略。Style用于指定新增按鈕的Style屬性,可以省略。Image參數(shù)用于指定給新增按鈕載入的圖像,圖像必須是與該Toolbar相關聯(lián)的ImageList

控件圖像庫中的一個。4.3.3ToolBar控件常用的事件和方法2.Remove方法Remove方法的語法為:ToolBar控件名.Buttons.Remove按鈕的Index值從工具欄被移出的按鈕,將在程序運行期間消失。3.Clear方法Clear方法的語法為:ToolBar控件名.Buttons.Clear該方法可以刪除整個工具欄中的所有按鈕。4.4狀態(tài)欄設計狀態(tài)欄位于窗體的底部,用于顯示系統(tǒng)的一些狀態(tài)。下面以創(chuàng)建顯示系統(tǒng)日期和時間的狀態(tài)欄為例,如下圖所示,說明狀態(tài)欄的創(chuàng)建過程。4.4狀態(tài)欄設計(1)雙擊工具箱中的狀態(tài)欄控件,在窗體中添加狀態(tài)欄。狀態(tài)欄控件也是ActiveX控件。(2)用鼠標右鍵單擊工具欄控件,在彈出的菜單中單擊”屬性”菜單項,出現(xiàn)如下圖所示的對話框。4.4狀態(tài)欄設計4.4狀態(tài)欄設計(3)單擊“窗格”選項卡,“屬性頁”窗口如下圖所示。

4.4狀態(tài)欄設計“樣式”列表框選項

數(shù)字字符描述0sbrText顯示文本和位圖1sbrCaps顯示大小寫狀態(tài)2sbrNum顯示Numberlock狀態(tài)3sbrIns顯示Insert狀態(tài)4sbrScrl顯示Scroll鍵狀態(tài)5sbrTime按系統(tǒng)格式顯示時間6sbrDate按系統(tǒng)格式顯示日期4.4狀態(tài)欄設計

“樣式”列表框設置為6-sbrDate,可以顯示系統(tǒng)日期,“樣式”列表框有8個選項,“斜面”列表框設為1-sbrInset,即窗格以凹狀出現(xiàn)。(4)在上圖所示的窗口中,單擊“插入窗格”按鈕,為每個窗格設置屬性。如果要在新加的窗格中顯示系統(tǒng)時間,則“樣式”列表框為5-sbrTime,“索引框”為2。(5)單擊“瀏覽”按鈕,從出現(xiàn)“選定圖片”對話框中選擇一個圖片,單擊“打開”按鈕后,“屬性頁”對話框如下圖所示。4.4狀態(tài)欄設計4.5對話框設計在Windows程序中經常使用對話框來實現(xiàn)人機對話,對話框既可以用來顯示信息,也可以用于輸入應用程序繼續(xù)執(zhí)行所需要的數(shù)據。VisualBasic允許用戶用多種方法創(chuàng)建不同的對話框,可以用函數(shù)生成消息框和輸入框,用通用對話框控件(CommonDialog控件)生成通用對話框,以及通過用戶自己定義對話框的方法生成復雜的對話框。下面將詳細介紹生成對話框的幾種方法。4.5.1使用函數(shù)生成對話框1.消息框MsgBox函數(shù),可以在屏幕上出現(xiàn)一個消息框來顯示消息,如下面左圖所示在窗體上放置一個命令按鈕“顯示消息框”,單擊這個按鈕會產生如右圖所示的對話框。4.5.1使用函數(shù)生成對話框本例需要鍵入如下代碼:PrivateSubCommand1_Click()

tt=MsgBox(“請選擇操作”,65,“消息框”)EndSub該對話框由三部分組成,分別為:(1)標題:顯示在對話框最頂端的“消息框”為標題欄文本。(2)提示信息:中間顯示的“請選擇操作”為對話框的提示內容。(3)按鈕:供用戶選擇的“確定”和“取消”按鈕。4.5.1使用函數(shù)生成對話框MsgBox函數(shù)的語法格式為:MsgBox(prompt[,buttons][,title][,helpfile,context])(1)prompt該參數(shù)為一字符串表達式,作為顯示在對放框中的消息。prompt的最大長度大約為1024個英文字符。如果要顯示的prompt內容超過一行,則可以在每一行之間用回車符或者換行符4.5.1使用函數(shù)生成對話框注意不能在字符串之中直接敲<Enter>鍵,而要使用Chr函數(shù)。Chr函數(shù)可以返回與指定的字符代碼相關的字符,回車符用Chr(10)表示,換行符用Chr(13)表示?;剀嚪蛘邠Q行符與字符串之間要用“+”或者“&”來連接。(2)buttons(可選)該參數(shù)為三個數(shù)值相加之和,這三個數(shù)值分別代表按鈕的類型、顯示圖標樣式和哪一個按鈕是缺省的“活動按鈕”。按鈕的類型及其對應的值

符號常量值顯示出來的按鈕VbOkonly0顯示“確定”按鈕VbOkCancel1顯示“確定”和“取消”按鈕VbAbortRetrylgnore2顯示“終止(A)”、“重試(R)”和“忽略(I)”按鈕VbYesNoCancel3顯示“是(Y)”、“否(N)”和“取消”按鈕VbYesNo4顯示“是(Y)”和“否(N)”按鈕VbretryCancel5顯示“重試(R)”和“取消”按鈕按鈕的類型及其對應的值符號常量值在消息框上顯示出來的圖標VbCritical16顯示圖4.31圖標(1)VbQuestion32顯示圖4.31圖標(2)VbExclamation48顯示圖4.31圖標(3)VbInformation64顯示圖4.31圖標(4)按鈕的類型及其對應的值符號常量值缺省按鈕VbDefaultButton10第一個按鈕是缺省的活動按鈕VbDefaultButton2256第二個按鈕是缺省的活動按鈕VbDefaultButton3512第三個按鈕是缺省的活動按鈕VbDefaultButton4768第四個按鈕是缺省的活動按鈕4.5.1使用函數(shù)生成對話框(3)title(可選)該參數(shù)為在對話框標題欄中顯示的字符串表達式,如果省略title參數(shù)則VisualBasic將應用程序名放在標題欄中。(4)helpfile(可選)該參數(shù)為一字符串表達式,識別用來向對話框提供上下文相關幫助的幫助文件,如果提供了helpfile參數(shù),則也須提供context參數(shù)。4.5.1使用函數(shù)生成對話框(5)context(可選)該參數(shù)為一數(shù)值表達式,由幫助文件的作者指定給適當?shù)膸椭黝}的幫助上下文編號。同樣,如果提供了context參數(shù),二者要同時提供。4.5.1使用函數(shù)生成對話框例如:tt=MsgBox("請選擇操作",65,"消息框")在該語句中,將函數(shù)返回值賦給變量tt,可以通過返回值來確定單擊了對話框中的哪個按鈕,函數(shù)中的第二個參數(shù)是從以上三個表中各取一個數(shù)相加(即65=1+64+0),其中1表示在消息框中顯示“確定”和“取消”兩個按鈕;0表示在消息框中第一個“確定”按鈕為缺省的活動按鈕。4.5.1使用函數(shù)生成對話框2.輸入框用InputBox函數(shù)建立輸入框。InputBox函數(shù)的語法格式為:InputBox(prompt[,title][,default][,xpos][,helpfilecontext])(1)prompt該參數(shù)定義同MsgBox函數(shù)中一致。4.5.1使用函數(shù)生成對話框(2)title(可選)該參數(shù)為顯示對話框標題欄中的字符串表達式,如果省略參數(shù)title,則把應用程序名放入標題欄中。(3)default(可選)該參數(shù)顯示文本框中的字符串表達式,在沒有其他輸入時作為默認值。如果省略default參數(shù),則文本框初始化為空。4.5.1使用函數(shù)生成對話框(4)xpos(可選)該參數(shù)為一數(shù)值表達式,與ypos參數(shù)成對出現(xiàn),用于指定對話框的左邊與屏幕左邊的水平距離。如果省略參數(shù)xpos,則對話框顯示在水平方向居中。(5)ypos(可選)該參數(shù)為一數(shù)值表達式,與xpos參數(shù)成對出現(xiàn),用于指定對話框的上邊與屏幕的垂直距離。如果省略參數(shù)ypos,則對話框的上邊與屏幕的垂直距離。如果省略參數(shù)ypos,則對話框顯示在屏幕垂直方向距下邊大約1/3的位置。4.5.1使用函數(shù)生成對話框

(6)helpfile(可選)該參數(shù)為一字符串表達式,用來識別幫助文件,并用該文件為對話框提供上下文相關的幫助。如果已提供了helpfile,則也必須提供context。(7)context(可選)該參數(shù)為一數(shù)值表達式,由幫助文件的作者指定給某個幫助主題的幫助上下文編號。如果已提供了context,則也必須提供helpfile。4.5.1使用函數(shù)生成對話框例如用InputBox函數(shù),輸入用戶名,輸入框的標題為“輸入對話框”,顯示的信息為“請輸入用戶名:”。如果單擊“確定”按鈕或按下<Enter>鍵,則變量name會保存文本框中由用戶輸入的用戶名,如果用戶單擊“取消”按鈕,則返回一長度為0的字符串。

PrivateSubCommand1_Click()DimnameAsStringname=InputBox(“請輸入用戶名:”,“輸入對話框”)EndSub

4.5.1使用函數(shù)生成對話框在程序運行后,用戶只要在窗體的按鈕上單擊,就會顯示一個輸入框,如下圖所示。4.5.2通用對話框通用對話框(CommonDialog)控件提供一組標準對話框:如“打開”、“另存為”、“顏色”、“字體”和“打印”等對話框,進行打開和保存文件、選擇字體和設置打印選項等操作,而且通用對話框還能啟動幫助系統(tǒng)。注意:CommonDialog控件在VisualBasic和

Windows動態(tài)連接庫Commdlg.dll例程之間提供了接口,因此用該控件創(chuàng)建對話框,要求Commdlg.dll在Windows的System目錄下。4.5.2通用對話框在程序中使用CommonDialog控件,可將其添加到窗體中并設置屬性,控件所顯示的對話框由控件的方法決定。在設計時,CommonDialog控件是以圖標的形式顯示在窗體中,在運行時,當相應的方法被調用時,將顯示一個對話框或啟動幫助系統(tǒng)。

4.5.2通用對話框CommonDialog控件不在標準工具箱中,添加通用對話框控件可以按以下方法進行。(1)在工具箱的任一位置單擊右鍵,系統(tǒng)彈出快捷菜單,選擇其中的“部件”選項;或者在“工程”菜單中選擇“部件”選項;或者按<Ctrl>+<T>組合鍵,系統(tǒng)打開“部件”對話框,如下圖所示。(2)在“部件”對話框中的“控件”選項卡中,找到“MicrosoftCommonDialogControl6.0”并選中。4.5.2通用對話框4.5.2通用對話框(3)單擊“確定”按鈕,通用對話框控件按鈕出現(xiàn)在工具箱中,其圖標如下圖所示。

CommonDialog控件在窗體上顯示為一圖標,此圖標的大小不能改變,用戶也無法指定對話框在屏幕上顯示的位置。運行時,按下表所列的方法顯示需要的對話框。4.5.2通用對話框方法對話框類型ShowOpen顯示打開對話框ShowSave顯示另存為對話框ShowColor顯示顏色對話框ShowFont顯示字體對話框ShowPrinter顯示打印對話框ShowHelp顯示Windows幫助對話框4.5.2通用對話框1.“打開”和“另存為”對話框使用“打開”對話框可以指定驅動器、文件夾、文件擴展名和文件名,如下圖所示。4.5.2通用對話框“另存為”對話框在外觀上與“打開”對話框基本相同,如下圖所示。下面舉例說明如何顯示“打開”和“另存為”對話框。4.5.2通用對話框例4.3在窗體上放置三個CommandButton控件,分別為:“打開”按鈕,其Name屬性為cmdopen;“另存”按鈕,其Name屬性為cmdsave;“取消”按鈕,其Name屬性為cmdcancel;以及一個CommonDialog控件,其缺省Name屬性為commondialog1,如下圖所示。

4.5.2通用對話框4.5.2通用對話框

要顯示打開或者另存為對話框,程序代碼如下:

PrivateSubcmdopen_Click()CommonDialog1.FileName=""CommonDialog1.Filter = “allfiles|*.bmp|*.txt|*.doc”′設置文件過濾器

CommonDialog1.ShowOpen′顯示“打開”對話框EndSub4.5.2通用對話框PrivateSubcmdsave_Click()CommonDialog1.FileName=""CommonDialog1.Filter = "BmpFiles(*.bmp;*.BMP)"′設置文件過濾器

CommonDialog1.ShowSave′顯示“另存為”對話框EndSubCommonDialog.ShowOpen′顯示“打開”對話框

CommoDialog.ShowSave′顯示“另存為”對話框4.5.2通用對話框當選定文件并關閉對話框后,可以從控件的FileName屬性獲取選定的文件名。還可以通過置Filter屬性來指定在“文件類型”列表框中顯示的文件過濾器列表,其格式如下:description1|filter1|description2|filter2…4.5.2通用對話框description是列表框中顯示的字符串,例如“ExecutableFiles(.exe)”;Filter是實際的文件過濾器,例如:“.exe”。每個description|filter設置間必須用符號“|”隔開。通過設置控件的FilterIndex屬性來指定要選擇哪一種文件類型。4.5.2通用對話框程序運行后,單擊窗體上的“打開”按鈕,顯示下圖所示的對話框。4.5.2通用對話框單擊窗體上的“另存為”按鈕,顯示如下圖所示的對話框,用戶可從文件類型列表中看到文件過濾器的結果。4.5.2通用對話框2.“顏色”對話框使用“顏色”對話框,可以在調色板中選擇顏色或自定義需要的顏色。運行顏色對話框并關閉,該顏色記錄在控件的Color屬性中。例4.4在窗體上放置三個CommandButton控件,分別為:“前景顏色”按鈕,其Name屬性為cmdfore;“背景顏色”按鈕,其Name屬性為cmdback;“取消”按鈕,其Name屬性為cmdcancel;一個CommonDialog控件,其缺省Name屬性為commondialog1;以及一個文本框,Name屬性為text1,如下圖所示。4.5.2通用對話框4.5.2通用對話框在程序中顯示“顏色”對話框的步驟如下:(1)將CommonDialog控件的Flags屬性設置成VisualBasic常數(shù)cdICCRGBInit,這樣可用Color屬性獲取選定的顏色的RGB值。(2)用ShowColor方法顯示對話框,程序代碼如下:

PrivateSubcmdback_Click()CommonDialog1.Flags=cdlCCRGBInit′為對話框設置初始顏色值

CommonDialog1.ShowColor′顯示“顏色”對話框4.5.2通用對話框

Text1.BackColor=CommonDialog1.Color′設置背景顏色

EndSub

PrivateSubcmdfore_Click()CommonDialog1.Flags=cdlCCRGBInit′為對話框設置初始顏色值

CommonDialog1.ShowColor′顯示“顏色”對話框

Text1.ForeColor=CommonDialog1.Color′設置前景顏色

EndSub4.5.2通用對話框程序運行后,用戶只要單擊“前景顏色”或“背景顏色”按鈕,就可顯示如下圖所示的“顏色”對話框。4.5.2通用對話框選定顏色后,單擊“確定”按鈕,可以設置前景色和背景色,如下圖所示。4.5.2通用對話框3.“字體”和“打印”對話框“字體”對話框可以根據需要選擇字體的大小、樣式等?!按蛴 睂υ捒蛑付ù蛴≥敵龅姆椒āT诖蛴υ捒蛑锌芍付ù蛴№摂?shù)范圍、打印質量、復制數(shù)目等,此外還有一個是否打印到文件的選項。4.5.2通用對話框例4.5在窗體上放置三個CommandButton控件,分別為:“字體”按鈕,其Name屬性為cmdfont;“打印”按鈕,其Name屬性為cmdprint;“取消”按鈕,其Name屬性為cmdcancel;一個CommonDialog控件,其缺省Name屬性為commondialog1,以及一個文本框,其Name屬性為text1,如下圖所示。4.5.2通用對話框4.5.2通用對話框程序代碼如下:PrivateSubcmdfont_Click()CommonDialog1.ShowFont′顯示“字體”對話框

CommonDialog1.Flags=cdlCFBoth

Text1.FontSize=CommonDialog1.FontSizeText1.FontUnderline=CommonDialog1.FontUnderlineText1.FontStrikethru=CommonDialog1.FontStrikethruText1.FontBold=CommonDialog1.FontBold

4.5.2通用對話框

Text1.FontItalic=CommonDialog1.FontItalicEndSubPrivateSubcmdprint_Click()CommonDialog1.Copies=1′設置默認打印份數(shù)

CommonDialog1.ShowPrinter′顯示“打印”對話框EndSubFlags屬性設置“字體“對話框的選項,顯示對話框之前必須設置該屬性。

4.5.2通用對話框常用的取值為下表所列的三個VisualBasic常量,同時取多個值,要用OR運算符連接。使用屬性窗口可以設置Flags屬性值,也可以用賦值語句在程序代碼中設置屬性值。字體集常量值屏幕字體CdlCFScreenFonts1打印字體CblCFPrinterFonts2以上兩種字體CdlCFBoth34.5.2通用對話框FontSize屬性:返回字體大小。FontBold屬性:確定是否選擇“粗體”。FontItalic屬性:確定是否選擇“斜體”。FontUnderline屬性:確定是否選擇“刪除線”。FontStrikethru屬性:確定是否選擇“下劃線”。在顯示“字體”對話框前如果沒有為Flags屬性設置合法的數(shù)值,在程序運行時將出現(xiàn)沒有安裝字體的錯誤信息,如下圖所示。

4.5.2通用對話框

4.5.2通用對話框用戶只要在“字體”按鈕上單擊,就可顯示如下圖所示的字體對話框。4.5.2通用對話框在“打印”按鈕上單擊,就可顯示如下圖所示的打印對話框。4.5.2通用對話框可以從對話框中的“名稱”列表中選擇打印機,這個列表包含了安裝在Windows中的所有打印機。在“名稱”列表下邊是“狀態(tài)”行,告訴用戶選中的打印機的當前狀態(tài)。如果用戶想改變打印機的任何參(例如紙張大小和打印質量等),可以單擊“打印”對話框中的“屬性”按鈕,這樣就彈出選中的打印機的屬性對話框,如下圖所示。4.5.2通用對話框4.5.2通用對話框4.“幫助”對話框使用CommonDialog控件可以啟動幫助系統(tǒng),設置通用對話框控件的HelpFile、HelpKe、HelpCommand屬性等,然后調用ShowHelp方法顯示幫助對話框。例4.6如下圖所示。4.5.2通用對話框4.5.2通用對話框單擊“幫助”菜單項,即可啟動Windows幫助系統(tǒng),如下圖所示。

4.5.2通用對話框本例所需的程序代碼如下:PrivateSubmnuhelp_Click()CommonDialog1.HelpFile="c:\windows\help\notepad.hlp"CommonDialog1.HelpCommand=cdlHelpForceFileCommonDialog1.ShowHel′顯示幫助文件EndSub4.5.2通用對話框

HelpFile屬性設置要顯示的幫助文件名包括所在的驅動器和目錄。HelpCommand屬性設置需要的聯(lián)機幫助類型同時取多個值時,用OR運算符連接。4.5.3自定義對話框定制對話框的過程就是編寫一個小程序的過程,通過創(chuàng)建一個窗體,窗體上包括一些控件來實現(xiàn)對話框所需要的功能。因為對話框是臨時的,不能移動、改變大小、最大化或最小化等,所以將窗體的BorderStyle屬性設為3-FixedDialog,這樣只顯示關閉按鈕,運行時不能改變大小。用窗體自定義對話框的一般步驟如下:

4.5.3自定義對話框(1)向工程中添加窗體。(2)在窗體上創(chuàng)建其他控件對象,定義對話框的外觀。(3)設置窗體和控件對象的屬性(4)在代碼窗口創(chuàng)建事件過程。自定義對話框的外觀比較自由,可以是固定的或可移動的。作為對話框的窗體沒有菜單欄、窗口滾動條、控制狀態(tài)按鈕,窗體的尺寸大小一般不可以改變。4.5.3自定義對話框例4.7設計一個應用程序的口令檢測對話框。在窗體form1的基礎上,添加新窗體,如下圖所示,其name屬性為form2,Caption屬性為“口令”,MaxButton和MinButton屬性為false。新添加窗體上的控件為:Label1用于顯示“請輸入口令”;Label2用于提示口令出錯,其不可見;文本框Text1用于輸入口令,顯示為“*”;命令按鈕cmdok和cmdcancel

。4.5.3自定義對話框4.5.3自定義對話框程序代碼如下:PrivateSubForm_Load()Form2.ShowvbModalEndSubPrivateSubcmdok_Click()IfText1.Text="111111"ThenUnloadMeElse

4.5.3自定義對話框

time=time+1Iftime=2Then

cmdok.Enabled=FalseText1.Enabled=FalseElseLabel2.Visible=TrueEndIfEndIfEndSub

4.5.3自定義對話框PrivateSubText1_GotFocus()Label2.Visible=FalseEndSub運行程序,出現(xiàn)如下圖所示的口令輸入對話框。

4.5.3自定義對話框如果在文本框中輸入的不是“111111”,單擊“確定”按鈕后,將提示口令不正確,如下圖所示。

4.5.3自定義對話框本例中的time用于記錄輸入口令的次數(shù),如果輸入的不是“111111”,則time增加1,然后判斷time是否等于2。如果是,將“確定”按鈕和文本框設為無效;如果不是,表示用戶只輸入一次密碼,用標簽Label2提示再次輸入。

4.6多文檔界面設計

基于Windows應用程序的用戶界面主要有兩大類:單文檔界面(SDI)和多文檔界面(MDI)。MicrosoftWindows中的寫字板應用程序就是單文檔界面的例子,如下圖所示,在寫字板應用程序中只能打開一個文檔。4.6多文檔界面設計4.6多文檔界面設計多文檔界面的典型例子,如下圖所示。

4.6多文檔界面設計在MDI應用程序中至少包含兩種窗體:父窗體和子窗體。每個窗體都有相應的屬性。父窗體只有一個,而其中包含的子窗體則可以有多個。父窗體為應用程序中的所有子窗體提供工作空間,當子窗體最小化時,只顯示在父窗體內,而不是顯示在任務欄中,當父窗體最小化或關閉時,子窗體也隨之最小化或關閉。

4.6多文檔界面設計生成MDI應用程序具體的操作如下:(1)創(chuàng)建MDI窗體。從“工程”菜單中選擇“添加MDI窗體”項,系統(tǒng)打開“添加MDI窗體”對話框,如下圖所示。

4.6多文檔界面設計4.6多文檔界面設計(2)選中該圖中的“MDI窗體”圖標,單擊“打開”按鈕,設置該窗體的Caption屬性為“MDI窗體”。(3)創(chuàng)建MDI窗體的子窗體。先創(chuàng)建一個新窗體(或打開一個已存在的窗體),將窗體的MDIChild屬性設置為True,其Caption屬性設為“子窗體1”。(4)從“工程”菜單中選擇“屬性”項,打開“工程屬性”對話框,設置子窗體為啟動窗體。4.6多文檔界面設計運行后如圖所示。如果設置MDI窗體為啟動窗體,則子窗體將不會顯示,如下圖所示。4.6多文檔界面設計(5)創(chuàng)建多個子窗體。再添加一個新窗體,將其MDIChild屬性設置為True,Caption屬性為“子窗體2”,Name屬性為“form2”,在MDI窗體的Lode事件中鍵入以下代碼:

form2.show運行后如下圖所示。4.6多文檔界面設計4.6多文檔界面設計MDI窗體上不能放置控件,只能包含子窗體,但MDI窗體可以有自己的菜單。每一個子窗體也有菜單,并且彼此可能不同。在裝入子窗體時,子窗體上的菜單將代替MDI窗體上的原有的菜單。下面通過一個具有簡單菜單的MDI窗體,進一步說明這個問題。4.6多文檔界面設計為MDI窗體添加菜單“文件”、“編輯”和“退出”,為子菜單添加菜單“新建”、“保存”和“關閉”。運行應用程序后,則會看到子窗體的菜單“文件”

、“編輯”和“退出”出現(xiàn)在MDI窗體的菜單欄上,如下圖所示。4.6多文檔界面設計4.6多文檔界面設計關閉子窗體,則重新出現(xiàn)MDI窗體的菜單,如下圖所示。4.6多文檔界面設計例4.9在上述創(chuàng)建兩個子窗體的基礎上,使用戶通過單擊“文件”菜單下的“打開”菜單項打開兩個文件。需要在子窗體Form1和Form2中各添加一個文本框Text1,并調整大小與子窗體一樣大。程序代碼如下:

GlobaltimeAsString′全局變量,記錄打開文件的次數(shù)

PrivateSubMDIForm_Load()′在父窗體中鍵入代碼

time=0EndSub4.6多文檔界面設計PrivateSubmnuexit_Click()′“退出”菜單項名稱為mnuexitEndEndSubPrivateSubmnuopen_Click()′“打開”菜單項名稱為mnuopenIftime=2Thena=MsgBox("已打開兩個文件",0,"")ExitSubEndIfIftime=0Then

4.6多文檔界面設計

Form1.Showtime=1ElseForm2.Showtime=2EndIfEndSubPrivateSubForm_Load()′在子窗體Form1中鍵入代碼

DimfilenameAsStringDimiAsInteger

4.6多文檔界面設計

filename=InputBox("inputfilename:")Iffilename=""ThenExitSub

溫馨提示

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

評論

0/150

提交評論