




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章VisualBasic程序的
界面設(shè)計(jì)本章的學(xué)習(xí)重點(diǎn)和難點(diǎn)對(duì)象的功能和使用場(chǎng)合對(duì)象的主要屬性、方法和事件
合理選用對(duì)象和窗體布局
常用控件PictureBox圖片框TextBox文本框CommandButton命令按鈕OptionButton選項(xiàng)按鈕ListBox列表框Vscroll垂直滾動(dòng)條Label標(biāo)簽Frame框架CheckBox復(fù)選框ComboBox組合框Hscroll水平滾動(dòng)條Timer計(jì)時(shí)器Shape形狀Line線條Image圖像框3.1公共屬性定制窗體(或其他對(duì)象)屬性的方法
在設(shè)計(jì)態(tài)通過屬性窗口為其設(shè)定各種屬性值必須先選中對(duì)象,后設(shè)置屬性;在屬性窗口列出的屬性中大多可采用系統(tǒng)缺省值
在程序代碼中改變屬性值[對(duì)象名.]屬性名=屬性值 當(dāng)程序運(yùn)行,執(zhí)行完以上代碼行時(shí),會(huì)將等號(hào)左邊對(duì)象的相應(yīng)屬性值設(shè)置或更改為等號(hào)右邊的屬性值3.1公共屬性Name名稱屬性標(biāo)識(shí)引用對(duì)象的作用(所有對(duì)象都具有的屬性)每個(gè)對(duì)象在創(chuàng)建時(shí),VB就自動(dòng)為它創(chuàng)建一個(gè)默認(rèn)名稱(對(duì)象類名后跟編號(hào),編號(hào)從1開始,依次順延)
;自行命名對(duì)象的命名規(guī)則:必須以一個(gè)字母或漢字開頭,可包含字母、數(shù)字、漢字和下劃線,但不能包含空格和西文標(biāo)點(diǎn)符號(hào),長(zhǎng)度不得超過40個(gè)字符在同一窗體中,控件對(duì)象的名稱屬性值是唯一的、不能同名,在同一工程中,窗體對(duì)象也不能同名設(shè)計(jì)態(tài)時(shí),通過屬性窗口設(shè)置Name屬性;在程序運(yùn)行時(shí),它是只讀的,不能改變3.1公共屬性Caption標(biāo)題屬性該屬性是對(duì)象上或標(biāo)題欄上顯示的內(nèi)容,往往在外觀上起到提示和標(biāo)志的作用在設(shè)計(jì)態(tài)和程序運(yùn)行時(shí),均可修改該屬性值注意它與Name屬性的區(qū)別NameCaption3.1公共屬性Enabled活動(dòng)屬性
決定對(duì)象是否響應(yīng)用戶或系統(tǒng)事件缺省值為“True”,表示可以響應(yīng)用戶或系統(tǒng)的事件;當(dāng)設(shè)置為“False”,表示禁止該對(duì)象響應(yīng)事件,往往在程序運(yùn)行時(shí)控件對(duì)象呈暗淡色除了幾何圖形、直線控件外,所有對(duì)象均有Enabled屬性Enabled屬性為True
Enabled屬性為False3.1公共屬性Height、Width、Top和Left大小、位置屬性
Height、Width屬性分別決定對(duì)象大小的高度和寬度Top表示對(duì)象到直接容器上邊框的距離,Left表示對(duì)象到直接容器左邊框的距離單位特維:1twip=1/20點(diǎn)=1/1440英寸=1/567厘米在默認(rèn)坐標(biāo)系統(tǒng),把該對(duì)象所在的直接容器的左上角頂點(diǎn)作為坐標(biāo)原點(diǎn),該對(duì)象的Left和Top屬性值則是該對(duì)象左上角頂點(diǎn)相對(duì)于坐標(biāo)原點(diǎn)的X、Y坐標(biāo)示意圖
TopHeightLeftWidth對(duì)象大小、位置屬性示意圖(0,0)3.1公共屬性Visible可視屬性決定對(duì)象在程序運(yùn)行時(shí)是否可見缺省值為“True”表示可見,“False”表示對(duì)象存在,但對(duì)象隱藏、不可見Font系列字體屬性FontName字體類型FontSize字體大小FontBold粗體FontItalic斜體FontStrikethru加刪除線FontUnderLine加下劃線[例題3-1]例題3-1在窗體上建立一個(gè)標(biāo)簽,名稱為L(zhǎng)abel1,運(yùn)行時(shí)單擊窗體界面如圖所示
PrivateSubForm_Click()Label1.Caption="歡迎您使用VB!"Label1.FontName="隸書"Label1.FontSize=24Label1.FontBold=TrueLabel1.FontItalic=TrueLabel1.FontStrikethru=TrueLabel1.FontUnderline=TrueEndSub實(shí)例演示3.1公共屬性Font系列字體屬性對(duì)于不同的對(duì)象可以分別設(shè)置不同F(xiàn)ont屬性,若要為窗體中所有控件對(duì)象設(shè)置相同F(xiàn)ont屬性,可以先對(duì)窗體設(shè)置Font屬性,而后再創(chuàng)建的控件對(duì)象在缺省情況下都自動(dòng)采用窗體的Font屬性值,除非用戶再自行設(shè)置3.1公共屬性ForeColor、BackColor、BackStyle屬性設(shè)置對(duì)象上顯示文本或圖形的前景顏色和背景顏色ForeColor前景顏色;BackColor背景顏色;其值是一個(gè)16進(jìn)制的常數(shù);通常在編寫代碼時(shí),常用Qbcolor或RGB函數(shù)為其設(shè)置顏色BackStyle屬性用于設(shè)置背景風(fēng)格。屬性值為0時(shí),表示該對(duì)象透明顯示,即對(duì)象的背景顏色BackColor不起作用;屬性值為1時(shí),表示對(duì)象不透明顯示,即此時(shí)為對(duì)象設(shè)置背景色才有效3.1公共屬性BorderStyle屬性設(shè)置對(duì)象的邊框風(fēng)格屬性值為0時(shí),表示對(duì)象周圍無邊框;為1時(shí),表示對(duì)象有單線邊框該屬性對(duì)于某些不同對(duì)象而言,還有其他不同的取值和意義3.1公共屬性MousePointer、MouseIcon屬性MousePointer設(shè)置在運(yùn)行時(shí)鼠標(biāo)移動(dòng)到對(duì)象上時(shí)顯示的鼠標(biāo)指針類型MousePointer取值在0~15之間,僅當(dāng)取值為99時(shí)表示用戶自定義圖標(biāo)MouseIcon屬性起作用,即可用MouseIcon設(shè)置自定義的鼠標(biāo)圖標(biāo),類型為.ico或.cur常用的圖片在Graphics目錄下3.1公共屬性ToolTipText提示屬性設(shè)置在運(yùn)行時(shí)鼠標(biāo)暫停在控件上時(shí)顯示的文本信息,往往起到提示作用Alignment對(duì)齊屬性設(shè)置選項(xiàng)按鈕、復(fù)選框或控件文本的對(duì)齊方式缺省值為0,表示左對(duì)齊;若為1,表示右對(duì)齊;若為2,表示居中對(duì)齊[例題3-2]例題3-2在例題3-1的基礎(chǔ)上,再添加一個(gè)標(biāo)簽,通過屬性設(shè)置,產(chǎn)生如下文字疊影效果,當(dāng)鼠標(biāo)移動(dòng)到標(biāo)簽位置處,鼠標(biāo)指針形狀從默認(rèn)的箭頭變成手形,當(dāng)鼠標(biāo)暫停在標(biāo)簽位置處,會(huì)出現(xiàn)如圖所示的文字提示信息實(shí)例演示3.1公共屬性AutoSize、WordWrap屬性AutoSize屬性決定控件是否能夠自動(dòng)調(diào)整大小以顯示控件上的整個(gè)內(nèi)容WordWrap屬性值為True,表示控件能按照文本和字體大小在垂直方向上改變顯示區(qū)域的大小,在水平方向上不發(fā)生變化;值為False,表示控件能在水平方向上按正文的長(zhǎng)度放大或縮小,在垂直方向上以字體大小來放大或縮小顯示區(qū)域僅當(dāng)AutoSize屬性為True時(shí),WordWrap屬性才有效實(shí)例演示3.1公共屬性TabIndex、TabStop屬性TabIndex屬性決定了按Tab鍵時(shí),對(duì)象在其父窗體中得到焦點(diǎn)的順序“焦點(diǎn)”代表接收用戶鼠標(biāo)或鍵盤輸入的能力。獲得焦點(diǎn)稱為聚焦,當(dāng)對(duì)象獲得焦點(diǎn)時(shí),才可接收用戶的輸入。在Windows界面下,任何時(shí)刻可運(yùn)行多個(gè)應(yīng)用程序,但只有一個(gè)包含“聚焦”窗口的應(yīng)用程序才是當(dāng)前活動(dòng)程序;同樣在一個(gè)有多個(gè)文本框所構(gòu)成的窗口中,只有具有焦點(diǎn)的那個(gè)文本框才能接收用戶的輸入若要改變Tab順序,即對(duì)象在其父窗體中得到焦點(diǎn)的順序,可以直接修改對(duì)象的TabIndex屬性的值3.1公共屬性TabIndex、TabStop屬性系統(tǒng)會(huì)根據(jù)控件創(chuàng)建的次序?yàn)榇蟛糠挚丶?除Menu、Timer、Data、Image、Line和Shape等)分配一個(gè)Tab順序,并將此次序號(hào)保存在TabIndex屬性中。在缺省情況下,第一個(gè)創(chuàng)建的控件TabIndex屬性值為0,第二個(gè)為1,依次類推。在程序運(yùn)行時(shí),按Tab鍵就按照TabIndex屬性值中的遞增次序在各個(gè)控件上循環(huán)移動(dòng)焦點(diǎn)運(yùn)行時(shí),對(duì)于不可見或被禁用的控件以及某些不能接收焦點(diǎn)的控件(如Frame和Label等控件)仍保持在Tab鍵次序中,但利用Tab鍵切換時(shí)會(huì)自動(dòng)跳過這些控件。而對(duì)于那些原本可以接收焦點(diǎn)的對(duì)象,則可以通過設(shè)置TabStop屬性值為False,達(dá)到此效果小結(jié)不同類的對(duì)象可以有一些相同的屬性,但是有些屬性并非所有對(duì)象都有,可能是該對(duì)象特有的屬性的設(shè)置可以在設(shè)計(jì)時(shí)通過屬性窗口設(shè)置,也可通過代碼窗口在編程時(shí)設(shè)置屬性窗口并未列出該對(duì)象的所有屬性,只列出設(shè)計(jì)態(tài)屬性,而有一些是只能在程序代碼中使用的運(yùn)行態(tài)屬性,當(dāng)然也有一部分屬性在運(yùn)行時(shí)是只讀的
3.2窗體窗體是VB最重要的對(duì)象,它用于創(chuàng)建VB應(yīng)用程序的用戶界面或?qū)υ捒?,是包容用戶界面或?qū)υ捒蛩璧母鞣N控件對(duì)象的容器在創(chuàng)建新工程時(shí),VB會(huì)在窗體設(shè)計(jì)器中自動(dòng)新建一個(gè)空白的窗體,要求以它為起點(diǎn)創(chuàng)建程序一個(gè)應(yīng)用程序通常包含多個(gè)窗體,其中應(yīng)有一個(gè)窗體作為程序的啟動(dòng)窗體,也就是運(yùn)行程序時(shí)首先出現(xiàn)的窗體。系統(tǒng)默認(rèn)第一個(gè)窗體,即屬性Name為Form1的窗體為啟動(dòng)(起始)窗體。用戶也可使用工程菜單→工程屬性,自定義設(shè)置起始窗體3.2窗體3.2.1窗體的主要屬性Name:窗體名稱系統(tǒng)為應(yīng)用程序的第一個(gè)窗體缺省命名為Form1,在程序代碼中通過引用窗體名稱以識(shí)別和訪問不同的對(duì)象Caption:窗體標(biāo)題窗體標(biāo)題是出現(xiàn)在窗體標(biāo)題欄的文本內(nèi)容。缺省使用窗體名的缺省值Picture:用于設(shè)置窗體中顯示的圖片F(xiàn)orm1.Picture=
LoadPicture("D:\Graphics\BEANY.bmp")Form2.Picture=Form1.Picture3.2窗體3.2.1窗體的主要屬性ControlBox和IconControlBox屬性值取True或False,表示窗體左上角是否有控制菜單框僅當(dāng)ControlBox屬性值取True,Icon屬性設(shè)置才有效,可為窗體最小化自定義一個(gè)顯示圖標(biāo)當(dāng)ControlBox屬性值取False,則無控制菜單框,這時(shí),系統(tǒng)將MaxButton和MinButton屬性自動(dòng)設(shè)置為FalseBorderStyle:窗體邊框風(fēng)格該屬性對(duì)于窗體對(duì)象在運(yùn)行是只讀。當(dāng)BorderStyle設(shè)置為除2以外的值時(shí),系統(tǒng)將MaxButton和MinButton屬性設(shè)置為False。常常利用對(duì)該屬性的設(shè)置,來設(shè)計(jì)不同的窗體形式
3.2窗體BorderStyle設(shè)定值常量風(fēng)格0VbBSNone窗口無外框,無法移動(dòng)及改變大小1VbFixedSingle單線外框,運(yùn)行時(shí)可移動(dòng)、但大小不可改變2VbSizable(缺省值)雙線外框,運(yùn)行時(shí)可移動(dòng)并可改變大小3VbFixedDouble雙線外框,運(yùn)行時(shí)窗口為固定對(duì)話框、大小不可改變4VbFixedToolWindow包含一個(gè)關(guān)閉按鈕,標(biāo)題欄字體縮小,窗口大小不可改變,在Windows95任務(wù)欄中不會(huì)顯示,外觀與工具條相似5VbSizableToolWindow包含一個(gè)關(guān)閉按鈕,標(biāo)題欄字體縮小,窗口大小能改變,在Windows95任務(wù)欄中不會(huì)顯示,外觀與工具條相似3.2窗體3.2.1窗體的主要屬性WindowsState:設(shè)置窗體執(zhí)行時(shí)的顯示狀態(tài)WindowsState屬性取值為0表示有窗口邊界的正常窗口狀態(tài),1表示以圖標(biāo)方式顯示的最小化狀態(tài),2表示無邊框充滿整個(gè)屏幕的最大化狀態(tài)
3.2窗體3.2.2窗體的主要方法Print:打印方法(用于將文本輸出到對(duì)象上)調(diào)用格式:[對(duì)象名.]Print[輸出項(xiàng)列表][{;|,}]對(duì)象除了可以是窗體外,還可以是圖片框(PictureBox)、Debug或打印機(jī)(Printer),若缺省對(duì)象名,表示將文本輸出到當(dāng)前窗體上輸出項(xiàng)列表:是由0個(gè)、1個(gè)或多個(gè)待輸出的數(shù)值表達(dá)式或字符串表達(dá)式構(gòu)成;當(dāng)輸出項(xiàng)是由多個(gè)項(xiàng)構(gòu)成,則中間必須用逗號(hào)或分號(hào)分隔;若Print后什么都不跟,則表示輸出一個(gè)空行Form1.Print1,2,3
Print1,2,3
Picture1.Print1,2,3Form1.Print
Picture1.Print3.2.2窗體的主要方法Print:打印方法[例題3-3]調(diào)用格式:[對(duì)象名.]Print[輸出項(xiàng)列表][{;|,}];(分號(hào))和,(逗號(hào))分隔符:用于分隔前后兩個(gè)輸出項(xiàng),并指定分隔符后的下一個(gè)輸出項(xiàng)的輸出位置分號(hào)(;)表示下一個(gè)輸出項(xiàng)將以緊湊格式,緊跟著上一個(gè)輸出項(xiàng)輸出,中間沒有空格逗號(hào)(,)表示采用標(biāo)準(zhǔn)格式,下一個(gè)輸出項(xiàng)將在下一個(gè)打印區(qū)(每隔14列開始一個(gè)打印區(qū),每列的寬度是所有字符的平均寬度)的起始位置輸出Print1,2,3
Print“We”;“study”;“VB”3.2窗體
標(biāo)準(zhǔn)格式
緊縮格式Print1,2,3
Print"We","study","VB5.0"運(yùn)行結(jié)果
1 -2 3
We study VB標(biāo)準(zhǔn)格式Print各數(shù)據(jù)分別存儲(chǔ)在各自的標(biāo)準(zhǔn)輸出區(qū)內(nèi),數(shù)據(jù)之間留有一定的空格字符,數(shù)據(jù)劃分非常明顯(讀取數(shù)據(jù)容易)對(duì)于一個(gè)數(shù)值型數(shù)據(jù),前面有一個(gè)符號(hào)位(對(duì)于正號(hào),不顯示但留有一個(gè)空格),數(shù)據(jù)后留有一個(gè)空格作為分隔符Print1;2;3
Print"We";"study";"VB5.0"運(yùn)行結(jié)果
1-23
WestudyVB緊縮格式Print各數(shù)據(jù)緊湊地顯示,節(jié)省空間對(duì)于一個(gè)數(shù)值型數(shù)據(jù),前面有一個(gè)符號(hào)位(對(duì)于正號(hào),不顯示但留有一個(gè)空格),數(shù)據(jù)后留有一個(gè)空格作為分隔符對(duì)于字符串?dāng)?shù)據(jù),輸出的各字符串?dāng)?shù)據(jù)間沒有空格而連成一片,造成讀取數(shù)據(jù)的困難例題3-3用Print方法的標(biāo)準(zhǔn)和緊湊格式輸出數(shù)據(jù),請(qǐng)寫出程序運(yùn)行結(jié)果PrivateSubForm_Click()Print"標(biāo)準(zhǔn)格式"Print"數(shù)值",123,Print"字符","VB"PrintPrint"緊縮格式"Print"數(shù)值";123;Print"字符";"VB"PrintPrint"標(biāo)準(zhǔn)和緊縮格式混合使用"Print"數(shù)值";123,"字符";"VB"EndSub3.2.2窗體的主要方法Print:打印方法[例題3-4]調(diào)用格式:[對(duì)象名.]Print[輸出項(xiàng)列表][{;|,}]調(diào)用Print方法打印輸出的位置是由對(duì)象的繪圖坐標(biāo)CurrentX和CurrentY屬性決定的,默認(rèn)為對(duì)象的左上角(0,0)定位輸出函數(shù):Spc(n):可選的。在顯示或打印列表中的下一個(gè)輸出項(xiàng)前插入n個(gè)空格,從而實(shí)現(xiàn)對(duì)輸出進(jìn)行定位Tab(n):可選的。用來將輸出定位在絕對(duì)n列號(hào)上,使用無參數(shù)的Tab()表示將輸出定位在下一個(gè)打印區(qū)的起始位置3.2窗體例題3-4用Print方法和定位函數(shù)輸出數(shù)據(jù)Spc(n):下一個(gè)輸出項(xiàng)前插入n個(gè)空格Tab(n):輸出定位在絕對(duì)n列號(hào)上PrivateSubForm_Click()PrintTab(8);"A"PrintTab(6);"B";Spc(2);"B"PrintSpc(3);"C";Spc(2);"C";Spc(2);"C"PrintTab(2);"D";Spc(2);"D";Spc(2);"D";Spc(2);"D"EndSub3.2窗體3.2.2窗體的主要方法Cls:清屏方法調(diào)用格式:[對(duì)象名.]Cls清除運(yùn)行時(shí)在對(duì)象中用Print和圖形方法創(chuàng)建的文本和圖形,同時(shí)將繪圖坐標(biāo)CurrentX和CurrentY屬性恢復(fù)到原點(diǎn)(0,0)對(duì)象可以是窗體或圖片框,對(duì)象名缺省時(shí),表示清除當(dāng)前窗體Form1.Cls
Cls
Picture1.Cls3.2窗體3.2.2窗體的主要方法Show和Hide:分別用于顯示和隱藏窗體
調(diào)用格式:[窗體名.]Show[Style]
[窗體名.]Hide
窗體名缺省,表示顯示或隱藏當(dāng)前窗體Show方法的Style參數(shù)決定窗體是有模式的(vbModel)還是無模式的(vbModeless)。有模式的窗體不允許用戶同時(shí)與應(yīng)用程序的其他窗體交互,無模式窗體則允許,Style缺省值是無模式的
Form1.ShowForm1.Hide
ShowHide3.2窗體3.2.2窗體的主要方法SetFocus:設(shè)置焦點(diǎn)Move:移動(dòng)方法(除時(shí)鐘和菜單外)[對(duì)象名.]Move左邊距離[,上邊距離[,寬度[,高度]]]如果對(duì)象是窗體,則“左邊距離”和“上邊距離”以屏幕左邊界和上邊界為準(zhǔn),否則以窗體的左邊界和上邊界為準(zhǔn),給出寬度和高度表示可以改變大小PrintForm:打印窗體方法Refresh:刷新方法
3.2窗體3.2.2窗體的主要事件
Click(單擊)事件:當(dāng)用戶單擊窗體時(shí)觸發(fā)本事件DblClick(雙擊)事件:當(dāng)用戶雙擊窗體時(shí)觸發(fā)本事件?!半p擊”實(shí)際上觸發(fā)兩個(gè)事件,第一次按鼠標(biāo)按鈕時(shí)產(chǎn)生Click單擊事件,第二次按鼠標(biāo)按鈕時(shí)產(chǎn)生DblClick事件Initialize(初始化)事件:在窗體被加載(Load)之前,窗體被配置的時(shí)候觸發(fā)Load(裝載)事件:VB把窗體從磁盤或從磁盤緩沖區(qū)讀入內(nèi)存時(shí)觸發(fā)本事件。Load事件往往用于在啟動(dòng)程序時(shí)對(duì)屬性和變量進(jìn)行初始化Resize事件:在窗體被改變大小時(shí),會(huì)觸發(fā)本事件3.2窗體3.2.2窗體的主要事件Paint(繪畫)事件:當(dāng)窗體被移動(dòng)或放大時(shí),或者窗體移動(dòng)時(shí)覆蓋了一個(gè)窗體時(shí),觸發(fā)本事件Activate(激活)事件:當(dāng)窗體變?yōu)榧せ畹漠?dāng)前窗口時(shí),引發(fā)本事件Deactivate(失去激活)事件:當(dāng)窗體失去激活狀態(tài),即另一個(gè)窗體成為當(dāng)前窗口時(shí),引發(fā)本事件GotFocus事件:在窗體成為當(dāng)前焦點(diǎn)時(shí)觸發(fā)本事件LostFocus事件:在窗體失去當(dāng)前焦點(diǎn)時(shí)觸發(fā)本事件QueryUnload、Unload(卸載)事件:當(dāng)關(guān)閉窗體時(shí),依次觸發(fā)卸載事件,將窗體從內(nèi)存中卸載。當(dāng)窗體被卸載后又重新裝入,則窗體中所有控件都將重新初始化3.2窗體3.2.2窗體的主要事件
學(xué)習(xí)對(duì)象的事件,主要是了解事件什么時(shí)機(jī)被觸發(fā),從而有助于選擇在哪一個(gè)事件過程中編寫代碼了解和掌握窗體的事件觸發(fā)時(shí)機(jī)和次序[例題3-5]例題3-5實(shí)例演示在運(yùn)行一個(gè)VB應(yīng)用程序時(shí),先發(fā)生啟動(dòng)窗體的Initialize事件,緊跟著是Load事件,將窗體裝入內(nèi)存之后,窗體被激活時(shí),Activate事件發(fā)生。這三個(gè)事件是在一瞬間就完成的對(duì)于窗體的Initialize和Load事件都是發(fā)生在窗體被顯示之前,所以經(jīng)常在事件過程中放置一些命令語(yǔ)句來初始化應(yīng)用程序,但所用命令語(yǔ)句是有限的,例如:“對(duì)象名.SetFocus”一類的語(yǔ)句就不能使用,而Print語(yǔ)句僅當(dāng)Form的AutoReDraw屬性值為真時(shí),在Load事件中才有效
例題3-5對(duì)于GotFocus事件,分兩種不同情況:如果窗體上沒有能聚焦的控件,那么該窗體在Activate事件發(fā)生之后立即觸發(fā)GotFocus事件如果窗體上有能聚焦的控件,那么該控件的GotFocus事件發(fā)生,而不是窗體有時(shí)應(yīng)用程序有多個(gè)窗體構(gòu)成時(shí),當(dāng)Form1由當(dāng)前窗體變成非當(dāng)前窗體時(shí),若窗體是焦點(diǎn),會(huì)先引發(fā)LostFocus事件,后引發(fā)Deactivate事件。當(dāng)該窗體再次成為當(dāng)前窗體時(shí),只要該窗體加載完畢后,沒有被卸載,就不會(huì)觸發(fā)Load事件,但會(huì)觸發(fā)Activate事件例題3-5VB程序在執(zhí)行時(shí)會(huì)自動(dòng)裝載啟動(dòng)窗體,在使用Show方法顯示窗體時(shí),也會(huì)自動(dòng)將尚未載入內(nèi)存的窗體裝入內(nèi)存,并引發(fā)窗體的Load事件。若想將窗體(或其他對(duì)象)載入內(nèi)存,但并不顯示它,則可以使用裝載語(yǔ)句裝載語(yǔ)句的格式:Load對(duì)象名VB程序在調(diào)用Hide方法,僅僅是將窗體暫時(shí)隱藏,這不同于卸載。卸載將使該對(duì)象的所有屬性重新恢復(fù)為設(shè)計(jì)態(tài)時(shí)設(shè)定的初始值;卸載還將引發(fā)對(duì)象的卸載事件。如果卸載的對(duì)象是程序唯一的窗體,則將終止程序的運(yùn)行??梢允褂眯遁d語(yǔ)句把窗體(或其他對(duì)象)從內(nèi)存卸載卸載語(yǔ)句的格式:Unload對(duì)象名對(duì)象名可以是Me,表示當(dāng)前窗體例題3-5在Windows下,用戶可通過使用菜單中的“關(guān)閉”命令或單擊應(yīng)用程序窗口上的“關(guān)閉”按鈕來關(guān)閉窗口,并結(jié)束程序的運(yùn)行。由程序來控制其結(jié)束,而不是由用戶的操作來控制時(shí),在程序代碼中可使用End語(yǔ)句End執(zhí)行該語(yǔ)句將終止應(yīng)用程序的執(zhí)行,并從內(nèi)存卸載所有窗體3.3文本控件文本控件主要用于顯示文本信息標(biāo)準(zhǔn)控件標(biāo)簽文本框3.3文本控件3.3.1標(biāo)簽(Label)主要用于在窗體上增加文字說明標(biāo)簽控件在程序運(yùn)行時(shí)不具有交互性,即標(biāo)簽內(nèi)容只能通過Caption屬性來設(shè)置或修改,不能由用戶在程序運(yùn)行時(shí)直接編輯主要屬性Name(名稱)、Caption(標(biāo)題屬性即為標(biāo)簽所顯示的文本內(nèi)容)、Alignment(對(duì)齊屬性)、AutoSize(大小自適應(yīng)屬性)、BackStyle(背景風(fēng)格屬性)等方法:Refresh(刷新)、Move(移動(dòng))事件:Click(單擊)、DblClick(雙擊)等3.3文本控件3.3.2文本框(TextBox)主要用于接收用戶在框內(nèi)輸入以及編輯、修改的信息,或顯示由程序提供的信息在程序運(yùn)行中,具有良好的交互性
主要屬性主要方法主要事件3.3.2文本框(TextBox)主要屬性Name(名稱):文本框名稱Text(文本):文本框不具有Caption屬性,用戶從文本框輸入和編輯、修改的文本內(nèi)容就保存在Text屬性中,常常通過獲取該屬性值來獲取用戶輸入或編輯的數(shù)據(jù)。Text屬性的文本內(nèi)容最多為2048個(gè)字符,除非MultiLine屬性True,則可輸入多達(dá)32KB的文本。Locked:決定文本框是否可以被編輯修改,若取值為True,表示此時(shí)文本框中的內(nèi)容是只讀的、不具有交互性,類似于標(biāo)簽,經(jīng)常用于創(chuàng)建只讀文本框3.3.2文本框(TextBox)主要屬性MaxLength(最大長(zhǎng)度):缺省值是0,表示文本框可接受任意個(gè)數(shù)的字符,否則,文本框只接受MaxLength屬性設(shè)定的字?jǐn)?shù)。在VB中字符的長(zhǎng)度以字為單位,即一個(gè)西文字符與一個(gè)漢字都是一個(gè)字,長(zhǎng)度為1PasswordChar(口令):缺省值為空,表示正常顯示輸入的字符;如該屬性的值為某個(gè)字符(*),則表示本文本框用于輸入口令,用戶輸入的內(nèi)容仍保存在Text屬性中,但輸入的每個(gè)字符將被代換為PasswordChar屬性設(shè)定的字符顯示在文本框中。PasswordChar和MaxLength屬性配合,常用于創(chuàng)建口令(密碼)文本框
3.3.2文本框(TextBox)主要屬性MultiLine(多行):屬性值為“True”(真),則可輸入和顯示多行文本;若為“False”(假),則只能輸入一行文本。該屬性不能在程序中改變,當(dāng)本屬性為“True”時(shí),PasswordChar屬性設(shè)置則無效ScrollBars(滾動(dòng)條):缺省值為“0”(無滾動(dòng)條);若該屬性設(shè)置為“1”,表示有水平滾動(dòng)條;若為“2”,表示有垂直滾動(dòng)條;若為“3”,表示水平與垂直滾動(dòng)條兩者都有。本屬性只有在MultiLine屬性為“True”時(shí)才有效3.3.2文本框(TextBox)主要屬性SelStart、SelLength和SelText屬性:在程序運(yùn)行中,用于控制文本框中的插入點(diǎn)和文本選定操作SelStart屬性決定選定文本的開始位置,第一個(gè)字符位置是0SelLength屬性決定選定文本的長(zhǎng)度SelText屬性設(shè)定或存放由前兩個(gè)屬性選定的文本內(nèi)容Text1.SelStart=1
Text1.SelLength=3
Text2.Text=Text1.SelText3.3.2文本框(TextBox)主要方法SetFocus:設(shè)置焦點(diǎn),本方法可使指定的文本框(或其他有聚焦能力的對(duì)象)成為焦點(diǎn),也就是當(dāng)前文本框,成為焦點(diǎn)的文本框中具有閃動(dòng)的光標(biāo)Refresh:刷新3.3.2文本框(TextBox)主要事件KeyPress:當(dāng)用戶按下或松開鍵盤上某個(gè)按鍵時(shí),發(fā)生本事件Change:當(dāng)文本框的Text屬性,即文本的內(nèi)容發(fā)生變化時(shí),就引發(fā)本事件LostFocus:當(dāng)文本框失去焦點(diǎn)時(shí),引發(fā)本事件一般經(jīng)常用以上三個(gè)事件過程中設(shè)置代碼,來實(shí)現(xiàn)對(duì)輸入文本框中的內(nèi)容進(jìn)行檢查、驗(yàn)證和確認(rèn)GotFocus:當(dāng)文本框得到焦點(diǎn)時(shí),引發(fā)本事件[例題3-6][例題3-7]例題3-6程序運(yùn)行時(shí),通過用戶輸入,同步設(shè)置窗體的標(biāo)題,即用戶輸入什么,窗體標(biāo)題就同步顯示什么分析:接收用戶輸入——文本框用戶輸入的內(nèi)容保存在文本框的Text屬性中窗體的標(biāo)題與文本框內(nèi)容一致——賦值將文本框內(nèi)容Text賦予窗體的標(biāo)題屬性Caption同步顯示——文本框Change事件實(shí)例演示PrivateSubText1_Change()Form1.Caption=Text1.TextEndSub例題3-7一個(gè)簡(jiǎn)單的登陸窗口,要求輸入學(xué)號(hào)(必須由6位數(shù)字字符構(gòu)成)、口令(studyvb6),按回車鍵結(jié)束輸入,若學(xué)號(hào)、口令輸入正確,顯示正確登陸信息,并清空文本框,等待下一次登陸,否則,顯示不正確信息,并自動(dòng)選定文本,等待用戶重新輸入分析:接收用戶輸入——文本框用戶輸入的內(nèi)容保存在文本框的Text屬性中驗(yàn)證輸入文本框中的內(nèi)容是否正確——文本框KeyPress、LostFocus事件清空文本框——Text屬性設(shè)置為""自動(dòng)選定文本——SelStart、SelLength和SelText屬性實(shí)例演示3.4命令按鈕(CommandButton)命令按鈕在VB應(yīng)用程序中是使用最多的控件對(duì)象之一,用戶用鼠標(biāo)單擊命令按鈕,用來啟動(dòng)、中斷或結(jié)束某個(gè)任務(wù),它是用戶和程序交互最簡(jiǎn)單的方法。但具體產(chǎn)生的動(dòng)作則由相應(yīng)的單擊事件過程中的程序代碼決定主要屬性主要方法SetFocus:設(shè)置焦點(diǎn)。設(shè)置為焦點(diǎn)的按鈕在其表面有一個(gè)虛邊框
主要事件3.4命令按鈕(CommandButton)主要屬性Caption(標(biāo)題):屬性值是顯示在按鈕上的文字"關(guān)閉"創(chuàng)建命令按鈕的訪問鍵快捷方式:&訪問鍵
運(yùn)行時(shí),同時(shí)按下Alt+訪問鍵,即可觸發(fā)命令按鈕的單擊事件"&Close"若不創(chuàng)建訪問鍵,但需要在標(biāo)題中包含“&”連字符,則應(yīng)設(shè)置連續(xù)的兩個(gè)連字符"Add&&Minus"3.4命令按鈕(CommandButton)主要屬性Default(確定):每個(gè)窗體可選擇一個(gè)命令按鈕作為默認(rèn)的確認(rèn)按鈕,即不管窗體上目前哪個(gè)控件對(duì)象具有焦點(diǎn),只要用戶按“Enter”回車鍵,就等同于單擊該命令按鈕;指定該默認(rèn)的確認(rèn)按鈕,只需將其Default屬性值設(shè)為“True”(真)Cancel(取消):每個(gè)窗體可選擇一個(gè)命令按鈕作為默認(rèn)的取消按鈕,只需將這個(gè)命令按鈕的Cancel屬性設(shè)為“True”,則不管目前窗體的哪個(gè)控件對(duì)象具有焦點(diǎn),按“Esc”鍵即等同于單擊本按鈕Enabled(活動(dòng)):決定按鈕是否響應(yīng)用戶或系統(tǒng)事件實(shí)例演示3.4命令按鈕(CommandButton)主要屬性Style(風(fēng)格):缺省值為“0”,表明按鈕的風(fēng)格為標(biāo)準(zhǔn)格式,即按鈕表面顯示Caption屬性設(shè)置的文本;若設(shè)為“1”,則為圖形風(fēng)格,按鈕上顯示圖形Picture(圖片):設(shè)置按鈕上顯示的圖形(.bmp或.ico)復(fù)選框和選項(xiàng)按鈕控件也具有這兩個(gè)屬性DisabledPicture與DownPicture:分別用于設(shè)置按鈕無效時(shí)與按鈕處于按下狀態(tài)時(shí)顯示的圖形Value:在運(yùn)行態(tài),若將命令按鈕的Value屬性值由默認(rèn)的False設(shè)置為True,則會(huì)觸發(fā)命令按鈕的單擊事件3.4命令按鈕(CommandButton)主要事件:最基本最重要的鼠標(biāo)單擊事件Click在實(shí)際編程時(shí),常常利用命令按鈕的單擊事件,編寫一些代碼完成所需的具體操作,例如:計(jì)算、清除、關(guān)閉等在程序運(yùn)行時(shí)觸發(fā)命令按鈕單擊事件的情況用鼠標(biāo)單擊按鈕按Tab鍵或調(diào)用SetFocus方法,將焦點(diǎn)轉(zhuǎn)移到按鈕上,然后按空格鍵或Enter回車鍵使用按鈕的訪問鍵(Alt+訪問鍵)命令按鈕的Default屬性為True的情況下按Enter回車鍵;命令按鈕的Cancel屬性為True的情況下按Esc鍵用代碼設(shè)置命令按鈕的Value屬性為True例題3-8建立一個(gè)允許輸入、剪切、復(fù)制和粘貼的文本編輯程序分析:選中文本內(nèi)容(SelText<>""),才能進(jìn)行剪切和復(fù)制——Enabled剪貼板中的內(nèi)容可以被反復(fù)粘貼圖片按鈕——Style、Picture按鈕的Click事件過程的編寫實(shí)例演示3.5選擇控件能直接提供輸入選項(xiàng),方便用戶選擇錄入標(biāo)準(zhǔn)控件選項(xiàng)按鈕、復(fù)選框列表框、組合框3.5選擇控件3.5.1選項(xiàng)按鈕(OptionButton)、復(fù)選框(CheckBox)與框架(Frame)選項(xiàng)按鈕和復(fù)選框——顯示選項(xiàng),供用戶從中選擇選項(xiàng)按鈕通常成組出現(xiàn),供用戶從中必須選擇其中之一且最多只能選取一項(xiàng),即當(dāng)用戶選中其中一個(gè)選項(xiàng)時(shí),同組其他選項(xiàng)會(huì)自動(dòng)失效,就象單選題復(fù)選框可以單個(gè)或多個(gè)成組出現(xiàn),用戶可以選定任意數(shù)目的選項(xiàng),也可以什么都不選,選項(xiàng)間無任何關(guān)聯(lián),就象不定向選擇題框架經(jīng)常用于將其他控件對(duì)象按功能組織成一個(gè)可標(biāo)識(shí)的組,同時(shí)讓窗體界面更加整齊有序?qū)嵗菔?.5選擇控件3.5.1選項(xiàng)按鈕(OptionButton)、復(fù)選框(CheckBox)與框架(Frame)主要屬性Caption:設(shè)置選項(xiàng)按鈕和復(fù)選框的文本注釋內(nèi)容;決定框架的標(biāo)題名稱,若為空,則形成封閉框架框Value:決定選項(xiàng)按鈕和復(fù)選框的選項(xiàng)按鈕的Value的取值為True和False,分別表示選中和未選中復(fù)選框的Value的取值有三種:0表示未選中,1表示選中,2變灰表示暫時(shí)不能訪問經(jīng)常利用該屬性值的判斷和設(shè)置選中狀態(tài)實(shí)例演示3.5選擇控件3.5.1選項(xiàng)按鈕(OptionButton)、復(fù)選框(CheckBox)與框架(Frame)主要事件選項(xiàng)按鈕、復(fù)選框和框架都能接收Click事件單擊選項(xiàng)按鈕或復(fù)選框時(shí),會(huì)自動(dòng)改變其選中狀態(tài)選項(xiàng)按鈕或復(fù)選框的GotFocus事件[例題3-9]利用框架將控件分組時(shí),應(yīng)首先創(chuàng)建Frame控件,然后必須在Frame控件內(nèi)部創(chuàng)建分組控件,否則無法真正實(shí)現(xiàn)功能分組在Frame控件內(nèi)部創(chuàng)建的控件和框架是一個(gè)整體,將隨框架容器一起移動(dòng)、顯示、消失和屏蔽
例題3-9編寫一個(gè)簡(jiǎn)單的字體格式設(shè)置程序分析:需要哪些控件對(duì)象:選項(xiàng)按鈕、復(fù)選框、框架、標(biāo)簽用戶的選擇改變標(biāo)簽字體的變化——選項(xiàng)按鈕、復(fù)選框的Click事件編寫代碼如何了解用戶的選擇——判斷選項(xiàng)按鈕、復(fù)選框的Value屬性值PrivateSubCheck1_Click()'粗體復(fù)選框的單擊事件
IfCheck1.Value=1Then'若粗體復(fù)選框選中
Label1.FontBold=True'設(shè)置粗體
ElseIfCheck1.Value=0Then'若粗體復(fù)選框未選
Label1.FontBold=False'取消粗體
EndIfEndSub3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)列表框和組合框控件——通過列表的形式顯示多個(gè)項(xiàng)目,供用戶選擇,實(shí)現(xiàn)交互。當(dāng)列表項(xiàng)目很多,無法全部顯示,會(huì)自動(dòng)出現(xiàn)垂直滾動(dòng)條,方便用戶瀏覽選擇。列表框僅能為用戶提供選擇的列表,不能由用戶直接輸入和修改其中的列表項(xiàng)內(nèi)容組合框是文本框和列表框功能的組合控件,所以用戶可以通過在其文本框中輸入,來選擇列表項(xiàng)
實(shí)例演示3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要屬性List:用于保存和設(shè)置每一個(gè)列表項(xiàng)內(nèi)容在程序中的訪問形式
列表框或組合框名.List(列表項(xiàng)序號(hào))
列表項(xiàng)序號(hào)是為列表項(xiàng)進(jìn)行的位置編號(hào),從上至下依次為0、1、2…屬性窗口設(shè)置List:在添加每個(gè)列表項(xiàng)時(shí),按Ctrl+Enter鍵可以進(jìn)行下一個(gè)列表項(xiàng)的連續(xù)添加,按Enter鍵表示結(jié)束設(shè)置List1.List(0)List1.List(1)List1.List(2)…
List1.List(4)3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要屬性ListCount(運(yùn)行態(tài)屬性):當(dāng)前列表框中列表項(xiàng)總數(shù)通過ListCount-1得到最后一個(gè)列表項(xiàng)的序號(hào)ListIndex(運(yùn)行態(tài)屬性):其值是最后選中的列表項(xiàng)位置序號(hào),若未選任何項(xiàng)目,則其值為-1通過對(duì)象名.List(對(duì)象名.ListIndex)形式訪問當(dāng)前最后選中的列表項(xiàng)的內(nèi)容Text:其值等同于List(對(duì)象名.
ListIndex)不能直接設(shè)置列表框的Text(運(yùn)行態(tài)屬性)組合框的Text屬性值還表示用戶直接在編輯區(qū)輸入的文本3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要屬性Sorted(排序):取值為True時(shí),按各列表項(xiàng)內(nèi)容在字母表中的次序排序;否則不排序,即按加入順序顯示列表框的特有屬性Columns:取值為0時(shí),列表項(xiàng)單列顯示,取值大于0時(shí),列表項(xiàng)多列顯示MultiSelect:決定用戶是否可以一次選擇列表框中多個(gè)列表項(xiàng);取值0——禁止多選;1——通過鼠標(biāo)單擊或按空格鍵選定或取消多個(gè)列表項(xiàng);2——通過Shift或Ctrl與鼠標(biāo)或按空格鍵配合進(jìn)行擴(kuò)展選擇3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)列表框的特有屬性Selected(運(yùn)行態(tài)屬性):當(dāng)用戶同時(shí)選中多個(gè)列表項(xiàng)時(shí),采用列表框名.Selected(列表項(xiàng)序號(hào))形式,來判斷該列表項(xiàng)序號(hào)所對(duì)應(yīng)的列表項(xiàng)是否被選中,值為True表示選中,否則“False”表示未選中SelCount(運(yùn)行態(tài)屬性):取值是用戶同時(shí)選中多個(gè)列表項(xiàng)的數(shù)目Style:控制列表框的外觀,取值可以為0(標(biāo)準(zhǔn)形式)和1(復(fù)選框形式)3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)組合框的特有屬性Style(風(fēng)格屬性):下拉組合框
簡(jiǎn)單組合框
下拉列表框
(Style=0) (Style=1) (Style=2)3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)適用場(chǎng)合組合框適用于建議性的選項(xiàng)列表,組合框(Style=1或2)包含編輯區(qū)域,這時(shí)可輸入不在列表中的選項(xiàng)當(dāng)希望將輸入的數(shù)據(jù)限制在列表選項(xiàng)之內(nèi)時(shí),應(yīng)使用列表框或下拉列表框除簡(jiǎn)單組合框外,組合框要比列表框節(jié)省窗體空間,只有單擊組合框的向下箭頭時(shí),才顯示全部列表,所以經(jīng)常在窗體布局內(nèi)容較多的情況下選用組合框替換列表框3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要方法AddItem:為列表框和組合框添加列表項(xiàng)對(duì)象名.AddItem列表項(xiàng)文本內(nèi)容
[,插入位置序號(hào)]若不指定插入位置,則采用追加形式插入到列表尾該方法一次只能向列表中添加一個(gè)列表項(xiàng)通常在Form_Load事件過程中使用該方法來初始化列表項(xiàng)RemoveItem:用于刪除列表框和組合框中指定位置序號(hào)的列表項(xiàng)對(duì)象名.RemoveItem刪除項(xiàng)的序號(hào)該方法一次刪除一個(gè)列表項(xiàng)3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要方法Clear:刪除或清空列表框和組合框中所有的列表項(xiàng)執(zhí)行Clear方法后,ListCount屬性自動(dòng)重新被設(shè)置為0實(shí)例演示3.5選擇控件課程的錄入分析命令按鈕的Click事件AddItem、RemoveItem、Clear方法PrivateSubCommand1_Click()List1.AddItemText1.TextEndSubPrivateSubCommand2_Click()List1.RemoveItemList1.ListIndexEndSubPrivateSubCommand3_Click()List1.ClearEndSub3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要事件Click:當(dāng)用戶通過鼠標(biāo)選擇列表項(xiàng)時(shí),觸發(fā)該事件的發(fā)生在該事件中,一般編寫有關(guān)對(duì)選中列表項(xiàng)與其他控件的關(guān)聯(lián)操作DbClick:適用于列表框和簡(jiǎn)單組合框在該事件中,一般編寫有關(guān)對(duì)選中列表項(xiàng)刪除或轉(zhuǎn)移到其他控件的關(guān)聯(lián)操作DropDown:適用于下拉式的組合框和下拉式列表框;用戶單擊組合框中向下的箭頭時(shí),將觸發(fā)DropDown事件,該事件實(shí)際上對(duì)應(yīng)于向下箭頭的單擊事件3.5選擇控件3.5.2列表框(ListBox)和組合框(Combol)主要事件簡(jiǎn)單組合框和下拉組合框具有一個(gè)文本框似的編輯區(qū),所以它們具有類似于文本框的一些事件,例如:Change、KeyPress等事件[例題3-10][例題3-11]例題3-10編寫一個(gè)能夠完成課程的添加、刪除和清空的學(xué)生選課程序分析:在命令按鈕的Click事件中編寫代碼將List1中選中的列表項(xiàng)添加到List2中——List1.TextPrivateSubCmdAddItem_Click()List2.AddItemList1.TextEndSub'可用List1.List(List1.ListIndex)替換PrivateSubCmdRemove_Click()List2.RemoveItemList2.ListIndexEndSubPrivateSubCmdClear_Click()List2.Clear'清空列表框EndSub例題3-11利用簡(jiǎn)單組合框編寫一個(gè)錄入書名的程序,錄入一個(gè)書名直接按回車或按下確認(rèn)按鈕,都可將書名添加進(jìn)組合框中分析:簡(jiǎn)單組合框——Style=1直接按回車或按下確認(rèn)按鈕,可將書名添加進(jìn)組合框中
——在命令按鈕的Click事件中編寫添加代碼;設(shè)置命令按鈕的Default屬性為True或編寫組合框的KeyPress事件代碼PrivateSubCommand1_Click()'按下確認(rèn)按鈕,添加
Combo1.AddItemCombo1.TextCombo1.SetFocusEndSubPrivateSubCombo1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13Then'當(dāng)按下回車鍵,直接添加
Combo1.AddItemCombo1.TextCombo1.SetFocusEndIfEndSub3.5圖片控件VB是在Windows操作平臺(tái)下,用于開發(fā)和創(chuàng)建具有圖形用戶界面的應(yīng)用程序的強(qiáng)有力工具之一,圖形控件能美化界面和增加界面的趣味性3.6.1圖片框(PictureBox)和圖像框(Image)圖像框控件用來顯示圖形,該圖形的格式可以是BMP位圖、ICO圖標(biāo)、圖元文件、JPEG或GIF文件圖片框控件應(yīng)用更廣,不僅可以象圖像框控件那樣顯示圖形,而且可以繪制圖形、顯示文本或數(shù)據(jù),還經(jīng)常被用作其他控件的容器圖像框比圖片框占用更少的內(nèi)存,描圖速度更快
3.5圖片控件3.6.1圖片框(PictureBox)和圖像框(Image)常用屬性Picture:用于設(shè)置裝載的圖形??梢栽趯傩源翱谥性O(shè)置,也可以在運(yùn)行中通過代碼加載:對(duì)象名.Picture=LoadPicture("圖形文件名")對(duì)象名1.Picture=對(duì)象名2.Picture圖形文件名可包含文件路徑;缺省圖形文件名,表示清除圖形控件中的圖片對(duì)象名.Picture=LoadPicture()
3.5圖片控件3.6.1圖片框(PictureBox)和圖像框(Image)常用屬性Autosize(圖片框):取值為True時(shí),該控件能自動(dòng)調(diào)節(jié)大小以顯示完整的圖形Stretch(圖像框):取值為False時(shí),圖像框可自動(dòng)改變大小以適應(yīng)加載的圖形;取值為True時(shí),則加載的圖形可自動(dòng)調(diào)整尺寸以適應(yīng)圖像框的大小3.5圖片控件3.6.1圖片框(PictureBox)和圖像框(Image)圖形方法(適用于圖片框、窗體、打印機(jī))Line:用于畫直線或矩形對(duì)象名.Line[(x1,y1)]-(x2,y2)[,顏色][,B](x1,y1)和(x2,y2)表示線段的起點(diǎn)和終點(diǎn)坐標(biāo),若缺省(x1,y1)起點(diǎn)坐標(biāo),則表示從對(duì)象容器的坐標(biāo)原點(diǎn)開始繪制;B表示繪制矩形Circle:用于畫圓、橢圓、圓弧和扇形對(duì)象名.Circle(x,y),半徑
[,[起始角][,[終止角][,長(zhǎng)短軸比率]]](x,y)為圓心坐標(biāo);圓弧和扇形通過起始角、終止角控制;橢圓通過長(zhǎng)短軸比率控制3.5圖片控件3.6.1圖片框(PictureBox)和圖像框(Image)圖形方法(適用于圖片框、窗體、打印機(jī))Pset:用于畫點(diǎn)對(duì)象名.Pset(x,y),半徑[,顏色](x,y)為所畫的位置經(jīng)常用于繪制具體曲線Point:用于獲取指定點(diǎn)的RGB顏色對(duì)象名.Point(x,y)主要事件:與窗體基本相同[例題3-12]例題3-12利用上述方法和屬性,實(shí)現(xiàn)如下程序分析:圖片自動(dòng)伸縮適應(yīng)圖象框:Image1.Stretch=True圖象框加載圖片:Image1.Picture=LoadPicture("c:\winnt\FeatherTexture.bmp")Picture1.Cls清空?qǐng)D片:Picture1.Picture=LoadPicture()Picture1.Picture=Image1.Picture畫線:Picture1.Line(200,200)-(1000,1000)畫圓:Picture1.Circle(500,500),5003.5圖片控件3.6.2繪圖控件Line(直線)和Shape(形狀)僅適用于在窗體和圖片框內(nèi)繪制圖形,但繪出的圖形不支持任何事件Line(直線)的主要屬性端點(diǎn)坐標(biāo)(x1,y1)和(x2,y2)、線形屬性BorderStyle、線寬屬性BorderWidthShape(形狀)的主要屬性形狀屬性Shape(取值為0~5分別代表矩形、正方形、橢圓、圓、圓角矩形和圓角正方形)填充圖案屬性FillStyle填充顏色屬性FillColor(僅當(dāng)填充圖案為非0時(shí)填充顏色設(shè)置有效)3.5圖片控件3.6.2繪圖控件Line(直線)和Shape(形狀)Line控件設(shè)置BorderStyle=4
Shape(形狀)控件設(shè)置FillStyle=7、Shape=2、FillColor=紅色效果如圖
3.7滾動(dòng)條和計(jì)時(shí)器3.7.1滾動(dòng)條VB提供了HScroll(水平)和Vscroll(垂直)兩種滾動(dòng)條控件,用于與其他對(duì)象配合,瀏覽長(zhǎng)列項(xiàng)目和信息;有時(shí)也用于數(shù)據(jù)輸入主要屬性Max和Min屬性:設(shè)置滑塊滾動(dòng)的數(shù)值范圍SmallChange和LargeChange屬性:設(shè)置滑塊滾動(dòng)的增量值單擊滾動(dòng)條空白處用LargeChange指定其移動(dòng)量單擊滾動(dòng)條兩端箭頭用SmallChangeValue:設(shè)置當(dāng)前滑塊的位置3.7滾動(dòng)條和計(jì)時(shí)器3.7.1滾動(dòng)條主要事件Change:只要滑塊位置發(fā)生變化,即當(dāng)Value屬性值發(fā)生變化時(shí),觸發(fā)該事件Scroll:僅當(dāng)拖動(dòng)滑塊時(shí),觸發(fā)本事件單擊滾動(dòng)條兩端箭頭或滾動(dòng)條空白處時(shí)不發(fā)生Scroll事件[例題3-13]例題3-13通過改變拖動(dòng)滾動(dòng)條實(shí)現(xiàn)形狀大小的變化程序分析:形狀圓?——Shape=2滾動(dòng)條變化改變形狀的大小(Width、Height)——滾動(dòng)條的Change事件PrivateSubHScroll1_Change()Shape1.Width=HScroll1.ValueEndSubPrivateSubVScroll1_Change()Shape1.Height=VScroll1.ValueEndSub3.7滾動(dòng)條和計(jì)時(shí)器3.7.2計(jì)時(shí)器(Timer)也稱為時(shí)間控件,它響應(yīng)時(shí)間的流逝經(jīng)常利用該控件實(shí)現(xiàn)每隔一段時(shí)間有規(guī)律的完成相應(yīng)的操作計(jì)時(shí)器是在運(yùn)行時(shí)的不可見控件,它沒有位置和大小屬性主要屬性Interval:指定計(jì)時(shí)器事件之間的間隔時(shí)間,以ms(毫秒)為單位,取值范圍為0~65535;取(缺省值)為0時(shí)Timer控件無效3.7滾動(dòng)條和計(jì)時(shí)器3.7.2計(jì)時(shí)器(Timer)主要屬性Enabled:決定計(jì)時(shí)器控件是否對(duì)時(shí)間的推移做響應(yīng)。取值為False,禁用Timer控件;為True,Timer控件有效;Interval屬性必須在計(jì)時(shí)器控件的Enabled屬性為真時(shí),才能每隔Interval的時(shí)間引發(fā)一次計(jì)時(shí)器事件主要事件時(shí)間控件只有Timer事件。該事件具有周期性,通過創(chuàng)建Timer事件程序用以告訴VB在每隔Interval的時(shí)間該做什么。在實(shí)際的編程中,常常利用該事件,實(shí)現(xiàn)某些簡(jiǎn)單的動(dòng)畫或有規(guī)律的重復(fù)性操作。
[例題3-14]
例題3-14編寫程序?qū)崿F(xiàn)系統(tǒng)時(shí)間的動(dòng)態(tài)顯示,以及顯示內(nèi)容的顏色動(dòng)態(tài)變化程序分析:動(dòng)態(tài)——Timer事件時(shí)間——Now函數(shù)返回系統(tǒng)時(shí)間顏色——ForeColor屬性、RGB函數(shù)、Rnd函數(shù)PrivateSubTimer1_Timer()Label1.Caption=Now'Now函數(shù)返回系統(tǒng)時(shí)間
r=Int(Rnd*255)'Rnd函數(shù)產(chǎn)生隨機(jī)數(shù)
g=Int(Rnd*255)b=Int(Rnd*255)Label1.ForeColor=RGB(r,g,b)'RGB函數(shù)返回一個(gè)顏色值EndSub3.8焦點(diǎn)窗體和多數(shù)控件(文本框、命令按鈕、選項(xiàng)按鈕、復(fù)選框、滾動(dòng)條、圖片框、組合框、列表框)一般都能得到焦點(diǎn),而且能從外觀看出它是否得到焦點(diǎn),例如:當(dāng)文本框得到焦點(diǎn),表現(xiàn)為文本框中有閃爍的光標(biāo);而命令按鈕、選項(xiàng)按鈕、復(fù)選框等則表現(xiàn)為控件表面上有一個(gè)虛線框。對(duì)于窗體來說,只有當(dāng)窗體上沒有能聚焦的控件時(shí),該窗體才能接收焦點(diǎn)當(dāng)對(duì)象得到焦點(diǎn)時(shí),會(huì)觸發(fā)GotFocus事件;而當(dāng)對(duì)象失去焦點(diǎn)時(shí),會(huì)觸發(fā)LostFocus事件常常利用LostFocus事件過程來進(jìn)行數(shù)據(jù)的確認(rèn)和有效性檢查,同時(shí)修正或改變?cè)贕otFocus事件過程中設(shè)立的條件3.8焦點(diǎn)常用的設(shè)置焦點(diǎn)的方法程序運(yùn)行時(shí),通過單擊該對(duì)象,得到焦點(diǎn)程序運(yùn)行時(shí),使用Tab鍵、快捷的訪問鍵來選擇該對(duì)象,使其得到焦點(diǎn)使用SetFocus方法焦點(diǎn)只能移到可見的窗體和控件上,只有當(dāng)對(duì)象的Enabled和Visible屬性均為True時(shí),它才可能接收焦點(diǎn)不能直接在Form_Load事件過程中使用SetFocus方法為對(duì)象設(shè)置焦點(diǎn),因?yàn)榇绑w在Load事件完成前,窗體本身和該窗體上的控件都是不可見的。必須先顯示窗體,然后才能對(duì)窗體或其上的控件設(shè)置焦點(diǎn)PrivateSubForm_Load()Form1.Show'必須先使窗體可見
Text1.SetFocusEndSub3.9鍵盤與鼠標(biāo)事件過程3.9.1鍵盤事件過程對(duì)于接受文本輸入的控件,如:文本框、簡(jiǎn)單組合框和下拉組合框等,需要控制和處理輸入的文本,常常需要對(duì)鍵盤事件進(jìn)行編程KeyPress、KeyDown和KeyUp鍵盤事件只用于能夠聚焦的對(duì)象,如窗體、文本框、命令按鈕、選項(xiàng)按鈕、復(fù)選框、組合框、列表框、圖片框、滾動(dòng)條等控件對(duì)于窗體,僅當(dāng)它上面沒有可視和有效的控件或KeyPreview屬性被設(shè)置為True時(shí)才能接收鍵盤事件3.9鍵盤與鼠標(biāo)事件過程3.9.1鍵盤事件過程KeyPress事件當(dāng)用戶按下和松開一個(gè)能產(chǎn)生Ascii碼的鍵時(shí)發(fā)生KeyPress事件。嚴(yán)格地說,當(dāng)按下某個(gè)能產(chǎn)生Ascii碼的鍵時(shí),所觸發(fā)的是當(dāng)前得到焦點(diǎn)的那個(gè)對(duì)象的KeyPress事件PrivateSub對(duì)象名_KeyPress(KeyAsciiAsInteger)
……
EndSub參數(shù)KeyAscii就是該過程接受到的按鍵的Ascii碼按下大寫字母“B”,KeyAscii的值為66
按下小寫字母“b”,KeyAscii的值為983.9鍵盤與鼠標(biāo)事件過程3.9.1鍵盤事件過程KeyPress事件在鍵盤上的按鍵并非都能產(chǎn)生Ascii碼,如:方向鍵←、→、↑、↓、功能鍵F1~F12、Shift、Ctrl、Alt鍵就不產(chǎn)生Ascii碼,不會(huì)引發(fā)KeyPress事件,而數(shù)字、大小寫字母等可打印的鍵盤字符、Enter、BackSpace、Esc、Tab等都可以KeyPress事件過程在截取TextBox或ComboBox控件所輸入的擊鍵時(shí)是非常有用的,它可立即測(cè)試擊鍵的有效性或在字符輸入時(shí)對(duì)其進(jìn)行格式處理改變keyascii參數(shù)的值會(huì)改變所顯示的字符[例題3-15]
、[例題3-16]
例題3-15編寫程序,實(shí)現(xiàn)對(duì)于用戶在文本框中輸入的字母,不管大小寫,始終以大寫顯示在文本框中分析:小寫字母按鍵的Ascii值的范圍——[97,122]小寫轉(zhuǎn)換成大寫字符——小寫字母與大寫字母的Ascii差值為32輸入時(shí)立即轉(zhuǎn)換——編寫文本框的KeyPress事件過程PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii>=97AndKeyAscii<=122Then'判斷是否是小寫字母
KeyAscii=KeyAscii–32'小寫轉(zhuǎn)換成大寫
EndIfEndSub例題3-16在默認(rèn)情況下,控件的鍵盤事件優(yōu)先于窗體的鍵盤事件,因此在發(fā)生鍵盤事件時(shí),總是激活目前得到焦點(diǎn)的控件的鍵盤事件;若窗體的KeyPreview屬性被設(shè)置為True(默認(rèn)為False),則不管目前誰(shuí)得到焦點(diǎn),總是先觸發(fā)窗體鍵盤事件,后觸發(fā)焦點(diǎn)控件的鍵盤事件,否則不會(huì)觸發(fā)窗體的鍵盤事件注意程序中當(dāng)窗體的KeyPreview屬性被設(shè)置為True或默認(rèn)值False,鍵盤事件的不同觸發(fā)次序設(shè)窗體的KeyPreview屬性被設(shè)置默認(rèn)值False,程序運(yùn)行時(shí),通過命令按鈕切換為True,在窗體和文本框的KeyPress事件過程中編寫了輸出標(biāo)志信息3.9鍵盤與鼠標(biāo)事件過程3.9.1鍵盤事件過程KeyUp和KeyDown事件過程和KeyPress事件不同,KeyUp和KeyDown事件返回的是鍵盤的直接狀態(tài),即KeyUp和KeyDown事件返回的是“鍵”,而KeyPress事件返回的是“字符”的Ascii碼。當(dāng)用戶按下鍵盤上的任意一個(gè)鍵時(shí),就會(huì)觸發(fā)焦點(diǎn)對(duì)象的KeyDown事件,當(dāng)釋放按鍵,就會(huì)觸發(fā)KeyUp事件3.9鍵盤與鼠標(biāo)事件過程3.9.1鍵盤事件過程KeyDown事件過程PrivateSub
對(duì)象名_KeyDown(keycodeAsInteger,_
shiftAsInteger)……EndSubKeyUp事件過程PrivateSub
對(duì)象名_KeyUp(keycodeAsInteger,_
shiftAsInteger)……EndSub3.9鍵盤與鼠標(biāo)事件過程3.9.1鍵盤事件過程KeyUp和KeyDown事件過程KeyCode參數(shù)是用戶按下的那個(gè)鍵的掃描碼(鍵盤上的每一個(gè)按鍵都一個(gè)掃描碼,且各自不同),該碼以“鍵”為準(zhǔn),它不同于KeyPress事件中的KeyAscii參數(shù)(以“字符”為準(zhǔn))大小寫字母“A”和“a”用的是同一個(gè)鍵,所以它們的掃描碼相同,即KeyCode相同,而Ascii碼不同(“A”是65、“a”是97),即KeyAscii不同往往只能通過KeyCode參數(shù)了解用戶按下鍵盤上的哪個(gè)鍵(不是字符)3.9鍵盤與鼠標(biāo)事件過程3.9.1鍵盤事件過程KeyUp和KeyDown事件過程Shift參數(shù)是Shift、Ctrl和Alt三個(gè)轉(zhuǎn)換鍵目前按下的狀態(tài)信息;取值是一個(gè)是位域,它用最少的位響應(yīng)SHIFT鍵(位0)、CTRL鍵(位1)和ALT鍵(位2)。這些位分別對(duì)應(yīng)于值1、2和4十進(jìn)制二進(jìn)制轉(zhuǎn)換鍵按下情況0000沒有按下轉(zhuǎn)換鍵1001只按下Shift鍵2010只按下Ctrl鍵3011按下Ctrl+Shift鍵4100只按下Alt鍵5101按下Alt+Shift鍵6110按下Alt+Ctrl鍵7111按下Alt+Ctrl+Shift鍵3.9鍵盤與鼠標(biāo)事件過程3.9.1鍵盤事件過程KeyUp和KeyDown事件過程的應(yīng)用擴(kuò)展的字符鍵如功能鍵等定位鍵鍵盤修飾鍵和按鍵的組合區(qū)別數(shù)字小鍵盤和常規(guī)數(shù)字鍵[例題3-17]下列情況不會(huì)觸發(fā)KeyDown和KeyUp事件窗體有一個(gè)CommandButton控件,并且Default屬性設(shè)置為True時(shí)的Enter鍵窗體有一個(gè)CommandButton控件,并且Cancel屬性設(shè)置為True時(shí)的Esc鍵Tab鍵[例題3-18]例題3-17編寫程序,利用KeyDown和KeyUp事件顯示按下鍵和釋放鍵情況分析:根據(jù)KeyCode返回對(duì)應(yīng)的字符——Chr函數(shù)PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)Print"按下";Chr(KeyCode);KeyCodeEndSubPrivateSubText1_KeyUp(KeyCodeAsInteger,ShiftAsInteger)Print"釋放";Chr(KeyCode);KeyCodeEndSubPrivateSubform_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfShift=1ThenPrint"按下Shift鍵";KeyCodeIfShift=2ThenPrint"按下Ctrl鍵";KeyCodeIfShift=3ThenPrint"按下Ctrl+Shift鍵";KeyCodeIfShift=4ThenPrint"按下Alt鍵";KeyCodeIfShift=5ThenPrint"按下Alt+Shift鍵";KeyCodeIfShift=6ThenPrint"按下Alt+Ctrl鍵";KeyCodeIfShift=7ThenPrint"按下Alt+Ctrl+Shift鍵";KeyCodeEndSubPrivateSubform_KeyUp(KeyCodeAsInteger,ShiftAsInteger)Print"釋放";KeyCodeEndSub例題3-18編寫程序,利用KeyDown和KeyUp事件顯示按下和釋放轉(zhuǎn)換鍵情況3.9鍵盤與鼠標(biāo)事件過程3.9.2鼠標(biāo)器事件過程鼠標(biāo)的單擊和雙擊事件鼠標(biāo)事件:鼠標(biāo)的按下、移動(dòng)和釋放事件,即MouseDown、MouseMove和MouseUp事件適用于以下對(duì)象,包括窗體、文本框、命令按鈕、選項(xiàng)按鈕、復(fù)選框、列表框、圖片框、標(biāo)簽、框架等鼠標(biāo)事件被用來識(shí)別和響應(yīng)各種鼠標(biāo)狀態(tài),并把這些狀態(tài)看作獨(dú)立的事件;在按下鼠標(biāo)按鈕并釋放時(shí),Click事件只能把此過程識(shí)別為一個(gè)單一的操作——單擊操作鼠標(biāo)事件不同于Click事件和DblClick事件之處還在于,鼠標(biāo)事件能夠區(qū)分各鼠標(biāo)按鈕與Shift、Alt、Ctrl鍵3.9鍵盤與鼠標(biāo)事件過程3.9.2鼠標(biāo)器事件過程MouseDown事件過程PrivateSub對(duì)象名_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)……EndSubMouseUp事件過程:PrivateSub對(duì)象名_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)……EndSub3.9鍵盤與鼠標(biāo)事件過程3.9.2鼠標(biāo)器事件過程MouseMove事件過程:PrivateSub對(duì)象名_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)……EndSubShift、X、Y參數(shù)的含義同鍵盤事件Button參數(shù)值指示此時(shí)按下或釋放了哪個(gè)鼠標(biāo)鍵,該參數(shù)是一個(gè)整數(shù)3.9鍵盤與鼠標(biāo)事件過程3.9.2鼠標(biāo)器事件過程對(duì)于MouseMove事件來說,button參數(shù)指示的是所有鼠標(biāo)按鍵當(dāng)前的狀態(tài);一個(gè)MouseMove事件可指示某些、全部或沒有一個(gè)按鈕被按下MouseDown和MouseUp事件來說,button參數(shù)在每個(gè)事件精確地指示一個(gè)按鍵,即不能檢查兩個(gè)或三個(gè)鍵同時(shí)被按下或松開的情況,因此取值只能是下表中的前三種十進(jìn)制二進(jìn)制轉(zhuǎn)換鍵按下情況0000沒有按下任何鼠標(biāo)鍵1001鼠標(biāo)左鍵被按下2010鼠標(biāo)右鍵被按下3011鼠標(biāo)左、右鍵同時(shí)被按下4100鼠標(biāo)中間鍵被按下5101鼠標(biāo)中間、左鍵同時(shí)被按下6110鼠標(biāo)中間、右鍵同時(shí)被按下7111鼠標(biāo)三鍵同時(shí)被按下3.9鍵盤與鼠標(biāo)事件過程3.9.2鼠標(biāo)器事件過程MouseDown是三種鼠標(biāo)事件中最常使用的事件。例如,在運(yùn)行時(shí)可用它調(diào)整控件在窗體上的位置,也可用它實(shí)現(xiàn)某些圖形效果。按下鼠標(biāo)按鈕時(shí)就可觸發(fā)此事件。MouseMove事件伴隨鼠標(biāo)指針在對(duì)象間移動(dòng)時(shí)連續(xù)不斷地產(chǎn)生。除非有另一個(gè)對(duì)象捕獲了鼠標(biāo),否則,當(dāng)鼠
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物質(zhì)能源技術(shù)
- 科學(xué)技術(shù)改變著農(nóng)業(yè)
- 體育創(chuàng)意游戲講解
- 月子口腔保健
- 公司加班搶險(xiǎn)獎(jiǎng)勵(lì)方案(3篇)
- 卒中并發(fā)肺部感染臨床管理
- 職工文明禮儀講座
- 急性消化道出血的急救處理方法
- 中藥口腔刷牙技術(shù)
- 質(zhì)保履約方案(3篇)
- 楊廣笑生物化學(xué)課件網(wǎng)盤
- (完整word版)高中英語(yǔ)3500詞匯表
- 建筑工程雨季施工防汛措施
- 工業(yè)廢水中級(jí)??荚囶}(附參考答案)
- 氮化硼產(chǎn)業(yè)園項(xiàng)目申請(qǐng)報(bào)告
- DB37-T 3916-2020 人民防空工程調(diào)查測(cè)繪技術(shù)規(guī)范-(高清版)
- 模板安裝檢查記錄表
- 新疆葉城通用機(jī)場(chǎng)報(bào)告書
- 2021年衡真暑假班結(jié)課測(cè)試題(??疲?/a>
- 大跨度鋼桁架梁安裝安全保障措施
- 地鐵地下結(jié)構(gòu)抗震分析與振動(dòng)臺(tái)試驗(yàn)PPT
評(píng)論
0/150
提交評(píng)論