VB教程第10章教案_第1頁
VB教程第10章教案_第2頁
VB教程第10章教案_第3頁
VB教程第10章教案_第4頁
VB教程第10章教案_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第10其他常用的語句及控件

VB中的控件分為兩類:一是標準控件,二是ActiveX控件。默認情況下工具箱中只有標準控件,用戶也可通過“工程”菜單中的“部件”命令添加所需的ActiveX控件。

第10章

其他常用的語句及控件框架(Frame)滾動條(ScrollBar)圖形方法和圖形控件菜單設計工具欄和狀態(tài)欄鍵盤與鼠標事件對話框通用/自定義文件系統(tǒng)控件其他常用語句本章主要內(nèi)容

1.框架的用途

作為容器放置其他控件對象,將這些控件對象分成可標識的控件組;框架內(nèi)的所有控件將隨框架一起移動、顯示和消失。

(框架示例:“幻燈片放映”→“設置放映方式”對話框)

例10.1

控制文本的字體、字號及顏色在窗體上設置3個框架Frame1、Frame2和Frame3

10.1

框架(Frame)框架Frame3框架Frame2框架Frame1(2)編寫程序代碼

功能要求:在三個框架中分別選擇字體、字號和顏色,單擊“確定”按鈕后,文本框中的文本相應屬性會發(fā)生變化

PrivateSubForm_Load()Option1.Value=TrueOption3.Value=TrueOption5.Value=TrueText1.FontName="宋體"

Text1.FontSize=16Text1.ForeColor=RGB(0,0,255)

EndSub

PrivateSubCommand1_Click()‘“確定"按鈕單擊事件

IfOption1.ValueThenText1.FontName="宋體"

ElseText1.FontName="幼圓"

EndIfIfOption3.ValueThenText1.FontSize=16ElseText1.FontSize=20EndIfIfOption5.ValueThenText1.ForeColor=RGB(0,0,255)ElseText1.ForeColor=RGB(255,0,0)EndIf

EndSub10.2滾動條

1.滾動條的用途

為不能自動支持滾動的應用程序和控件提供滾動功能,也可作為數(shù)據(jù)輸入的工具。

水平滾動條(HScrollBar)和垂直滾動條(VScrollBar)

2.常用屬性

(1)

Min、Max屬性:最小值Min屬性的默認值為0,最大值Max屬性的默認值為32767。

(2)Value屬性:表示滾動塊在滾動條中的位置值移動滾動塊時,代表的值隨之改變

(3)SmallChange屬性:最小變動值

(4)LargeChange屬性:最大變動值

3.事件

滾動條控件可以識別10個事件,其中最常用的是Scroll和Change事件(1)Scroll事件:當用鼠標拖動滾動塊時,即觸發(fā)Scroll事件(2)Change事件:當改變Value屬性值時,即觸發(fā)Change事件當釋放滾動塊、單擊滾動條內(nèi)空白處或滾動箭頭時,Change事件就會發(fā)生。例10.2

設計一個調(diào)色板應用程序

建立三個水平滾動條作為紅、綠、藍三種基本顏色的輸入工具,合成的顏色顯示在右邊的標簽中(圖10.3),用其背景顏色屬性BackColor值的改變實現(xiàn)合成顏色的調(diào)色

Label1.BackColor=RGB(R,G,B)例10.2其值分別由3個滾動條控制標簽Label1

說明:根據(jù)調(diào)色原理,基本顏色有紅、綠、藍三種,選擇這三種顏色的不同比例,可以合成所需要的任意顏色

(1)創(chuàng)建應用程序的用戶界面和設置對象屬性三個水平滾動條名稱從上至下分別為HScroll1、HScroll2、HScroll3

其Max屬性均設置為255,Min屬性均設置為0,

SmallChange屬性設置為1,LargeChange屬性設置為10,Value設置為0。顯示合成顏色的標簽名為Label1

(2)編寫程序代碼

功能要求:通過操作(單擊或拖動)滾動條,直接修改RGB設置,從而得到標簽背景所需的顏色

PrivateSubHScroll1_Change()Label1.BackColor=RGB(HScroll1.Value,_HScroll2.Value,HScroll3.Value)

EndSubPrivateSubHScroll2_Change()Label1.BackColor=RGB(HScroll1.Value,_HScroll2.Value,HScroll3.Value)

EndSubPrivateSubHScroll3_Change()Label1.BackColor=RGB(HScroll1.Value,_HScroll2.Value,HScroll3.Value)

EndSub

4種圖形控件:PictureBox控件、Image控件、Shape控件和Line控件;圖形方法

10.3.1坐標系

每個對象都定位于存放它的容器內(nèi)每個容器都有一個坐標系,它包括坐標原點,x坐標軸和y坐標軸,默認的坐標原點(0,0)在容器對象的左上角默認單位為Twip(緹),還可以使用磅、像素、厘米等單位10.3

圖形方法和圖形控件YXTopHeightLeftWidth

使用Pset(畫點)、Line(畫線)、Circle(畫圓)等圖形方法,可以在窗體和圖片框上繪制簡單的圖形

1.Pset(畫點)方法格式:[對象名.]Pset[Step](x,y)[,顏色]

功能:在對象的指定位置(x,y)上按選定的顏色畫點

示例:下列語句能在坐標位置(500,900)處畫一個紅點:

Pset(500,900),RGB(255,0,0)2.Line(畫線)方法格式:[對象名.]Line[(x1,y1)]-(x2,y2)[,顏色]

功能:在兩個坐標點之間畫一條線段。例如,下列語句可在窗體上畫一條斜線

Line(600,600)-(2000,3000)3.Circle(畫圓)方法格式:[對象名.]Circle[Step](x,y),半徑[,顏色,起點,終點,縱橫比]

功能:在對象上畫圓、橢圓或圓弧

10.3.2

圖形方法

圖片框(PictureBox)和圖像框(Image)都是用于顯示圖形。圖片框可以作為其他控件的容器。

示例

PrivateSubForm_Load()ShowPicture1.Print"在圖片框內(nèi)寫字和畫圓"

Picture1.Circle(1200,1000),600,RGB(0,0,255)Picture1.PSet(1200,1000),RGB(255,0,0)

EndSub10.4.3圖片框(PictureBox)例10.3a

10.3.4

圖像框(Image)

圖像框(Image)控件的作用與圖片框PictureBox控件相似,但它只能用于顯示圖形,不能作為其他控件的容器。10.3.5

Shape形狀控件

VB提供了畫圖形的基本工具,如Shape(形狀控件)、Line(線控件)。Shape控件和Line控件只用于表面裝飾,不支持任何事件

Shape控件畫出矩形、正方形、圓形等圖形。10.3.6

Line直線控件

Line直線控件可用來在窗體、框架和圖片框中繪制簡單的線段。

(1)分析:本例分別以Second、Minite和Hour函數(shù)取得系統(tǒng)時間Time的秒、分和時數(shù),再利用計時器控件,按一定時間間隔把時間數(shù)轉(zhuǎn)換為圖形指針位置和顯示出來

(2)創(chuàng)建應用程序的用戶界面計時器(Timer1),形狀控件(Shape1),三條線控件(LineS,LineM,LineH),四個標簽(表示數(shù)字)

例10.4

設計一個走動的時鐘例10.4

(3)設置對象屬性

Timer1的Interval屬性為1000(1秒)

Shape1的Shape屬性為3-Circle(圓形),F(xiàn)illStyle屬性為0-Solid(實心)

LineS,LineM,LineH的BorderWidth屬性為1,2,4

(4)編寫程序代碼

OptionExplicit

‘規(guī)定所有變量都要顯式聲明,見10.9.1節(jié)

Constpi=3.14159

Privatelen_SAsSingle,len_MAsSingle,len_HAsSingle

PrivateSubForm_Load()

‘先取各指針的長度

'秒針長度

len_S=Sqr((LineS.Y2-LineS.Y1)^2+(LineS.X2-LineS.X1)^2)'分針長度

len_M=Sqr((LineM.Y2-LineM.Y1)^2+(LineM.X2-LineM.X1)^2)'時針長度

len_H=Sqr((LineH.Y2-LineH.Y1)^2+(LineH.X2-LineH.X1)^2)

CallTimer1_Timer

EndSub

PrivateSubTimer1_Timer()

'定時器的定時事件過程

DimsAsSingle,mAsSingle,hAsSingleForm1.Caption=Times=Second(Time)m=Minute(Time)h=Hour(Time)+m/60LineS.X2=LineS.X1+len_S*Sin(pi*s/30)'繪制秒針

LineS.Y2=LineS.Y1-len_S*Cos(pi*s/30)LineM.X2=LineM.X1+len_M*Sin(pi*m/30)'繪制分針

LineM.Y2=LineM.Y1-len_M*Cos(pi*m/30)Ifh>=12Thenh=h-12LineH.X2=LineH.X1+len_H*Sin(pi*h/6)'繪制時針

LineH.Y2=LineH.Y1-len_H*Cos(pi*h/6)

EndSub

計算指針位置的方法

s秒K60秒2πK=2πs/60=πs/30x2=x1+x=x1+L*Cos(π/2–K)=x1+L*SinK

LineM.X2=LineM.X1+Len_s*Sin(PI*s/30)

xx2x1K(s秒)π/2-K指針指針末位置x坐標值指針始位置x坐標值指針長度

窗體左邊界

窗體和大多數(shù)控件都能響應鍵盤和鼠標事件

10.4.1鍵盤事件

有三種事件處理鍵盤操作

1.KeyPress事件

2.KeyDown事件:用戶按下鍵盤上某個鍵時觸發(fā)此事件3.KeyUp事件:用戶按下鍵盤上某個鍵后釋放時觸發(fā)此事件

10.4

鍵盤與鼠標事件

Click、DblClick、MouseMove、MouseDown和MouseUp事件當移動鼠標時發(fā)生MouseMove事件當按下鼠標任意鍵時發(fā)生MouseDown事件,放開鼠標鍵時發(fā)生MouseUp事件后三種事件可以區(qū)分鼠標的左、右、中鍵與Shift、Ctrl、Alt鍵

PrivateSub對象名_鼠標事件(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

說明:(1)Button參數(shù)表示哪個鼠標鍵被按下或釋放。用0,1,2位分別表示鼠標的左、右、中鍵,用1或0表示被按下或釋放

(2)Shift參數(shù)表示當鼠標鍵被按下或釋放時,Shift、Ctrl、Alt鍵的按下或釋放狀態(tài)。用0、1、2位表示Shift、Ctrl、Alt鍵

(3)X,Y表示鼠標指針的當前坐標位置

210位

······左鍵右鍵中鍵

10.4.2

鼠標事件MouseMove、MouseDown或MouseUp

10.5菜單設計

應用程序通過菜單為用戶提供一組命令菜單一般分為兩種:下拉式菜單和彈出式菜單

10.5.1下拉式菜單

1.下拉式菜單的結(jié)構(gòu)下拉式菜單基本結(jié)構(gòu)包括:頂層菜單、菜單項和子菜單子菜單項子菜單提示符訪問鍵快捷鍵分隔線復選標記菜單項頂層菜單

10.5.2

菜單編輯器

設計菜單的工具——菜單編輯器菜單編輯器分為上、下兩部分,上半部分用來設置屬性,下半部分是菜單顯示區(qū),用來顯示用戶輸入的菜單內(nèi)容。10.5.3菜單的Click事件除分隔線以外的所有菜單元素都能識別Click事件例10.8

編一程序,進行兩個操作數(shù)的算術(shù)運算練習

設計步驟如下:

(1)創(chuàng)建應用程序的用戶界面和設置對象屬性菜單欄向用戶提供功能選擇,包括運算數(shù)的位數(shù),運算符類型(加、減、乘)和退出程序菜單設計各個菜單項名稱例10.8

(2)編寫程序代碼

OptionExplicit‘規(guī)定所有變量都要顯式聲明,見10.9.1節(jié)

Dimsel1AsInteger,sel2AsStringDimr1AsLong

PrivateSubForm_Load()sel1=0'位數(shù)標記

sel2=""'運算標記

Randomize

EndSubPrivateSubMnu11_Click()‘單擊“一位數(shù)”菜單項

sel1=1'設置位數(shù)標記

EndSubPrivateSubMnu12_Click()‘單擊“二位數(shù)”菜單項

sel1=10

EndSubPrivateSubMnu13_Click()‘單擊“三位數(shù)”菜單項

sel1=100EndSubPrivateSubMnu21_Click()‘單擊“加法”菜單項

sel2="+"'設置運算標記EndSubPrivateSubMnu22_Click()‘單擊“減法”菜單項

sel2="-"EndSubPrivateSubMnu23_Click()‘單擊“乘法”菜單項

sel2="*"EndSubPrivateSubCommand1_Click()

'"命題"按鈕單擊事件

DimaAsLong,bAsLongIfsel1=0Orsel2=""Then

MsgBox"先選擇運算數(shù)的位數(shù)和運算類型"

ExitSubEndIfa=sel1+Int(9*sel1*Rnd)‘根據(jù)指定位數(shù),隨機生成操作數(shù)

b=sel1+Int(9*sel1*Rnd)Text1.Text=Str(a)+sel2+Str(b)+“=”‘根據(jù)操作數(shù)及運算類型組成算式

SelectCasesel2‘根據(jù)運算類型,求運算結(jié)果r1Case"+"r1=a+bCase"-"r1=a-bCase"*"r1=a*bEndSelectText2.Text=""Text2.SetFocusEndSub菜單操作后Sel1指定位數(shù)

=1

一位數(shù)

=10

二位數(shù)

=100

三位數(shù)Sel2指定運算類型

=“+”加法

=“-”減法=“*”乘法PrivateSubCommand2_Click()

'"答題"按鈕單擊事件

Dimr2AsLongIfText2.Text=""Then

MsgBox"請輸入答案"

ExitSubEndIfr2=Val(Text2.Text)'讀取用戶的答案

Ifr1=r2Then'判斷答案

MsgBox"正確"

Else

MsgBox"錯誤"

EndIfEndSubPrivateSubMnu30_Click()‘“退出”菜單命令

EndEndSub

10.5.5

彈出式菜單

彈出式菜單又稱為快捷菜單??梢愿鶕?jù)右擊鼠標時的位置彈出不同的菜單。使用VB提供的菜單編輯器,把某個菜單設置成隱藏。創(chuàng)建快捷菜單的步驟如下:(1)使用菜單編輯器設計菜單(2)設置頂層菜單項為不可見,即不選中菜單編輯器里的“可見”選項或在屬性窗口中設定Visible屬性為False(3)編寫與彈出式菜單相關(guān)聯(lián)的MouseUp(釋放鼠標)事件過程。格式為:

[對象]PopupMenu

菜單名[,位置常數(shù)][,橫坐標[,縱坐標]]]例10.9在例10.8的基礎上,把“位數(shù)”菜單改為快捷菜單

(1)打開例10.8的應用程序,選定窗體,然后在菜單編輯器中將“位數(shù)”菜單標題的“可見”框中的“√”取消(即不選中)

(2)增加以下的MouseUp事件過程代碼:

PrivateSubForm_MouseUp(ButtonAsInteger,_

ShiftAsInteger,XAsSingle,YAsSingle)

IfButton=2Then‘檢查是否右擊,擊左鍵為1

PopupMenumnu10

EndIf

EndSub

程序運行時,右擊窗體空白處,即會彈出快捷菜單,如圖10.12所示例10.9

彈出式菜單

10.6

工具欄和狀態(tài)欄

分別通過ActiveX控件ToolBar和StatusBar來實現(xiàn)

10.6.1ActiveX控件簡介

VB中使用的控件有三類:標準控件、ActiveX控件和可插入對象(如Word文檔、Excel工作表等,可當作控件使用)

ActiveX控件是一段可重復使用的程序代碼和數(shù)據(jù)。由ActiveX技術(shù)創(chuàng)建的,可以作為VB工具箱的擴充部分。

ActiveX控件以單獨的文件存在(.ocx)

10.6.2

工具欄(ToolBar)

工具欄為用戶帶來比用菜單更為快速的操作為窗體添加工具欄,應使用工具條(ToolBar)控件和圖像控件列表(ImageList)控件(不是標準控件)

創(chuàng)建工具欄的大致步驟:(1)添加ToolBar控件和ImageList控件(2)用ImageList控件保存要使用的圖形(3)創(chuàng)建ToolBar控件,并將ToolBar控件與ImageList控件相關(guān)聯(lián),創(chuàng)建Button對象(4)編寫B(tài)utton的Click事件過程。單擊工具欄控件時觸發(fā)Click事件,單擊工具欄上按鈕時觸發(fā)ButtonClick事件,并返回一個Button參數(shù)(表明按下哪個按鈕)

例10.10使用工具欄

在例10.8的基礎上,增加一個工具欄,使之能快速提供“加法”、“減法”和“乘法”運算類型例10.10ImageList控件存放工具欄所需的圖像工具欄控件

(1)打開例10.8的應用程序(2)按照上述創(chuàng)建ImageList的方法,在窗體上建立ImageList1控件,并從Windows98系統(tǒng)文件夾中取出圖片文件Hlpcd.gif、Hlpbell.gif和Hlpglobe.gif(本例采用這三個圖片作為按鈕的圖形),并添加到該控件中。(3)在窗體上建立ToolBar1控件,使之與ImageList1相關(guān)聯(lián),然后在控件中添加“加法”、“減法”和“乘法”三個按鈕,并分別取用ImageList1中的三個圖片。(4)在原有程序代碼的基礎上,增加以下的ButtonClick事件過程代碼

操作步驟

PrivateSubToolbar1_ButtonClick(ByValButtonAs_

MSComctlLib.Button)SelectCaseButton.IndexCase1sel2="+"Case2sel2="-"Case3el2="*"EndSelectEndSub

10.6.3狀態(tài)欄

狀態(tài)欄(StatusBar)通常位于窗體的底部,主要用于顯示應用程序的各種狀態(tài)信息。StatusBar控件屬于ActiveX控件

StatusBar控件由若干個面板(Panel)組成,每一個面板包含文本和圖片。StatusBar控件最多能分成16個Panel對象例10.11

使用狀態(tài)欄

在例10.10的基礎上,在窗體底部添加一個狀態(tài)欄,用于顯示當前時間、鍵盤大小寫狀態(tài)及運行狀態(tài)。

例10.1110.7對話框

對話框(DialogBox)是應用程序與用戶進行交互的主要途徑。三種對話框:

(1)預定義對話框

使用函數(shù)InputBox和MsgBox來實現(xiàn)。(2)通用對話框通用對話框是一種ActiveX控件,在使用之前,應選擇“工程”菜單中的“部件”命令先將其添加到工具箱中

(選中“MicrosoftCommonDialogControl6.0”

)

利用通用對話框能夠創(chuàng)建下列六種標準對話框(指定相應的參數(shù),P233):

打開(Open),另存為(SaveAs),顏色(Color)

字體(Font),打印機(Printer),幫助(Help)(3)用戶自定義對話框

建立一個窗體,把窗體設置成對話框特性(沒有控制菜單框、最大化及最小化按鈕,不能改變其大小,見表10.3)

在窗體上根據(jù)需要放置控件

10.8

文件系統(tǒng)控件

VB工具箱中提供了三種文件系統(tǒng)控件:

驅(qū)動器列表框(DriveListBox):選擇一個驅(qū)動器文件夾列表框(DirListBox):顯示一個磁盤的文件夾結(jié)構(gòu)文件列表框(FileListBox):顯示當前文件夾下的所有文件名這三種控件可以單獨使用,也可以組合使用

10.9.1強制顯式聲明變量語句(OptionExplicit)

避免因為寫錯變量名而導致錯誤例如,交換變量a、b的值

Temp=aa=bb=Tmp'把Temp寫錯成Tmp

運行結(jié)果是使b的值為0。若改成:

OptionExplicit‘模塊級聲明

DimaAsInteger,bAsInteger,TempAsInteger...Temp=aa=bb=Tmp

運行時VB就會發(fā)出警告“Variablenotdefined”(變量未定義),只有把Tmp改為Temp后才恢復正常10.9其他常用語句

10.9.2定義變量類型格式:Def類型標志字母范圍

示例:DefIntm-P

10.9.3自定義數(shù)據(jù)類型用戶可以利用Type語句定義自己的數(shù)據(jù)類型

[Private|Public]Type數(shù)據(jù)類型名元素名1As類型名1……

EndType10.9.4定義枚舉類型將變量的值一一列舉出來,變量的值只限于列舉出來的值

[Public|Private]Enum

枚舉類型名成員名1[=常數(shù)表達式]……

EndEnum定義類型語句

包括GoTo語句和On...GoTo語句

1.GoTo語句

語法格式:GoTo{行號|標號}

功能:改變程序的執(zhí)行順序,跳轉(zhuǎn)到程序中指定的行開始執(zhí)行

例10.15

應用GoTo語句示例

PrivateSubForm_Load()ShowPrint"整型數(shù)"

GoToLine1'跳轉(zhuǎn)到標號Line1指定的行

Print"單精度數(shù)"

Line1:Print"字符串"

EndSub10.9.5

GoTo型控制例10.15

On...GoTo語句用來實現(xiàn)分支選擇控制(類似于Select...EndSelect)

語法格式:On數(shù)值表達式GoTo{行號表|標號表}

功能:根據(jù)“數(shù)值表達式”的值,控制轉(zhuǎn)移到幾個指定的語句行中的一個語句行。例如

OnKGoToLine1,Line2,Line3

執(zhí)行過程:將K四舍五入取整,如果其值為1,則轉(zhuǎn)移到Line1標號行;如果為2,則轉(zhuǎn)移到Line2標號行;如果為3,則轉(zhuǎn)移到Line3標號行。如果K的值等于0或大于3,則自動執(zhí)行本語句的下一個語句

2.On...GoTo語句

1.直接輸出

把信息直接送往打印機格式:Printer.Print[表達式表]

(1)Page屬性:設置當前頁號格式:Printer.Page

(2)NewPage方法:實現(xiàn)

溫馨提示

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

評論

0/150

提交評論