![VB教程用戶界面設計_第1頁](http://file4.renrendoc.com/view/b11bdc5f81f600236a75fcadb42d6107/b11bdc5f81f600236a75fcadb42d61071.gif)
![VB教程用戶界面設計_第2頁](http://file4.renrendoc.com/view/b11bdc5f81f600236a75fcadb42d6107/b11bdc5f81f600236a75fcadb42d61072.gif)
![VB教程用戶界面設計_第3頁](http://file4.renrendoc.com/view/b11bdc5f81f600236a75fcadb42d6107/b11bdc5f81f600236a75fcadb42d61073.gif)
![VB教程用戶界面設計_第4頁](http://file4.renrendoc.com/view/b11bdc5f81f600236a75fcadb42d6107/b11bdc5f81f600236a75fcadb42d61074.gif)
![VB教程用戶界面設計_第5頁](http://file4.renrendoc.com/view/b11bdc5f81f600236a75fcadb42d6107/b11bdc5f81f600236a75fcadb42d61075.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
優(yōu)質(zhì)文檔精選VB教程用戶界面設計現(xiàn)在是1頁\一共有66頁\編輯于星期一10.1菜單設計
Windows環(huán)境下的應用程序一般為用戶提供三種菜單:窗體控制菜單、下拉菜單與快捷菜單?,F(xiàn)在是2頁\一共有66頁\編輯于星期一一.啟動菜單編輯器:有三種方法:
1單擊工具欄菜單圖標
2工具/菜單編輯器
(CTRL+E)3窗體上快捷菜單/菜單編輯器菜單編輯器操作界面如右所示。10.1.1菜單編輯器現(xiàn)在是3頁\一共有66頁\編輯于星期一菜單編輯器介紹:1.標題(Caption):2.名稱(Name):3.快捷鍵(Shortcut):4.下一個(Next):5.←和→按鈕6.插入(Insert)按鈕:7.刪除(Delete)按鈕:8↓和↑按鈕: 10.復選(Checked)檢查框:10.有效(Enabled)檢查框:11.顯示窗口列表(WindowList)檢查框:
現(xiàn)在是4頁\一共有66頁\編輯于星期一
菜單的主要屬性
1.標題(Caption):在窗口上顯示,例如:輸入&File,顯示為:File,熱鍵:Alt+F
2.名稱(Name): 菜單項的名稱,分界符也應有名稱。
3.快捷鍵(Shortcut):下拉列表框
4下一個(Next): 設置下一個菜單項。
5.←和→按鈕:“→”下一級菜單項;“←”上一級菜單項。
6.插入(Insert)按鈕:插入菜單項
7.刪除(Delete)按鈕:刪除菜單項
8.↓和↑按鈕: 改變菜單項位置。
10.復選(Checked)檢查框:菜單項為選定項。
10.有效(Enabled)檢查框:True:菜單項可選;False:不可選。
11.顯示窗口列表(WindowList)檢查框:現(xiàn)在是5頁\一共有66頁\編輯于星期一1.設計下拉菜單2.設計子菜單或改變子菜單級別
3.為菜單項分組菜單名用減號“-”4.為菜單項指定訪問鍵和快捷鍵與命令按鈕設置訪問鍵相同。5.為菜單項加上復選標記6.禁止使用菜單項在程序代碼中可以通過程序代碼:菜單名.Enabled=False7.菜單項的增減
菜單設計的常用的幾項操作:現(xiàn)在是6頁\一共有66頁\編輯于星期一10.1.2下拉式菜單
10.1菜單設計
在下拉式菜單中,一般只需要對下拉菜單的最低級菜單項編寫單擊事件代碼,如果對一個有下級菜單的菜單項編寫了單擊事件,則在執(zhí)行下一級菜單時,該菜單程序?qū)⑾葓?zhí)行。
在下拉式菜單中,一般有一個主菜單,稱為菜單欄。每個菜單欄包括一個或多個選擇項,稱為菜單標題。
菜單控件(對象)只有一個事件——單擊事件(Click())一.設計下拉式菜單的步驟:(1)新建一個窗體,并設計用戶界面。(2)利用菜單編輯器設計各菜單項。(3)編寫每個菜單項的事件過程。(4)運行調(diào)試各菜單命令?,F(xiàn)在是7頁\一共有66頁\編輯于星期一二、下拉式菜單設計舉例【例10.1】設計菜單程序,通過菜單控制標簽中文字的字體,字型等,程序運行界面如圖10.3所示。當用戶選擇某一菜單項時執(zhí)行相應的命令功能。圖10.3程序運行界面設計步驟如下:1.界面設計在窗體上添加一個Frame1和Label1,用于顯示文字信息。啟動菜單編輯器,所要建立的菜單中各菜單項的屬性設置如表10.1所示,菜單編輯器中各項設置如圖10.4所示,對每一個菜單項輸入標題、名稱和選擇相應的快捷鍵。現(xiàn)在是8頁\一共有66頁\編輯于星期一標題(Caption)名稱(Name)索引值說
明字體字體主菜單項1….宋體
songti子菜單11快捷鍵Ctrl+S….楷體kaiti子菜單12快捷鍵Ctrl+K….黑體heiti子菜單13快捷鍵Ctrl+H字型字型主菜單項2….粗體(&B)
fontstyle0子菜單21熱鍵B….斜體(&I)fontstyle1子菜單22熱鍵I….下劃線(&U)fontstyle2子菜單23熱鍵U表10.1菜單項屬性設置(2)編寫菜單項代碼PrivateSubForm_Load()Label1.FontSize=16Label1.Caption="長亭外古道邊"+Chr(13)+Chr(10)+"芳草碧連天"+Chr(13)+Chr(10)+"問君此去幾時來"+Chr(13)+Chr(10)+"來時莫徘徊"EndSubPrivateSubsongti_Click()Label1.FontName="宋體"EndSubPrivateSubheiti_Click()Label1.FontName="黑體"EndSubPrivateSubkaiti_Click()Label1.FontName="楷體_GB2312"EndSub
現(xiàn)在是9頁\一共有66頁\編輯于星期一PrivateSubfontstyle_Click(IndexAsInteger)fontstyle(Index).Checked=Notfontstyle(Index).CheckedSelectCaseIndexCase0Label1.FontBold=fontstyle(Index).CheckedCase1Label1.FontItalic=fontstyle(Index).CheckedCase2Label1.FontUnderline=fontstyle(Index).CheckedEndSelectEndSub字型下拉菜單代碼如下:現(xiàn)在是10頁\一共有66頁\編輯于星期一
彈出式菜單是獨立于菜單欄顯示在窗體或指定控件上的浮動菜單,菜單的顯示位置與鼠標當前位置有關。實現(xiàn)步驟如下:
1.在菜單編輯器中建立該菜單。
2.設置其頂層菜單項(主菜單項)的Visible屬性為False(不可見)。
3.在窗體或控件的MouseUp或MouseDown事件中調(diào)用PopupMenu方法顯示該菜單。PopupMenu的使用方法為:
PopupMenu<菜單名>[,flags[,x[,y[,Boldcommand]]]]10.1.3彈出式菜單
其中:⑴關鍵字“PopupMenu”可以前置窗體名稱,但不可前置其他控件名稱。⑵<菜單名>是指通過菜單編輯器設計的、至少有一個子菜單項的菜單名稱(Name)。⑶Flags參數(shù)為常數(shù),用來定義顯示位置與行為,其取值見表10.2現(xiàn)在是11頁\一共有66頁\編輯于星期一位置常數(shù)值描述vbPopupMenuLeftAlign0缺省值。彈出式菜單的左邊定位于
x。vbPopupMenuCenterAlign4彈出式菜單以
x為居中心。vbPopupMenuRightAlign8彈出式菜單的右邊定位于
x。行為常數(shù)值描述vbPopupMenuLeftButton0缺省值。
僅當使用鼠標右鍵單擊時,
彈出式菜單中的項目才響應鼠標單擊。vbPopupMenuRightButton2彈出式菜單中的項目可接受左、右鍵單擊。10.1.3彈出式菜單設計表10.2flags參數(shù)值表Boldcommand參數(shù)設置菜單項可以粗體顯示。一般的彈出式菜單是在右擊時彈出,所以PopupMenu方法一般是放在對象的MouseDown事件過程中,根據(jù)按下的是鼠標左鍵還是右鍵來決定是否彈出菜單?,F(xiàn)在是12頁\一共有66頁\編輯于星期一例10.2】
為【例10.1】添加一個標簽的彈出式菜單,該菜單包含有“10”、“12”和“14”3個菜單項,如圖10.5所示。單擊相應的菜單項后可以改變標簽中文字的字體大小。彈出式式菜單設計舉例圖10.5彈出式菜單PrivateSubLabel1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2Then'按下鼠標右鍵Form1.PopupMenufsize,4Or2EndIfEndsubPrivateSubsize_Click(IndexAsInteger)SelectCaseIndexCase0Label1.fontsize=10Case1Label1.fontsize=12Case2Label1.fontsize=14EndSelectEndsub現(xiàn)在是13頁\一共有66頁\編輯于星期一用“菜單編輯器”對話框創(chuàng)建好的菜單,在程序運行過程中并非就一成不變。用戶可以根據(jù)實際運行情況動態(tài)地調(diào)整和控制菜單的使用,給菜單增加一些靈活性。如當某菜單項執(zhí)行的操作不適合當前環(huán)境時,可以暫時使其失效或?qū)⑵潆[藏起來。當需要時也可以添加或刪除某菜單項。隱藏或顯示菜單項并不能真正地改變菜單的數(shù)量,要使菜單項真正地、動態(tài)地增減(從內(nèi)存中),則必須使用菜單控件數(shù)組實現(xiàn)。運行時通過Load語句增加新的菜單控件,使用UnLoad語句將其刪除。10.1.4動態(tài)菜單Load
控件數(shù)組名(index)Unload
控件數(shù)組名(index)現(xiàn)在是14頁\一共有66頁\編輯于星期一10.1.4動態(tài)菜單【例10.3】設計如下程序,當文本框中沒有任何文字時,“字體大小”菜單中的各項均變?yōu)榛疑@示,表示當前不可用;當用戶在文本框中輸入了文字后選擇某菜單項后,可將文字大小設為對應值并在當前菜單項的前面加一個“√”,如圖10.6(a)、圖10.6(b)所示。如果用戶選擇了“14”菜單項,則“10”菜單項將隱藏,并且添加菜單項“16”,其功能與其他菜單項相同,當用戶重新選擇了“12”菜單項時,“16”菜單項將被刪除,并恢復菜單項“10”的可見性,即文字字號最大值為16,最小為10,菜單中只能同時存在三個選項,如圖10.6(c)、圖10.6(d)所示。圖10.6動態(tài)修改菜單示例(b)(c)(d)(a)現(xiàn)在是15頁\一共有66頁\編輯于星期一10.2通用對話框工程/部件
選定控件標簽選定MicrosoftCommDialogControl6.0
CommonDialog控件不是標準控件,是一種ActiveX控件,位于MicrosoftCommonDialogControl6.0部件中。確定通用對話框圖標現(xiàn)在是16頁\一共有66頁\編輯于星期一10.2.1通用對話框的基本屬性和方法CommonDialog控件的基本屬性(1)Action屬性:該屬性決定打開何種類型的標準對話框,其取值如表10.4所示。該屬性不能在屬性窗口中設置,只能在程序中賦值。表10.4打開通用對話框的方法與Action屬性設置類型Action屬性方法無對話框0—“打開”對話框1ShowOpen“另存為”對話框2ShowSave“顏色”對話框3ShowColor“字體”對話框4ShowFont“打印”對話框5ShowPrinter“幫助”對話框6ShowHelp現(xiàn)在是17頁\一共有66頁\編輯于星期一(2)Name屬性:CommonDialog控件的名稱屬性。(3)CancelError屬性:多數(shù)對話框都有“取消”按鈕,用于向應用程序表示用戶想取消當前操作。CancelError屬性的作用是向應用程序報告用戶取消當前的操作,通過一個錯誤報告給應用程序。如果該屬性設置為True,在程序的運行階段,用戶選擇“取消”操作時,出現(xiàn)錯誤提示。默認是False,不出現(xiàn)錯誤提示。對話框打開后,為了防止用戶沒有輸入任何信息便使用取消操作,則可用此屬性設置出錯警告。(4)Flags屬性:用于設置對話框外觀及工作方式。對于每種對話框都有許多不同的設置值。在通用對話框的使用過程中,每種對話框都有自己的特殊屬性。CommonDialog控件的屬性可以在屬性窗口中設置,也可在其“屬性頁”對話框中設置。在窗體中的CommonDialog控件上右擊,在彈出的快捷菜單中選擇“屬性”命令,打開“屬性頁”對話框,該對話框中有五個選項卡,分別可對不同類型的標準對話框設置屬性?,F(xiàn)在是18頁\一共有66頁\編輯于星期一FilterIndexDefaultExtDialogTiltleFileNameInitDirFilter
在設計時,可以通過屬性窗口設置通用對話框的屬性設置控件屬性,也可以使用通用對話框的屬性頁設置相關屬性。
2.CommonDialog控件的方法在程序中要使用CommonDialog控件的標準對話框,除了使用CommonDialog控件的Action屬性設置對話框的類型外,還可以使用CommonDialog控件的方法。這些方法如表10.4所示。例如:CommonDialog1.Action=1或者CommonDialog1.ShowOpen現(xiàn)在是19頁\一共有66頁\編輯于星期一10.2.2“打開”
對話框CancelError:返回或設置一個值,該值指示當單擊“取消”按鈕時是否出錯。DefaultExt:用于設置或返回對話框默認的文件擴展名。該屬性值是一個文件擴展名字符串,如“*.txt”、“*.doc”等。當保存一個沒有指定擴展名的文件時,系統(tǒng)自動添加默認擴展名。DialogTitle:返回或設置對話框的標題。Filename:返回或設置用戶所選擇的文件的完整路徑和文件名稱。FileTitle:返回用戶選擇文件的文件名稱,包括擴展名,但不包括路徑。
使用通用對話框控件的ShowOpen方法,或?qū)ction屬性賦值為1,可以在運行時顯示“打開”對話框。需要設置以下屬性:現(xiàn)在是20頁\一共有66頁\編輯于星期一6.Filter:設置或返回在對話框的文件類型列表框中所顯示文件類型。該屬性值可以是一組元素或用“|”符號分開的分別表示不同類型文件的多組元素組成。例如,如果要在“文件類型”列表框中顯示下列三種文件類型以供用戶選擇。WORD文檔(*.DOC)擴展名為DOC的Word文件文本文件(*.TXT)擴展名為TXT的文本文件AllFiles(*.*)所有文件那么Filter屬性就應該設為:"WORD文檔(*.doc)|*.doc|文本文件(*.txt)|*.txt|所有文件|*.*"7.FilterIndex:返回或設置“打開”或“另存為”對話框中一個默認的過濾器。8.InitDir:返回或設置“打開”對話框中的初始目錄。9.MaxFileSize:返回或設置使用CommonDialog控件時,被打開的文件名的最大尺寸。10.2.2“打開”
對話框上述屬性若在程序中設置,都必須放在使用Action屬性或ShowOPen和ShowSave方法調(diào)用的“打開”或“另存為”對話框語句之前。否則起不到其功能現(xiàn)在是21頁\一共有66頁\編輯于星期一
【例10.4】編寫一個簡單的文本文件編輯程序,如圖10.9所示,文件的內(nèi)容顯示在上面的文本框中。從左到右共6個命令按鈕依次按約定命名。下面列出了Command1事件過程的程序代碼,其他的事件過程在以后的各節(jié)中分別給出。10.2.2“打開”
對話框圖10.9通用對話框示例現(xiàn)在是22頁\一共有66頁\編輯于星期一程序運行時,當CommonDialog控件的Action屬性為2或者調(diào)用ShowSave方法時,系統(tǒng)就會彈出“另存為”對話框,它為用戶在存儲文件時提供了一個標準的用戶界面。實際上“另存為”對話框和“打開”對話框涉及的屬性基本一樣,獨有一個屬性DefaultExt,表示默認擴展名。10.2.3“另存為”
對話框【例10.5】為例10.4中的“另存為…”命令按鈕(Command2)編寫事件過程,把文本框(Text1)中的內(nèi)容寫入一個文本文件。現(xiàn)在是23頁\一共有66頁\編輯于星期一顏色對話框是當Action值為3時或者調(diào)用ShowColor方法時,系統(tǒng)就會彈出“顏色”對話框,為用戶提供了顏色選擇器,如右圖。
重要屬性
Color:用來返回或設置選定的顏色。10.2.4“顏色”對話框【例10.6】為例10.4中的“顏色…”命令按鈕(Command3)編寫事件過程,用“顏色”對話框設置文本框的前景顏色?!邦伾卑粹o的單擊事件過程如下:PrivateSubCommand3_Click()CommonDialog1.Action=3Text1.ForeColor=CommonDialog1.ColorEndSub現(xiàn)在是24頁\一共有66頁\編輯于星期一10.2.5“字體”對話框字體對話框是Action為4時的通用對話框,如下圖所示,提供用戶選擇字體、字號及字體樣式等。字體對話框重要的屬性有:Color,FontName,FontSize,FontBoldFontItalic,FontStrikethru,FontUnderline,Max等.
FontNameFontBold、FontItalicFontSizeFontStrikethruFontUnderlineColorMin、Max現(xiàn)在是25頁\一共有66頁\編輯于星期一Flags屬性:設置所顯示的字體類型,數(shù)據(jù)類型為Long。
注意
在顯示“字體”對話框前,必須先將
Flags屬性設置為
cdlCFScreenFonts,cdlCFPrinterFonts,或cdlCFBoth。否則,會發(fā)生字體不存在的錯誤?!白煮w”對話框的Flags屬性設置值系統(tǒng)常數(shù)值說明cdlCFScreenFonts&H1顯示屏幕字體cdlCFPrinterFonts&H2顯示打印機字體cdlCFBoth&H3顯示打印機和屏幕字體cdlCFEffects&H100在“字體”對話框中顯示刪除線和下劃線以及顏色組合框10.2.5“字體”對話框現(xiàn)在是26頁\一共有66頁\編輯于星期一【例10.7】為例10.4中的“字體…”命令按鈕(Command4)編寫事件過程,設置文本框的字體?!白煮w”按鈕的單擊事件過程如下:PrivateSubCommand4_Click()CommonDialog1.Flags=cdlCFScreenFontsOrcdlCFEffectsCommonDialog1.Max=100CommonDialog1.Min=1CommonDialog1.ShowFont'CommonDialog1.Action=4Text1.FontName=CommonDialog1.FontNameText1.FontSize=CommonDialog1.FontSizeText1.FontBold=CommonDialog1.FontBoldText1.FontItalic=CommonDialog1.FontItalicText1.FontStrikethru=CommonDialog1.FontStrikethruText1.FontUnderline=CommonDialog1.FontUnderlineText1.ForeColor=CommonDialog1.ColorEndSub現(xiàn)在是27頁\一共有66頁\編輯于星期一程序運行時,當CommonDialog控件的Action屬性為5或者調(diào)用ShowPrinter方法時,系統(tǒng)就會彈出“打印”對話框,它是一個設置選擇打印參數(shù)的界面,如圖10.12所示。10.2.6“打印”對話框圖10.12“打印”對話框重要屬性:Copies:返回或設置需要打印的份數(shù)。Max、Min:返回或設置打印范圍允許的最大和最小值。FromPage、ToPage:返回或設置起始頁號和終止頁號。當cdlPDPageNums標志被設置時才有效?,F(xiàn)在是28頁\一共有66頁\編輯于星期一【例10.8】為例10.4中的“打印…”命令按鈕(Command5)編寫事件過程,用“打印”對話框打印文本框(Text1)中的內(nèi)容?!按蛴 卑粹o的單擊事件過程如下:PrivateSubCommand5_Click()DimiAsIntegerCommonDialog1.ShowPrinter'CommonDialog1.Action=5Fori=1ToCommonDialog1.CopiesPrinter.PrintText1.TextNextiPrinter.EndDoc'結束打印EndSub現(xiàn)在是29頁\一共有66頁\編輯于星期一10.2.7“幫助”對話框程序運行時,當CommonDialog控件的Action屬性為6或者調(diào)用ShowHelp方法時,系統(tǒng)就會彈出“幫助”對話框,它可以為用戶制作應用程序的聯(lián)機幫助?!皫椭睂υ捒虮旧聿荒芙贸绦虻膸椭募?,它只能將已建好的幫助文件從磁盤中提取出來,并與界面建立連接,從而達到顯示并檢索幫助信息的目的。使用ShowHelp方法前,必須將CommonDialog控件的HelpFile和HelpCommand屬性設置為與其相應的一個常數(shù)或值,否則,Winhlp32.exe就不能顯示幫助文件。對于“幫助”對話框,有以下幾個重要屬性:HelpCommand:返回或設置需要的聯(lián)機幫助的類型。具體設置請參閱VB幫助系統(tǒng)HelpFile:確定MicrosoftWindowsHelp文件的路徑和文件名,應用程序使用這個文件顯示Help或聯(lián)機文檔。HelpKey:返回或設置標識請求的幫助主題的關鍵字。HelpContext:該屬性與HelpCommand屬性一起使用(設置HelpCommand=cdlHelpContext),返回或設置請求的幫助主題的上下文ID以指定要顯示的幫助主題。
現(xiàn)在是30頁\一共有66頁\編輯于星期一【例10.9】為例10.4中的“幫助…”命令按鈕(Command6)編寫事件過程,通過“幫助”對話框來顯示記事本程序的幫助文件?!皫椭卑粹o的單擊事件過程如下:PrivateSubCommand6_Click()CommonDialog1.HelpCommand=cdlHelpContentsCommonDialog1.HelpFile="c:\windows\help\notepad.hlp"CommonDialog1.ShowHelpEndSub現(xiàn)在是31頁\一共有66頁\編輯于星期一工具欄的制作有兩種方法:1.是使用命令按鈕和圖形框來手工制作2.使用ToolBar控件和ImageList控件來制作。前一種方法比較繁瑣,較少使用。后一種方法較容易,在VB中常用后一種方法。ToolBar控件和ImageList控件并沒有在工具箱里,屬于ActiveX控件,需要為工程加載“MicrosoftWindowsCommonControls6.0”控件。加載成功后控件工具欄如圖10.13所示。10.3工具欄
ImageList圖10.13添加控件成功后的工具箱ToolBar現(xiàn)在是32頁\一共有66頁\編輯于星期一ImageList控件不單獨使用,專門為其它控件提供圖像庫.使用方法如下:在窗體中添加一個ImageList控件。其大小固定,運行時不可見。右擊ImageList控件,選擇“屬性”,打開“屬性頁”對話框,如圖所示。選擇“圖像”選項卡,單擊“插入圖片”按鈕,逐個向ImageList控件中加入圖片;如果需要刪除多余的圖片,選中后點擊“刪除圖片”按鈕。10.3.1ImageList控件現(xiàn)在是33頁\一共有66頁\編輯于星期一使用ToolBar控件具體創(chuàng)建一個工具欄,首先在窗體中添加一個ToolBar控件,設置ToolBar控件的Align屬性以控制工具欄在窗體中的位置。右擊選擇“屬性”,打開“屬性頁”對話框。10.3.2ToolBar控件1.設置ToolBar控件中的按鈕點擊“按鈕”選項卡,如圖所示。單擊“插入按鈕”和“刪除按鈕”,可以增加或減少工具欄中的按鈕;每個按鈕需要使用ImageList控件中的哪個圖片作為外觀顯示,在“圖像”中進行設置;“關鍵字”用于在程序代碼中引用該按鈕?!皹祟}”與“描述”文本框中是在按鈕上顯示的文字及按鈕的說明信息。在“值”下拉列表中可以設置按鈕的狀態(tài):0-tbrUnpressed為彈起狀態(tài)1-tbrPressed為按下狀態(tài)。圖10.15“屬性頁”中“按鈕”選項卡現(xiàn)在是34頁\一共有66頁\編輯于星期一0-tbrDefault:普通(默認的)按鈕。1-tbrCheck:復選框按鈕。具有按下、放開兩種狀態(tài)。2-tbrButtonGroup:單選按鈕3-tbrSeparator:分隔符。表示將不同組或不同類的按鈕分開,如單選按鈕。4-tbrPlaceholder:占位符。5-thrDropdown:下拉式按鈕。可以建立下拉式菜單。10.3.2ToolBar控件圖10.15“屬性頁”中“按鈕”選項卡在“樣式”下拉列表中可以設置按鈕的行為特點,并且將影響按鈕的功能。具有六種類型:現(xiàn)在是35頁\一共有66頁\編輯于星期一2.設置ToolBar控件的通用屬性,和ImageList控件建立關聯(lián)。打開“通用”選項卡,在圖像列表選項中選擇圖像列表控件名ImageList1,這樣就建立了工具欄控件與圖像列表控件的關聯(lián)。在程序運行時,下述代碼也可建立工具欄控件與圖像列表控件的關聯(lián):PrivateSubForm_Load()Toolbar1.ImageList=ImageList1EndSub一旦工具欄控件與圖像列表控件建立了關聯(lián),ToolBar控件“屬性頁”對話框的“按鈕”選項卡中的“圖像”選項即變?yōu)橛行?。只需在其中輸入圖像庫中圖像的索引號即可將對應的圖片添加到按鈕上。10.3.2ToolBar控件現(xiàn)在是36頁\一共有66頁\編輯于星期一3.響應ToolBar控件事件
ToolBar控件常用的事件有兩個:ButtonClick和ButtonMenuClick。前者對按鈕樣式為0-2,后者對樣式為5的菜單按鈕。(1)用索引Index確定按鈕(2)用關鍵字Key確定按鈕PrivateSubToolbar1_ButtonClick(ByvalButtonAsComctlLib.Button)SelectCaseButton.IndexCase1FileNewProcCase2FileOpenProc……EndSelectEndSub注意:第1個按鈕的Index值為1。用Index還是用Key根據(jù)實際需要,Key可讀性好,可維護性好。SelectCaseButton.KeyCase"TNew"FileNewProcCase"TOpen"FileOpenProc
現(xiàn)在是37頁\一共有66頁\編輯于星期一【例10.9】創(chuàng)建如圖所示的窗體,并編寫程序代碼實現(xiàn)工具欄上各按鈕的功能。圖10.16例10.9界面設計設計步驟如下:1.設計界面首先在窗體上添加一個文本框,設置其Multiline屬性為True,ScrollBars屬性為2,添加ImageList控件,該控件包含有圖所示的六個圖形。添加ToolBar控件,在按鈕選項卡中逐個添加按鈕。各按鈕屬性設置如表10.6所示。索引關鍵字樣式圖像索引1B1-tbrCheck12I1-tbrCheck23U1-tbrCheck343-tbrSeparator05lt2-tbrButtonGroup46ct2-tbrButtonGroup57rt2-tbrButtonGroup6現(xiàn)在是38頁\一共有66頁\編輯于星期一圖10.16例10.9界面設計2.編寫程序代碼PrivateSubForm_Load()Toolbar1.ImageList=ImageList1EndSubPrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)SelectCaseButton.Key
Case"B"Text1.FontBold=NotText1.FontBoldCase"I"Text1.FontItalic=NotText1.FontItalicCase"U"Text1.FontUnderline=NotText1.FontUnderlineCase"lt"Text1.Alignment=0Case"ct"Text1.Alignment=2Case"rt"Text1.Alignment=1EndSelectEndSub現(xiàn)在是39頁\一共有66頁\編輯于星期一10.4.1鍵盤事件
在VisualBasic中,提供KeyPress、KeyDown、KeyUp三種鍵盤事件,窗體和接受鍵盤輸入的控件都識別這三種事件。
KeyPress按下對應某ASCII字符的鍵。
KeyDown
按下鍵盤的任意鍵。
KeyUp
釋放鍵盤的任意鍵只有獲得焦點的對象才能夠接受鍵盤事件。
1.KeyPress事件在按下與ASCII字符對應的鍵時將觸發(fā)KeyPress事件。
10.4鍵盤和鼠標事件現(xiàn)在是40頁\一共有66頁\編輯于星期一KeyPress事件過程的語法格式是:SubObject_KeyPress(KeyAsciiAsInteger)其中:Object是指窗體或控件對象名,KeyAscii參數(shù)返回對應于ASCII字符代碼的整型數(shù)值。
例如,如果希望將文本框中的所有字符都強制轉(zhuǎn)換為大寫字符,則可在輸入時使用此事件轉(zhuǎn)換大小寫:PrivateSubText1_KeyPress(KeyAsciiAsInteger)KeyAscii=Asc(Ucase(Chr(KeyAscii)))EndSub10.4鍵盤和鼠標事件KeyPress事件只識別
Enter、Tab和Backspace鍵。不能夠檢測其它功能鍵、編輯鍵和定位鍵。
現(xiàn)在是41頁\一共有66頁\編輯于星期一【例10.10】設計一個應用程序,在窗體中建立一個文本框和一個標簽,在文本框中限定只能輸入英文字母、空格和BackSpace鍵,當從鍵盤向文本框輸入英文字符時,將其轉(zhuǎn)換成大寫字母并顯示在標簽中。程序運行結果如圖所示。10.4鍵盤和鼠標事件圖10.17例10.10運行結果PrivateSubText1_KeyPress(KeyAsciiAsInteger)DimcharAsStringSelectCaseKeyAsciiCase65To90,97To122,32char=UCase(Chr(KeyAscii))Label1.Caption=Label1.Caption&charCase8Label1.Caption=Left(Label1.Caption,Len(Label1.Caption)-1)CaseElseKeyAscii=0EndSelectEndSub現(xiàn)在是42頁\一共有66頁\編輯于星期一2.KeyDown和KeyUp事件
當一個對象具有焦點時按下(KeyDown)
或松開
(KeyUp)一個鍵時發(fā)生。它們報告鍵盤本身準確的物理狀態(tài):按下鍵
(KeyDown)及松開鍵
(KeyUp)。
KeyDown和KeyUp事件能夠檢測其它功能鍵、編輯鍵和定位鍵。KeyUp和KeyDown事件過程的語法格式如下:SubObject_KeyDown(KeyCodeAsInteger,ShiftAsInteger)SubObject_KeyUp(KeyCodeAsInteger,ShiftAsInteger)說明:(1)KeyCode參數(shù)值是用戶所操作的鍵的掃描代碼,它告訴事件過程用戶所操作的物理鍵,例如,不管鍵盤處于小寫狀態(tài)還是大寫狀態(tài),用戶在鍵盤上按下“A”健,KeyCode參數(shù)值相同。對于有上檔字符和下檔字符的鍵,其KeyCode也是相同的,為下檔字符的ASCII碼?,F(xiàn)在是43頁\一共有66頁\編輯于星期一
keycode參數(shù)通過
ASCII值或鍵代碼常數(shù)來識別鍵。字母鍵的鍵代碼與此字母的大寫字符的
ASCII值相同。所以
“A”和
“a”的
keycode都是由
Asc(“A”)返回的數(shù)值。表10.7Keycode和KeyAscii值現(xiàn)在是44頁\一共有66頁\編輯于星期一2.KeyDown和KeyUp事件
KeyUp和KeyDown事件過程的語法格式如下:SubObject_KeyDown(KeyCodeAsInteger,ShiftAsInteger)SubObject_KeyUp(KeyCodeAsInteger,ShiftAsInteger)說明:(2)Shift參數(shù)是一個整數(shù),表示鍵盤事件發(fā)生時Shift、Ctrl和Alt鍵的狀態(tài)。Shift是一個位域參數(shù),由若干位組成,每個位的信息指出某一種狀態(tài)是打開(用1表示)還是關閉(用0表示)。其中最右側三位用來表示Shift、Ctrl和Alt鍵的狀態(tài),相應二進制位為0時表示未按下對應鍵,為1時表示按下了對應鍵。Alt鍵Ctrl鍵Shift鍵第3位第2位第1位現(xiàn)在是45頁\一共有66頁\編輯于星期一例如:下例是用Shift參數(shù)判斷是否按下了字母的大寫形式。PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=vbKeyAAndShift=1ThenMsgBox"YoupressedtheuppercaseAkey."EndifEndSub表10.8Shift參數(shù)的值二進制值十進制值系統(tǒng)常數(shù)意義0011vbShiftMask按Shift鍵0102vbCtrlMask按Ctrl鍵1004vbAltMask按Alt鍵0113vbShiftMask+vbCtrlMask按Shift鍵和Ctrl鍵1015vbShiftMask+vbAltMask按Shift鍵和Alt鍵1106vbCtrlMask+vbAltMask按Ctrl鍵和Alt鍵1117vbCtrlMask+vbAltMask+vbShiftMask按Shift、Ctrl和Alt鍵現(xiàn)在是46頁\一共有66頁\編輯于星期一【例10.12】設計一個程序,當按下Alt+F5組合鍵時終止程序的運行。
先把窗體的KeyPreview設置為True,再編寫如下的程序:PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)'按下Alt鍵時,Shift的值為4If(KeyCode=vbKeyF5)And(Shift=vbAltMask)ThenEndEndSub10.4鍵盤和鼠標事件注意:KeyAscii是獲取鍵的Ascii值,就是說你按下主鍵區(qū)的數(shù)字和按下數(shù)字鍵區(qū)的數(shù)字返回的是同一個Ascii值,同一個字母大、小寫的KeyAscii是不同的。KeyCode值返回的相當于每個鍵的標號,每個鍵都有一個不同的KeyCode值,因而通過KeyCode值可以判斷光標鍵、回車鍵等鍵是否按下,可用于程序的特殊控制。現(xiàn)在是47頁\一共有66頁\編輯于星期一10.4鍵盤和鼠標事件
大多數(shù)控件能夠識別鼠標的MouseMove、MouseDown和MouseUp事件,通過響應這些鼠標事件,能在應用程序?qū)κ髽宋恢眉盃顟B(tài)的變化作出響應操作。MouseMove每當鼠標指針移動到屏幕新位置時發(fā)生MouseDown
按下任意鼠標鍵按鈕時發(fā)生MouseUp
釋放任意鼠標鍵按鈕時發(fā)生10.4.2鼠標事件現(xiàn)在是48頁\一共有66頁\編輯于星期一MouseMove、MouseDown、MouseUp三個事件的過程的語法格式如下:SubObject_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)SubObject_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)SubObject_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
說明:
1.Object是可選的一個對象表達式,可以是窗體對象和大多數(shù)可視控件。
2.Button參數(shù)是表示按下或松開鼠標哪個按鈕,
10.4.2鼠標事件現(xiàn)在是49頁\一共有66頁\編輯于星期一
參數(shù)Button值參數(shù)(Button) 值 說明vbLeftButton 1 左按鈕被按下vbRightButton 2 右按鈕被按下vbMiddleButton 4 中間按鈕被按下10.4.2鼠標事件現(xiàn)在是50頁\一共有66頁\編輯于星期一3.Shift參數(shù)包含了Alt、Ctrl和Shift鍵的狀態(tài)信息,和鍵盤事件過程中的Shift參數(shù)含義相同。如果要檢測Ctrl和Shift鍵是否同時被按下,則應使用表達式(ShiftAndvbCtrlMask)And(ShiftAndvbShiftMask),或者表示為Shift=3。10.4.2鼠標事件4.X,Y:表示當前鼠標指針的位置【例10.13】設計一個簡單的繪圖應用程序。當按下任意鼠標鍵并拖動時,MouseDown事件過程和一個相關的MouseMove事件過程協(xié)同工作以啟動繪圖。MouseUp事件過程禁止繪圖。圖10.19簡單畫圖程序現(xiàn)在是51頁\一共有66頁\編輯于星期一1.添加窗體2.刪除窗體3.保存窗體10.5.1管理多重窗體10.5多重窗體與多模塊程序設計10.5.2設置啟動窗體1.設置啟動窗體2.啟動時不加載窗體圖10.21“工程1-工程屬性”對話框在某些情況下,應用程序啟動時不加載任何窗體,如先運行裝入數(shù)據(jù)文件的代碼,然后再根據(jù)數(shù)據(jù)文件的內(nèi)容在不同窗體中選擇要打開的窗體。要實現(xiàn)此功能,可以在工程中添加一個標準模塊Module1,然后在標準模塊中創(chuàng)建一個名為Main的子過程,在過程中按要求進行編程。如下面的例子所示?,F(xiàn)在是52頁\一共有66頁\編輯于星期一Submain()Dimpasswordpassword=InputBox("請輸入口令","用戶注冊")Ifpassword=""ThenMsgBox"沒有輸入密碼,本次程序運行結束!",vbInformationExitSubEndIfIfpassword="123456"ThenMsgBox("歡迎使用Form1!"),vbInformation,titleForm1.ShowElseMsgBox"對不起,你不是合法用戶!,只能使用Form2",vbCritical,titleForm2.ShowEndIfEndSub10.5多重窗體與多模塊程序設計這個子過程不能放在窗體模塊中,必須放在標準模塊Module1中。如果要將SubMain過程設為啟動對象,在“工程屬性”對話框中設置啟動對象為“SubMain”?,F(xiàn)在是53頁\一共有66頁\編輯于星期一10.5.3窗體處理語句和方法1.Load語句:該語句用來將新創(chuàng)建的窗體加載到內(nèi)存中格式:Load窗體名2.Show方法:該方法用來顯示一個窗體格式:窗體名.Show模式其中:模式用來確定窗體的狀態(tài),有0和1兩個值。0(默認值)表示非模態(tài)的,1表示模態(tài)。模態(tài)窗體和非模態(tài)窗體的區(qū)別。3.Hide方法:用于隱藏顯示在屏幕上的窗體格式:窗體名.Hide現(xiàn)在是54頁\一共有66頁\編輯于星期一10.5.3窗體處理語句和方法4.Unload語句:該語句與Load語句的功能相反,指從內(nèi)存中刪除指定的窗體格式:UnLoad窗體名5.Print方法:該方法用于在窗體上輸出數(shù)據(jù)格式:窗體名.Print數(shù)據(jù)列表6.Cls方法:該方法用于清除程序運行時在窗體上顯示的文本或圖形。但Cls方法并不能清除在設計階段設置的文本和圖形。格式:窗體名.Cls現(xiàn)在是55頁\一共有66頁\編輯于星期一【例10.14】
編一個學生成績處理程序,要求如下:程序包含3個窗體和1個標準模塊主窗體是程序的主界面,提供用戶選擇操作,并根據(jù)用戶選擇的操作打開對應功能的窗體,主窗體的界面如圖10.22(a)所示。在主窗體上單擊“輸入成績”按鈕后,打開輸入成績窗口,如圖10.22(b)所示。在窗體中輸入一同學4門課程成績后,單擊“返回”按鈕,將輸入的成績保存在全局變量中。在主窗體上單擊“計算成績”按鈕后,打開計算成績窗口,如圖10.22(c)所示。評價學生的等級:平均成績90分以上為優(yōu)秀,80~89為良好,70~79為中等,60~69為及格,60分以下為不及格。10.5.4多模塊程序設計示例現(xiàn)在是56頁\一共有66頁\編輯于星期一
分析:根據(jù)題目要求,本題目有三個窗體FrmMain、Form2和Form3,三個窗體上各控件按默認約定依次命名。還有一個標準模塊Module1,對窗體間公用的全局變量進行了說明。選擇啟動對象為FrmMain窗體。
圖10.22(a)主窗體界面圖10.22(b)成績錄入界面圖10.22(c)成績輸出界面方法一:在標準模塊中定義全局變量及編寫評級函數(shù)方法二:不添加標準模塊,把上面標準模塊里的代碼都寫到FrmMain中,直接進行窗體之間的數(shù)據(jù)訪問10.5.4多模塊程序設計示例現(xiàn)在是57頁\一共有66頁\編輯于星期一10.6多文檔界面設計
Windows應用程序風格:單文檔界面(SDI)多文檔界面(MDI)資源管理器風格的界面要決定使用哪種界面樣式需要看應用程序的目的。例如,一個處理學生檔案的應用程序可能要用多文檔界面樣式,一個教師很可能會同時處理一個以上學生檔案,或者需要對兩個學生進行比較。另一方面,日歷程序最好設成單文檔界面樣式,因為一般不會同時打開一個以上日歷。現(xiàn)在是58頁\一共有66頁\編輯于星期一10.6.1多文檔界面特點標準窗體MDI窗體MDI子窗體
多文檔界面由父窗口和子窗口組成,一個父窗口可包含多個子窗口,子窗口最小化后將以圖標形式出現(xiàn)在父窗口中,而不會出現(xiàn)在Windows的任務欄中。當最小化父窗口時,所有的子窗口也被最小化,只有父窗口的圖標出現(xiàn)在任務欄中。父窗口就是MDI窗體,子窗口是指MDChild屬性為True的普通窗體。1.區(qū)分MDI窗體與MDI子窗體在工程資源管理器的窗口中MDI窗體、MDI子窗體和標準窗體使用不同的圖標來顯示。如圖10.23所示,窗體圖標的左下角有一個小窗體的為MDI子窗體。現(xiàn)在是59頁\一共有66頁\編輯于星期一10.6.1多文檔界面特點2.多文檔界面的特點所有子窗體均顯示在MDI窗體的工作空間內(nèi)。像其他的窗體一樣,用戶能移動子窗體和改變子窗體的大小,但它們被限制在MDI窗體工作空間內(nèi)。
當MDI窗體最小化或關閉時,它所包含的所有子窗體都會被最小化或關閉。當各子窗體最小化時,最小化圖標將顯示在MDI窗體底部而不是在任務欄中。只有MDI窗體最小化后其圖標才顯示在任務欄中。
當子窗體最大化時,它的標題會與MDI窗體的標題組合在一起顯示在MDI窗體的標題欄上。MDI父窗體和子窗體可以有各自的菜單,活動子窗體的菜單顯示在MDI窗體的菜單欄中,而不是顯示在子窗體中。現(xiàn)在是60頁\一共有66頁\編輯于星期一在VisualBasic中創(chuàng)建多文檔界面的步驟如下:(1)打開“工程”菜單,選擇“添加MDI窗體”,打開“添加
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商務星球版地理八年級下冊:8.2 《新疆維吾爾自治區(qū)》 聽課評課記錄
- 八年級政治下冊第六單元我們的人身權利6.2《維護人格尊嚴》情境探究型聽課評課記錄(粵教版)
- 個人中介房屋租賃協(xié)議書范本
- 房屋轉(zhuǎn)租三方合同范本
- 樓層架管出租協(xié)議書范本
- 私立中學轉(zhuǎn)讓合同書
- 2025年度互聯(lián)網(wǎng)廣告合同終止的多重市場監(jiān)管情形
- 區(qū)中心房屋租賃合同范本
- 2025年度商品車運輸與新能源汽車充電設施安裝合同
- 二零二五年度新能源研發(fā)私人廠房租賃合同
- Unit 6 Beautiful landscapes Integration 說課稿 -2024-2025學年譯林版英語七年級下冊001
- 五四制青島版三年級數(shù)學下學期教學計劃
- 2024年常德職業(yè)技術學院單招職業(yè)適應性測試題庫
- ABB工業(yè)機器人應用技術 課件 2.6系統(tǒng)輸入輸出與IO信號的關聯(lián)
- 山東省濟南市2023-2024學年高二上學期期末考試化學試題 附答案
- 2025 年福建省中考語文試題:作文試題及范文
- 短視頻運營績效考核表KPI-企業(yè)管理
- 【譯林】九下英語單詞默寫表
- 15J403-1-樓梯欄桿欄板(一)
- QC課題提高金剛砂地面施工一次合格率
- 呼吸科護理管理制度
評論
0/150
提交評論