




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10其他常用的語句及控件
VB中的控件分為兩類:一是標準控件,二是ActiveX控件。默認情況下工具箱中只有標準控件,用戶也可通過“工程”菜單中的“部件”命令添加所需的ActiveX控件。
第10章
其他常用的語句及控件框架(Frame)滾動條(ScrollBar)圖形方法和圖形控件菜單設計工具欄和狀態欄鍵盤與鼠標事件對話框通用/自定義文件系統控件其他常用語句本章主要內容
1.框架的用途
作為容器放置其他控件對象,將這些控件對象分成可標識的控件組;框架內的所有控件將隨框架一起移動、顯示和消失。
(框架示例:“幻燈片放映”→“設置放映方式”對話框)
例10.1
控制文本的字體、字號及顏色在窗體上設置3個框架Frame1、Frame2和Frame3
10.1
框架(Frame)框架Frame3框架Frame2框架Frame1(2)編寫程序代碼
功能要求:在三個框架中分別選擇字體、字號和顏色,單擊“確定”按鈕后,文本框中的文本相應屬性會發生變化
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.滾動條的用途
為不能自動支持滾動的應用程序和控件提供滾動功能,也可作為數據輸入的工具。
水平滾動條(HScrollBar)和垂直滾動條(VScrollBar)
2.常用屬性
(1)
Min、Max屬性:最小值Min屬性的默認值為0,最大值Max屬性的默認值為32767。
(2)Value屬性:表示滾動塊在滾動條中的位置值移動滾動塊時,代表的值隨之改變
(3)SmallChange屬性:最小變動值
(4)LargeChange屬性:最大變動值
3.事件
滾動條控件可以識別10個事件,其中最常用的是Scroll和Change事件(1)Scroll事件:當用鼠標拖動滾動塊時,即觸發Scroll事件(2)Change事件:當改變Value屬性值時,即觸發Change事件當釋放滾動塊、單擊滾動條內空白處或滾動箭頭時,Change事件就會發生。例10.2
設計一個調色板應用程序
建立三個水平滾動條作為紅、綠、藍三種基本顏色的輸入工具,合成的顏色顯示在右邊的標簽中(圖10.3),用其背景顏色屬性BackColor值的改變實現合成顏色的調色
Label1.BackColor=RGB(R,G,B)例10.2其值分別由3個滾動條控制標簽Label1
說明:根據調色原理,基本顏色有紅、綠、藍三種,選擇這三種顏色的不同比例,可以合成所需要的任意顏色
(1)創建應用程序的用戶界面和設置對象屬性三個水平滾動條名稱從上至下分別為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坐標系
每個對象都定位于存放它的容器內每個容器都有一個坐標系,它包括坐標原點,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"在圖片框內寫字和畫圓"
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函數取得系統時間Time的秒、分和時數,再利用計時器控件,按一定時間間隔把時間數轉換為圖形指針位置和顯示出來
(2)創建應用程序的用戶界面計時器(Timer1),形狀控件(Shape1),三條線控件(LineS,LineM,LineH),四個標簽(表示數字)
例10.4
設計一個走動的時鐘例10.4
(3)設置對象屬性
Timer1的Interval屬性為1000(1秒)
Shape1的Shape屬性為3-Circle(圓形),FillStyle屬性為0-Solid(實心)
LineS,LineM,LineH的BorderWidth屬性為1,2,4
(4)編寫程序代碼
OptionExplicit
‘規定所有變量都要顯式聲明,見10.9.1節
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坐標值指針長度
窗體左邊界
窗體和大多數控件都能響應鍵盤和鼠標事件
10.4.1鍵盤事件
有三種事件處理鍵盤操作
1.KeyPress事件
2.KeyDown事件:用戶按下鍵盤上某個鍵時觸發此事件3.KeyUp事件:用戶按下鍵盤上某個鍵后釋放時觸發此事件
10.4
鍵盤與鼠標事件
Click、DblClick、MouseMove、MouseDown和MouseUp事件當移動鼠標時發生MouseMove事件當按下鼠標任意鍵時發生MouseDown事件,放開鼠標鍵時發生MouseUp事件后三種事件可以區分鼠標的左、右、中鍵與Shift、Ctrl、Alt鍵
PrivateSub對象名_鼠標事件(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
說明:(1)Button參數表示哪個鼠標鍵被按下或釋放。用0,1,2位分別表示鼠標的左、右、中鍵,用1或0表示被按下或釋放
(2)Shift參數表示當鼠標鍵被按下或釋放時,Shift、Ctrl、Alt鍵的按下或釋放狀態。用0、1、2位表示Shift、Ctrl、Alt鍵
(3)X,Y表示鼠標指針的當前坐標位置
210位
······左鍵右鍵中鍵
10.4.2
鼠標事件MouseMove、MouseDown或MouseUp
10.5菜單設計
應用程序通過菜單為用戶提供一組命令菜單一般分為兩種:下拉式菜單和彈出式菜單
10.5.1下拉式菜單
1.下拉式菜單的結構下拉式菜單基本結構包括:頂層菜單、菜單項和子菜單子菜單項子菜單提示符訪問鍵快捷鍵分隔線復選標記菜單項頂層菜單
10.5.2
菜單編輯器
設計菜單的工具——菜單編輯器菜單編輯器分為上、下兩部分,上半部分用來設置屬性,下半部分是菜單顯示區,用來顯示用戶輸入的菜單內容。10.5.3菜單的Click事件除分隔線以外的所有菜單元素都能識別Click事件例10.8
編一程序,進行兩個操作數的算術運算練習
設計步驟如下:
(1)創建應用程序的用戶界面和設置對象屬性菜單欄向用戶提供功能選擇,包括運算數的位數,運算符類型(加、減、乘)和退出程序菜單設計各個菜單項名稱例10.8
(2)編寫程序代碼
OptionExplicit‘規定所有變量都要顯式聲明,見10.9.1節
Dimsel1AsInteger,sel2AsStringDimr1AsLong
PrivateSubForm_Load()sel1=0'位數標記
sel2=""'運算標記
Randomize
EndSubPrivateSubMnu11_Click()‘單擊“一位數”菜單項
sel1=1'設置位數標記
EndSubPrivateSubMnu12_Click()‘單擊“二位數”菜單項
sel1=10
EndSubPrivateSubMnu13_Click()‘單擊“三位數”菜單項
sel1=100EndSubPrivateSubMnu21_Click()‘單擊“加法”菜單項
sel2="+"'設置運算標記EndSubPrivateSubMnu22_Click()‘單擊“減法”菜單項
sel2="-"EndSubPrivateSubMnu23_Click()‘單擊“乘法”菜單項
sel2="*"EndSubPrivateSubCommand1_Click()
'"命題"按鈕單擊事件
DimaAsLong,bAsLongIfsel1=0Orsel2=""Then
MsgBox"先選擇運算數的位數和運算類型"
ExitSubEndIfa=sel1+Int(9*sel1*Rnd)‘根據指定位數,隨機生成操作數
b=sel1+Int(9*sel1*Rnd)Text1.Text=Str(a)+sel2+Str(b)+“=”‘根據操作數及運算類型組成算式
SelectCasesel2‘根據運算類型,求運算結果r1Case"+"r1=a+bCase"-"r1=a-bCase"*"r1=a*bEndSelectText2.Text=""Text2.SetFocusEndSub菜單操作后Sel1指定位數
=1
一位數
=10
二位數
=100
三位數Sel2指定運算類型
=“+”加法
=“-”減法=“*”乘法PrivateSubCommand2_Click()
'"答題"按鈕單擊事件
Dimr2AsLongIfText2.Text=""Then
MsgBox"請輸入答案"
ExitSubEndIfr2=Val(Text2.Text)'讀取用戶的答案
Ifr1=r2Then'判斷答案
MsgBox"正確"
Else
MsgBox"錯誤"
EndIfEndSubPrivateSubMnu30_Click()‘“退出”菜單命令
EndEndSub
10.5.5
彈出式菜單
彈出式菜單又稱為快捷菜單。可以根據右擊鼠標時的位置彈出不同的菜單。使用VB提供的菜單編輯器,把某個菜單設置成隱藏。創建快捷菜單的步驟如下:(1)使用菜單編輯器設計菜單(2)設置頂層菜單項為不可見,即不選中菜單編輯器里的“可見”選項或在屬性窗口中設定Visible屬性為False(3)編寫與彈出式菜單相關聯的MouseUp(釋放鼠標)事件過程。格式為:
[對象]PopupMenu
菜單名[,位置常數][,橫坐標[,縱坐標]]]例10.9在例10.8的基礎上,把“位數”菜單改為快捷菜單
(1)打開例10.8的應用程序,選定窗體,然后在菜單編輯器中將“位數”菜單標題的“可見”框中的“√”取消(即不選中)
(2)增加以下的MouseUp事件過程代碼:
PrivateSubForm_MouseUp(ButtonAsInteger,_
ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then‘檢查是否右擊,擊左鍵為1
PopupMenumnu10
EndIf
EndSub
程序運行時,右擊窗體空白處,即會彈出快捷菜單,如圖10.12所示例10.9
彈出式菜單
10.6
工具欄和狀態欄
分別通過ActiveX控件ToolBar和StatusBar來實現
10.6.1ActiveX控件簡介
VB中使用的控件有三類:標準控件、ActiveX控件和可插入對象(如Word文檔、Excel工作表等,可當作控件使用)
ActiveX控件是一段可重復使用的程序代碼和數據。由ActiveX技術創建的,可以作為VB工具箱的擴充部分。
ActiveX控件以單獨的文件存在(.ocx)
10.6.2
工具欄(ToolBar)
工具欄為用戶帶來比用菜單更為快速的操作為窗體添加工具欄,應使用工具條(ToolBar)控件和圖像控件列表(ImageList)控件(不是標準控件)
創建工具欄的大致步驟:(1)添加ToolBar控件和ImageList控件(2)用ImageList控件保存要使用的圖形(3)創建ToolBar控件,并將ToolBar控件與ImageList控件相關聯,創建Button對象(4)編寫Button的Click事件過程。單擊工具欄控件時觸發Click事件,單擊工具欄上按鈕時觸發ButtonClick事件,并返回一個Button參數(表明按下哪個按鈕)
例10.10使用工具欄
在例10.8的基礎上,增加一個工具欄,使之能快速提供“加法”、“減法”和“乘法”運算類型例10.10ImageList控件存放工具欄所需的圖像工具欄控件
(1)打開例10.8的應用程序(2)按照上述創建ImageList的方法,在窗體上建立ImageList1控件,并從Windows98系統文件夾中取出圖片文件Hlpcd.gif、Hlpbell.gif和Hlpglobe.gif(本例采用這三個圖片作為按鈕的圖形),并添加到該控件中。(3)在窗體上建立ToolBar1控件,使之與ImageList1相關聯,然后在控件中添加“加法”、“減法”和“乘法”三個按鈕,并分別取用ImageList1中的三個圖片。(4)在原有程序代碼的基礎上,增加以下的ButtonClick事件過程代碼
操作步驟
PrivateSubToolbar1_ButtonClick(ByValButtonAs_
MSComctlLib.Button)SelectCaseButton.IndexCase1sel2="+"Case2sel2="-"Case3el2="*"EndSelectEndSub
10.6.3狀態欄
狀態欄(StatusBar)通常位于窗體的底部,主要用于顯示應用程序的各種狀態信息。StatusBar控件屬于ActiveX控件
StatusBar控件由若干個面板(Panel)組成,每一個面板包含文本和圖片。StatusBar控件最多能分成16個Panel對象例10.11
使用狀態欄
在例10.10的基礎上,在窗體底部添加一個狀態欄,用于顯示當前時間、鍵盤大小寫狀態及運行狀態。
例10.1110.7對話框
對話框(DialogBox)是應用程序與用戶進行交互的主要途徑。三種對話框:
(1)預定義對話框
使用函數InputBox和MsgBox來實現。(2)通用對話框通用對話框是一種ActiveX控件,在使用之前,應選擇“工程”菜單中的“部件”命令先將其添加到工具箱中
(選中“MicrosoftCommonDialogControl6.0”
)
利用通用對話框能夠創建下列六種標準對話框(指定相應的參數,P233):
打開(Open),另存為(SaveAs),顏色(Color)
字體(Font),打印機(Printer),幫助(Help)(3)用戶自定義對話框
建立一個窗體,把窗體設置成對話框特性(沒有控制菜單框、最大化及最小化按鈕,不能改變其大小,見表10.3)
在窗體上根據需要放置控件
10.8
文件系統控件
VB工具箱中提供了三種文件系統控件:
驅動器列表框(DriveListBox):選擇一個驅動器文件夾列表框(DirListBox):顯示一個磁盤的文件夾結構文件列表框(FileListBox):顯示當前文件夾下的所有文件名這三種控件可以單獨使用,也可以組合使用
10.9.1強制顯式聲明變量語句(OptionExplicit)
避免因為寫錯變量名而導致錯誤例如,交換變量a、b的值
Temp=aa=bb=Tmp'把Temp寫錯成Tmp
運行結果是使b的值為0。若改成:
OptionExplicit‘模塊級聲明
DimaAsInteger,bAsInteger,TempAsInteger...Temp=aa=bb=Tmp
運行時VB就會發出警告“Variablenotdefined”(變量未定義),只有把Tmp改為Temp后才恢復正常10.9其他常用語句
10.9.2定義變量類型格式:Def類型標志字母范圍
示例:DefIntm-P
10.9.3自定義數據類型用戶可以利用Type語句定義自己的數據類型
[Private|Public]Type數據類型名元素名1As類型名1……
EndType10.9.4定義枚舉類型將變量的值一一列舉出來,變量的值只限于列舉出來的值
[Public|Private]Enum
枚舉類型名成員名1[=常數表達式]……
EndEnum定義類型語句
包括GoTo語句和On...GoTo語句
1.GoTo語句
語法格式:GoTo{行號|標號}
功能:改變程序的執行順序,跳轉到程序中指定的行開始執行
例10.15
應用GoTo語句示例
PrivateSubForm_Load()ShowPrint"整型數"
GoToLine1'跳轉到標號Line1指定的行
Print"單精度數"
Line1:Print"字符串"
EndSub10.9.5
GoTo型控制例10.15
On...GoTo語句用來實現分支選擇控制(類似于Select...EndSelect)
語法格式:On數值表達式GoTo{行號表|標號表}
功能:根據“數值表達式”的值,控制轉移到幾個指定的語句行中的一個語句行。例如
OnKGoToLine1,Line2,Line3
執行過程:將K四舍五入取整,如果其值為1,則轉移到Line1標號行;如果為2,則轉移到Line2標號行;如果為3,則轉移到Line3標號行。如果K的值等于0或大于3,則自動執行本語句的下一個語句
2.On...GoTo語句
1.直接輸出
把信息直接送往打印機格式:Printer.Print[表達式表]
(1)Page屬性:設置當前頁號格式:Printer.Page
(2)NewPage方法:實現
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 拜訪禮儀考試題及答案
- vb機考試題及答案
- 培訓機構班干部管理制度
- 學校實驗室安全管理制度
- 景區特色體驗管理制度
- 暖氣設施設備管理制度
- 公司工作服領用管理制度
- 出租車公司能源管理制度
- 化妝品公司經營管理制度
- 甲醇爐燃氣安全管理制度
- 負責人安全生產責任清單
- 民事起訴狀范文下載
- 醫護崗位職責與權限制度
- 【8歷期末】安徽省合肥市包河區2022-2023學年八年級下學期期末歷史試題(含解析)
- 八年級歷史下冊核心知識點、難點、重點總結
- 人工智能智慧樹知到期末考試答案章節答案2024年復旦大學
- (高清版)JTGT D81-2017 公路交通安全設施設計細則
- 2023-2024全國初中物理競賽試題-杠桿(解析版)
- 新概念馬學智慧樹知到期末考試答案章節答案2024年內蒙古農業大學
- (正式版)SHT 3551-2024 石油化工儀表工程施工及驗收規范
- 乳腺癌患者術后心理護理
評論
0/150
提交評論