版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章其他常用的語句及控件
本章主要內(nèi)<
其他一些常用語句
框架(Frame)
滾動(dòng)條(ScrollBar),
鍵盤與鼠標(biāo)事件
通用對(duì)話框(CommonDialog)^^^B
文件系統(tǒng)控件」Qr+
10.1其他常用語句
10.1.1強(qiáng)制顯式聲明變量語句(OptionExplicit)
避免因?yàn)閷戝e(cuò)變量名而導(dǎo)致錯(cuò)誤
例如,交換變量a、b的值
Temp二a
a=b
b=Tmp,把Temp寫錯(cuò)成
運(yùn)行結(jié)果是使b的值為o
OptionExplicit^^l,模塊級(jí)聲明
DimaAsInteger,bAsInteger,TempAsInteger
???
Temp=a^^!
a=b^^|
b=Tmp^^|
運(yùn)行時(shí)VB就會(huì)發(fā)出警告"Variablenotdefined〃(變量未定
義),只有把Tmp改為Temp后才恢復(fù)正常
10.1.2定義變量類型
格式:Def類型標(biāo)志字母范圍
功能:在模塊級(jí)聲明段中定義變量(相應(yīng)數(shù)據(jù)類型)
示例:Deflntm-P
10.1.3自定義數(shù)據(jù)類型■
用戶可以利用
[Private|Public]Type
元素名lAs類型名
[元素名2As類型名2]?
EndType|
TypeRskRec^^l
編號(hào)AsString*3,用漢字表示字段名
姓名AsString*8
,性另UAsBoolean
出生日期AsDate
基本工資AsLong
EndType^^H
這里的Rsk_Rec是一個(gè)用戶定義的數(shù)據(jù)記錄類型,它由5個(gè)
元素(字段)組成
¥
10.1.4定義枚舉類型
所謂“枚舉”是指將變量的值一一列舉出來,變量的值只限
于列舉出來的值
[Public|Private]Enum枚舉類型名
成員名1[=常數(shù)表達(dá)式]
成員名2上常數(shù)表達(dá)式]
EndEnum
例10.1應(yīng)用枚舉類型示例
輸入一個(gè)數(shù)字表示星期幾,判斷輸出是“休息日”還是“工
作日”
PrivateEnumweekdays'定義Weekdays為枚舉類型
Sun
Mon
Tue
Wed
Thu
Fri
Sat
EndEnum
平十斗
PrivateSubCommandl_Click()
DimmydayAsweekdays,定義Myday為Weekdays枚舉類型
myday=Val(InputBox("今天是星期幾(0?6)")),輸入0?6
Ifmyday<SunOrmyday>SatThen
MsgBox”輸入的星期數(shù)錯(cuò)誤”
Else
Ifmyday=SunOrmyday=SatThen
MsgBox”休息日“
Else
MsgBox”工作日”
EndIf
EndIf
EndSub羊
10.1.5GoTo型控制
包括GoTo語句和On.??GoTo語句
1.GoTo語句■
語法格式:GoTo{行號(hào)標(biāo)號(hào)}?
功能:改變程序的執(zhí)行順序,跳轉(zhuǎn)到程序中指定的行開始執(zhí)行
例10.2應(yīng)用GoTo語句示例
PrivateSubForm_Load()
Show
Print”整型數(shù)”
GoToLinel,跳轉(zhuǎn)到標(biāo)號(hào)Linel指定的行
Print”單精度數(shù)”多
Linel:W
Print"字符串"¥
EndSub
2.On-GoTo語句
On.??GoTo語句用來實(shí)現(xiàn)分支選擇控制(類似于Select.??End
Select)
語法格式:On數(shù)值表達(dá)式GoTo{行號(hào)表|標(biāo)號(hào)表}■
功能:根據(jù)“數(shù)值表達(dá)式”的值,控制轉(zhuǎn)移到幾個(gè)指定的語句
行中的一個(gè)語句行。
例如
OnKGoToLinel,Line2,Line3
執(zhí)行過程:將K四舍五入取整,如果其值為1,則轉(zhuǎn)移到Linel
標(biāo)號(hào)行;如果為2,則轉(zhuǎn)移到Line2標(biāo)號(hào)行;如果為3,則轉(zhuǎn)移到
Line3標(biāo)號(hào)行。如果K的值等于0或大于3,則自動(dòng)執(zhí)行本語句的
下一個(gè)語句V
10.1.6打印機(jī)輸出
把信息直接送往打印機(jī)
格式:Printer.Print[表達(dá)式表]
(l)Page屬性:設(shè)置當(dāng)前頁號(hào)
格式:Printer.Page
(2)NewPage方法:實(shí)現(xiàn)換頁操作
格式:Printer.NewPage
(3)EndDoc方法:結(jié)束文件打印
您式:Printer.EndDoc
例10.3在打印機(jī)上打印文字“計(jì)算機(jī)程序設(shè)計(jì)”
PrivateSubCommandl_Click()
Printer.FontName="隸書”
Printer.FontSize=12
Printer.Print”計(jì)算機(jī)程序設(shè)計(jì)”,將文本放到Printer對(duì)象中
Printer.EndDoc,打印結(jié)束
EndSub
2.窗體輸出
先把要輸出的信息送到窗體上,再用PrintForm方法把
窗體上的內(nèi)容打印出來
格式:[窗體名.]PrintForm
功能:把窗體上的信息輸出到打印機(jī)
¥
10.1.7閑置循環(huán)與DoEvents語句
VB只有在發(fā)生事件時(shí)才執(zhí)行相應(yīng)的事件過程,如果沒
有事件發(fā)生,則應(yīng)用程序處于“閑置”狀態(tài)
所謂閑置循環(huán),就是當(dāng)程序處于閑置狀態(tài)時(shí),用一個(gè)循
環(huán)來執(zhí)行某些操作
為使在閑置循環(huán)中也能響應(yīng)其他操作和事件,VB提供
[窗體號(hào)=]DoEvents[()].
功能:在閑置循環(huán)中,通過DoEvents語句可以把控制權(quán)
交給系統(tǒng)去處理所發(fā)生的事件
例10.4閑置循環(huán)和DoEvents應(yīng)用示例
(1)建立一個(gè)文本框和二個(gè)命令按鈕,兩個(gè)事件過程:
^^|PrivateSubCommandl_Click()
Textl.FontSize=Textl.FontSize+1
EndSub
PrivateSubCommand!_Click()
End
EndSub
(2)編寫SubMain過程
PrivateSubMAIN()
Forml.Show
DoWhileTrue,進(jìn)入“閑置循環(huán)”
x=DoEvents,把控制權(quán)交給系統(tǒng)去處理所發(fā)生的事件
,否則不能處理其他事件
Forml.Textl.Text=Time
Loop
EndSub
(3)把SubMain設(shè)置為啟動(dòng)對(duì)象
程序運(yùn)行后,進(jìn)入閑置循環(huán),此時(shí)將在文本框Textl中
不斷地顯示系統(tǒng)時(shí)間。
由于加入DoEvents函數(shù),則可以在執(zhí)行閑置循環(huán)過程
中執(zhí)行其他操作,如重設(shè)窗體的大小及最大化/最小化,還
能響應(yīng)命令按鈕Commandl和Command2的單擊事件等。
當(dāng)其他操作完成后,又會(huì)回到閑置循環(huán)中繼續(xù)執(zhí)行
4
10.2框架(Frame)
框架的用途
作為容器放置其他控件對(duì)象,將這些控件對(duì)象分成可標(biāo)
識(shí)的控件組;框架內(nèi)的所有控件將隨框架一起移動(dòng)、顯示
2.常用屬性^■
Name屬性和Caption屬性
事件
可以響應(yīng)Click和
在應(yīng)用程序中一般不需要編寫有關(guān)框架的事件過程
例10.5控制文本的字體、字號(hào)及顏色
⑴創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性
在窗體上設(shè)置3個(gè)框架Framel、Frame2和Frame3
⑵編寫程序代碼
功能要求:在三個(gè)框架中分別選擇字體、字號(hào)
和顏色,單擊“確定”按鈕后,文本框中的文本相
應(yīng)屬性會(huì)發(fā)生變化
PrivateSubForm_Load()
Optionl.Value=True
Option3.Value=True
Option5.Value=True
Textl.FontName=''宋體''
Textl.FontSize=16
Textl.ForeColor=RGB(0,0,255)¥
EndSub1M
¥
PrivateSubCommandl_Click()
IfOptionl.ValueThen
Text1.FontName=''宋體''
Else
Text1.FontName=''幼圓"
EndIf
IfOption3.ValueThen
Text1.FontSize=16
Else
Text1.FontSize=20
EndIf
IfOption5.ValueThen
Textl.ForeColor=RGB(0,0,255)
Else
Textl.ForeColor=RGBQ55,0,0)
EndIf
EndSub年
10.3滾動(dòng)條
L滾動(dòng)條的用途■
用程序和控件提供滾動(dòng)功能,也可
水平滾動(dòng)條(HScrollBar)和垂直滾動(dòng)條(VScrollBar)
最小值(Min),最大值(Max);移動(dòng)滾動(dòng)塊時(shí),代表的值隨之
改變
2.常用屬性
(l)Min、Max屬性:Min屬性的默認(rèn)值為0,Max屬性的默認(rèn)
值為32767^M
(2)Vahie屬性:設(shè)置滾動(dòng)塊在滾動(dòng)條中的位置值¥
(3)Smallchange最小變動(dòng)值屬性人*
(4)LargeChange最大變動(dòng)值屬性W
3.事件
滾動(dòng)條控件可以識(shí)別io個(gè)事件,其中最常用的是
Scroll和Change^^^^H
(l)Scroll事件:當(dāng)用鼠標(biāo)拖動(dòng)滾動(dòng)塊時(shí),即觸發(fā)
Scroll事件
(2)Change事件:當(dāng)改變Value屬性值時(shí),即觸發(fā)
Change事件
當(dāng)釋放滾動(dòng)塊、單擊滾動(dòng)條內(nèi)空白處或滾動(dòng)箭頭
時(shí),Change重彳牛就會(huì)發(fā)生。
¥**
例10.6設(shè)計(jì)一個(gè)調(diào)色板應(yīng)用程序
建立三個(gè)水平滾動(dòng)條作為紅、綠、藍(lán)三種基本顏色的輸
入工具,合成的顏色顯示在右邊的標(biāo)簽中(圖10.17),用其背
景顏色屬性BackColor值的改變實(shí)現(xiàn)合成顏色的調(diào)色
■調(diào)色板應(yīng)用
紅jJ
綠jJ
藍(lán),
說明:根據(jù)調(diào)色原理,基本顏色有紅、綠、藍(lán)三種,選
擇這三種顏色的不同比例,可以合成所需要的任意顏色
(1)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性
三個(gè)水平滾動(dòng)條名稱從上至下分別為HScrolU、HScroll2、
HScrolB
其Max屬性均設(shè)置為255,Min屬性均設(shè)置為0,
SmallChangeM性設(shè)置為1,LargeChange屬性設(shè)置為10,
Value設(shè)置為0。
顯示合成顏色的標(biāo)簽名為L(zhǎng)abell
(2)編寫程序代碼
功能要求:通過操作(單擊或拖動(dòng))滾動(dòng)條,直接修改
RGB設(shè)置,從而得到標(biāo)簽背景所需的顏色
PrivateSubHScrolll_Change()
Labell.BackColor=RGB(HScrolll.Value,_
HScrolll.Value,HScrolB.Value)
EndSub
PrivateSubHScroll2_Change()
Labell.BackColor=RGB(HScrolll.Value,_
HScrolll.Value,HScrolB.Value)
EndSub
PrivateSubHScroll3_Change()
Labell.BackColor=RGB(HScrolll.Value9_
HScroll2.Value,HScrolB.Value)
EndSub
10.4圖形方法和圖形控件
4種圖形控件:PictureBox控件、Image控件、Shape控
件和Line控件;圖形方法
10.4.1坐標(biāo)系
每個(gè)對(duì)象都定位于存放它的容器內(nèi)
每個(gè)容器都有一個(gè)坐標(biāo)系,它包括坐標(biāo)原點(diǎn),X坐標(biāo)軸和
y坐標(biāo)軸,默認(rèn)的坐標(biāo)原點(diǎn)(0,0)在容器對(duì)象的左上角
默認(rèn)單位為Twip(提),還可以使用磅、像素、厘米等單
位
窗體的實(shí)際可用的高度和寬度由ScaleHeightff
ScaleWidth屬性確定
CurrentX和CurrentY屬性
10.4.2圖形方法
使用Pset(畫點(diǎn))、Line(畫線)、Circle(畫圓)等圖形方法,
可以方便地在窗體和圖片框上繪制簡(jiǎn)單的圖形
1.Pset(畫點(diǎn))方法■
格式:[對(duì)象名.]Pset[Step](x,y)[,顏色]■
功能:在對(duì)象的指定位置(x,y)上按選定的顏色畫點(diǎn)
參數(shù)Step指定(x,y)是相對(duì)于當(dāng)前坐標(biāo)點(diǎn)的坐標(biāo)
示例:下列語句能在坐標(biāo)位置(500,900)處畫一個(gè)紅點(diǎn):
Pset(500,900),RGB(255,0,0)^H
CurrentX=100:CurrentY=100^^|
PsetStep(400,800),RGB(255,0,0)
3.Circle(畫圓)|_方__法_____
格式:
[對(duì)象名?]Circle[Step](x,y),半徑【,顏色,起點(diǎn),終點(diǎn),縱橫比]
功能:在對(duì)象上畫圓、橢圓或圓弧■
說明:(l)(x,y)是圓、橢圓或圓弧的中心坐標(biāo),“半徑”是圓、
(2)“起點(diǎn)”、“終點(diǎn)”(以弧度為單位)指定弧或扇形的起點(diǎn)
或終點(diǎn)位置,其范圍從?2元到23“起點(diǎn)”的默認(rèn)值為0,“終
點(diǎn)”的默認(rèn)值為
(3)縱橫比為圓的縱軸和橫軸的尺寸比。當(dāng)縱橫比大于1時(shí),
橢圓沿垂直方向拉長(zhǎng);當(dāng)縱橫比小于1時(shí),橢圓沿水平方向拉
長(zhǎng)??v橫比的默認(rèn)值為1,將產(chǎn)生一個(gè)標(biāo)準(zhǔn)圓。
(4)可以省略中間的某個(gè)參數(shù),但不能省略分隔參數(shù)的逗號(hào)
例167在窗體上畫出一個(gè)扇形、圓、橢圓
PrivateSubForm_Load()
ConstPI=3.14159
Show
Circle(2500,1500),1200,vbBlue,-PI,-PI/2
CircleStep(-600,-600),600
CircleStep(O,0),600,,,,5/25
EndSub
10.4.3圖片框(PictureBox)
TO
圖片框(PictureBox)和圖像框(Image)都是用于顯示圖形。
圖片框可以作為其他控件的容器,還可以在圖片框上面放置
其他控件,這些控件隨圖片框的移動(dòng)而移動(dòng)
Picture屬性:用于設(shè)置在圖片框中要顯示的圖像文件
Picturel.Picture=LoadPicture("圖形文件名
Picturel.Picture=LoadPicture(),清除圖片
Align屬性:設(shè)置圖片框在窗體中的顯示方式
AutoSize屬性:確定圖片框如何與圖形相適應(yīng)
3.
⑴顯示和消除圖形:見Picture^^H
(3)用圖形方法在圖片框中畫圖形
可以使用Circle(畫圓)、Line(畫線)、Pset(畫點(diǎn))等方
法在圖片框中畫圖形
一—▲一*
示例
PrivateSubForm_Load()^^H
Show
Picturel.Print”在圖片框內(nèi)寫字和畫圓“
Picturel.Circle(120051000),600,RGB(0,0,255)^H
Picturel.PSet(1200,1000),RGB(255,0,0)^H
EndSub^H
10.4.4像框(Image)
圖像框(Image)控件的作用與圖片框PictureBox控件相似,
但它只能用于顯示圖形,不能作為其他控件的容器
10.4.5Shape形狀控件
VB提供了畫圖形的基本工具,如Shape(形狀
控件)、Line(線控件)。
Shape控件和Line控件只用于表面裝飾,不支
持任何事件。
10.4.6Line直級(jí)控件
Line直線控件可用來在窗體、框架和圖片框中
繪制簡(jiǎn)單的線段。
fl10.8設(shè)計(jì)一個(gè)走動(dòng)的時(shí)鐘
(1)分析:本例分別以Second、Minite和Hour函數(shù)取得系統(tǒng)時(shí)
間
Time的秒、分和時(shí)數(shù),再利用計(jì)時(shí)器控件,按一定時(shí)間間隔把時(shí)
間數(shù)轉(zhuǎn)換為圖形指針位置和顯示出來
(2)創(chuàng)建應(yīng)用程序的用戶界面
計(jì)時(shí)器(Timerl),形狀控件(Shapel),三條線控件(LineS,
LineM,LineH),四個(gè)標(biāo)簽(表示數(shù)字)
?工程1-Foral(Fora)SE?
(3)設(shè)置對(duì)象屬性
Timerl的Interval屬性為1000(1秒)
Shape1的Shape屬性為3-Circle(圓形),F(xiàn)illStyle屬性為0-
Solid(實(shí)心)
LineS,LineM,LineH的BorderWidth屬性為1,2,4
(4)編寫程序代碼
OptionExplicit
Constpi=3.14159
Privatelen_SAsSingle,len_MAsSingle,len_HAsSingle
PrivateSubForm_Load()
,先取各指針的長(zhǎng)度
,秒針長(zhǎng)度
len_S=Sqr((LineS.Y2-LineS.Yl)A2+(LineS.X2-LineS.Xl)A2)
",分針長(zhǎng)度
len_M=Sqr((LineM.Y2-LineM.Yl)A2+(LineM.X2-LineM.Xl)A2)
,時(shí)針長(zhǎng)度
len_H=Sqr((LineH.Y2-LineH.Yl)A2+(LineH.X2-LineH.Xl)A2)
CallTimerlTimer
EndSub
PrivateSubTimerl_Timer()定時(shí)器的定時(shí)事件過程
DimsAsSingle,mAsSingle,hAsSingle
Forml.Caption=Time
s=Second(Time)
m=Minute(Time)
h=Hour(Time)+m/60
LineS.X2=LineS.Xl+len_S*Sin(pi*s/30),繪制秒針
LineS.Y2=LineS.Yl-len_S*Cos(pi*s/30)
LineM.X2=LineM.Xl+len_M*Sin(pi*m/30),繪制分針
LineM.Y2=LineM.Yl-len_M*Cos(pi*m/30)
Ifh>=12Thenh=h-12
LineH.X2=LineH.Xl+len_H*Sin(pi*h/6),繪制時(shí)針
LineH.Y2=LineH.Yl-len_H*Cos(pi*h/6)
EndSub
計(jì)算指針位置的方法
s秒_K
60秒In
K=27rS/60=7rs/30
x2=xl+x=xl+L*Cos(7r/2-k)=xl+L*Sink
LineM.X2=LineM.Xl+Lens*Sin(pi*s/30)
K(s秒)
10.5菜單設(shè)計(jì)
應(yīng)用程序通過菜單為用戶提供一組命令
菜單一般分為兩種:即下拉式菜單和彈出式菜單
10.5.1下拉式菜單
下拉式菜單基本結(jié)構(gòu)包括:頂層菜單、菜單項(xiàng)和子菜單
訪問鍵快捷鍵子菜單提示符
Z.
頂層菜單文件⑥編輯@)視圖?幫助QP
■HL一一廣菜單項(xiàng)
菜單項(xiàng)新建Ctrl+N
打開.ra襠
復(fù)選標(biāo)記文本文件
3保存Ctrl+S
另存為
分隔線
關(guān)閉?
10.5.2菜單編輯器
設(shè)計(jì)菜單的工具
啟動(dòng)菜單編輯器的方法
菜單編輯器分為上、下兩部分,上半部分用來設(shè)置屬性,
下半部分是菜單顯示區(qū),用來顯示用戶輸入的菜單內(nèi)容。
“標(biāo)題"(Caption)輸入框
供輸入標(biāo)題,也會(huì)同時(shí)顯示在菜單顯示區(qū)。菜單項(xiàng)的訪問
鍵,用"(&字符)”格式
“名稱"(Name)輸入框
“索引”
“幫助上下文ID”輸入框
“協(xié)調(diào)位置”列表框
“復(fù)選”框
“可見”框】
¥叱
例10.9編一程序,進(jìn)行兩個(gè)操作數(shù)的算術(shù)運(yùn)算練習(xí)
設(shè)計(jì)步驟如下:■
(1)創(chuàng)建應(yīng)用程序的用戶界面和設(shè)置對(duì)象屬性菜單欄向用戶
提供功能選擇,包括運(yùn)算數(shù)的位數(shù),運(yùn)算符類型和退出程序
菜單設(shè)計(jì)
各個(gè)菜單項(xiàng)名稱
(2)編寫程序代碼
功能要求
OptionExplicit,顯式聲明變量
DimsellAsInteger,sellAsString
DimrlAsLong
PrivateSubForm_Load()
sell=0,位數(shù)標(biāo)記
sell=,運(yùn)算標(biāo)記
Randomize
EndSub
PrivateSubMnull_Click()
sell=1,設(shè)置位數(shù)標(biāo)記
EndSub
PrivateSubMnul2_Click()
sell=10
EndSub
PrivateSubMnul3_Click()
sell=100
EndSub
PrivateSubMnu21_Click()
sell=''+,,,設(shè)置運(yùn)算標(biāo)記
EndSub
PrivateSubMnu22_Click()
sell='',,
EndSub
PrivateSubMnu23_Click()
s&2=
EndSub—*
PrivateSubCommandl_Click(),”命題”按鈕單擊事件
DimaAsLong,bAsLong
Ifsell=0Orsel2=MnThen
MsgBox”先選擇運(yùn)算數(shù)的位數(shù)和運(yùn)算類型”
ExitSub
EndIf
a=sell+Int(9*sell*Rnd),隨機(jī)生成指定位數(shù)的操作數(shù)
b=sell+Int(9*sell*Rnd)
Labell.Caption=Str(a)+sell+Str(b)+,組成算式
SelectCasesell,求運(yùn)算結(jié)果H
Case
rl=a+b
Case”
rl=a-b
Case
rl=a*b
EndSelect
Text1.Text=
Textl.SetFocus
EndSub
PrivateSubCommand2_Click(),“答題”按鈕單擊事件
Dimr2AsLong
IfTextl.Text=nnThen
MsgBox”請(qǐng)輸入答案”
ExitSub
EndIf
r2=Val(Textl.Text),讀取用戶的答案
Ifrl=r2Then,判斷答案
LabeB.Caption=''正確''
Else
LabeB.Caption="錯(cuò)誤”
EndIf
EndSub
PrivateSubMnu30_Click(),“退出”菜單命令
End
EndSub¥
10.5.4運(yùn)行時(shí)改變菜單屬性
1.使菜單命令有效或無效?
所有的菜單項(xiàng)都具有Enabled屬性,當(dāng)該屬性為True(默認(rèn)
值)時(shí),有效;若為Fake時(shí),菜單項(xiàng)會(huì)變暗,菜單命令無效。
舉例:Mnu30.Enabled=False
[:hlIildl?
使用菜單項(xiàng)的Checked屬性,可以設(shè)置復(fù)選標(biāo)記。
舉例:Mnu31.Checked=True
■
3.使菜單項(xiàng)不可見?[
舉例:Mnu30.Visible=True平
10.5.5彈出式菜單
標(biāo)右鍵。可以根據(jù)右
使用VB提供的菜單編輯器,把某個(gè)菜單設(shè)置成隱藏。
(1)使用菜單編輯器設(shè)計(jì)菜單
I
(2)設(shè)置頂層菜單項(xiàng)為不可見,即不選中菜單編輯器里的
“可見”選項(xiàng)或在屬性窗口中設(shè)定Visible屬性為False
I
出式菜單相關(guān)聯(lián)的MouseUp(釋放鼠標(biāo))事件過程。
[對(duì)象]PopupMenu菜單名[,位置常數(shù)][,橫坐標(biāo)L縱坐標(biāo)]]]
171I5IuLL171IU?DU,J仝則J_,JU也私不干以刀IAJAL不
單
(1)打開例10.9的應(yīng)用程序,選定窗體,然后在菜單編輯器中
將“位數(shù)”菜單標(biāo)題的“可見”框中的“y”取消(即不選中)
(2)增加以下的MouseUp事件過程代碼:
PrivateSubForm_MouseUp(ButtonAsInteger,_
ShiftAsInteger,XAsSingle,YAsSingle)!
___IfButton=2Then,檢查是否右擊,擊左鍵為1
■
PopupMenumnulO^^H
End
EndSub
程序運(yùn)行時(shí),右擊窗體空白處,即會(huì)彈出快捷菜單,如圖
10.11所示
10.6工具欄和狀態(tài)欄
分別通過ActiveX控件ToolBar和StatusBar來實(shí)現(xiàn)
■
10.6.1ActiveX控件簡(jiǎn)介
VB中使用的控件有三類:標(biāo)準(zhǔn)控件、ActiveX
控件和可插入對(duì)象(如Word文檔、Excel工作表等,可當(dāng)
作控件使用)
ActiveX控件是一段可重復(fù)使用的程序代碼和數(shù)
據(jù)。由ActiveX技術(shù)創(chuàng)建的,可以作為VB工具箱的
擴(kuò)充部分。
ActiveX控件以單獨(dú)的文件存在(.ocx)
10.6.2工具欄(ToolBar)
工具欄為用戶帶來比用菜單更為快速的操作
為窗體添加工具欄,應(yīng)使用工具條(ToolBar)控件
和圖彳象控侔列表(ImageList)控件(不是標(biāo)準(zhǔn)控件,
創(chuàng)建工具欄的大致步驟^■
⑴添加ToolBar控件和
(2)用
(3)創(chuàng)建ToolBar控件,并將ToolBar控件與ImageList控件
相關(guān)喉,創(chuàng)建Button對(duì)象
(4)編寫B(tài)utton的Click事件過程。
單擊工具欄控件時(shí)觸發(fā)Click事件,單擊工具欄上按鈕時(shí)
觸發(fā)ButtonClick事侔,笄返回一個(gè)Button參數(shù)(表明按下哪個(gè)
按鈕)
例10.11使用工具欄
在例10.9的基礎(chǔ)上,增加一個(gè)工具欄,使之能快
速提供“力口法”、“減法”和“乘法”運(yùn)算類型
操作步驟:
(1)打開例10.9的應(yīng)用程序
(2)按照上述創(chuàng)建ImageList的方法,在窗體上建立
ImageListl控件,并從Windows98系統(tǒng)文件夾中取出圖片文件
Hlpcd.gif、Hipbell.gif和Hlpglobe.gif(本例采用這三個(gè)圖片作為
按鈕的圖形
(3)在窗體上建立ToolBarl控件,使之與ImageListl相關(guān)聯(lián),
然后在控件中添加“加法”、“減法”和“乘法”三個(gè)按鈕,
并分別取用ImageListl中的三個(gè)圖片。
(4)在原有程序代碼的基礎(chǔ)上,增加以下的ButtonClick事件
過程代碼¥
10.6.3狀態(tài)欄
狀態(tài)欄(StatusBar)通常位于窗體的底部,主要
用于顯示應(yīng)用程序的各種狀態(tài)信息。StatusBar控件
屬于ActiveX控件
StatusBar控件由若干個(gè)面板(Panel)組成,每一
個(gè)面板包含文本和圖片。StatusBar控體最多能分成
16個(gè)Panel對(duì)象
★
例10.12使用狀態(tài)欄
(1)打開例
(2)在窗體上創(chuàng)建StatusBarl^^^H
(3)右擊StatusBarl控件,從快捷菜單中選擇
“屬性”命令,系統(tǒng)彈出“屬性頁”對(duì)話框
(4)單擊“窗格”選項(xiàng)卡,屏幕顯示如圖10.16所
示
(5)設(shè)置第1個(gè)窗格(索弓I為1),“工具提示文本”
為“提示信息”,“樣式”為"0-sbrText”(即顯示
文本和位圖),其顯示內(nèi)容在運(yùn)行時(shí)由程序代碼設(shè)置
(6)設(shè)置第2個(gè)窗格(索引為2),“工具提示文本”
為“大小寫狀態(tài)”,“樣式”為為-sbrCaps”(即顯
/l\寸牛
(7)設(shè)置第3個(gè)窗格(索引為3),其“工具提示文
本”為“時(shí)間”,“樣式”為"5?sbrTime”(即按
系統(tǒng)格式顯示時(shí)間)。
(8)要在運(yùn)行中使第1個(gè)窗格顯示“正在運(yùn)行
中”,可在Form_Load()事件過程中加入如下代
StatusBar1.Panels.Item(l)=''正在運(yùn)行中
運(yùn)行程序
10.7鍵盤與鼠標(biāo)事件
窗體和大多數(shù)控件都能響應(yīng)鍵盤和鼠標(biāo)事件
10.7.1鍵盤事件
有三種事件處理鍵盤操作,即KeyPress、KeyDown和
KeyUp事件
1.KeyPress事件
2.KeyDown事件:用戶按下鍵盤上某個(gè)鍵時(shí)觸發(fā)此事件
PrivateSubFormKeyDown(KeyCodeAsInteger,ShiftAsInteger)|
Print"按下鍵的代碼是";KeyCode^,
EndSub^^H
參數(shù)KeyCode是一個(gè)按下鍵的代碼(不區(qū)分大小寫)
3.KeyUp事件:用戶按下鍵盤上某個(gè)鍵后釋
放時(shí)觸發(fā)此事件。事件過程的語法格式類似于
KeyDown事件
KeyDown和KeyUp事件除了可以識(shí)別
KeyPress事件能識(shí)別的鍵,還可識(shí)別鍵盤上的
大多數(shù)鍵,如功能鍵、編輯鍵、定位鍵和數(shù)字
小鍵盤上的鍵
¥
一
10.7.2鼠標(biāo)事件
包括:Click、DblClick>MouseMove>MouseDown和
MouseUp等事件
1.鼠標(biāo)事件過程格式
一后三種鼠標(biāo)事件與Click、DblClick事件不同的是可以區(qū)分
鼠標(biāo)的左、右、中鍵與Shift、CtrLAlt鍵。
鼠標(biāo)事件過程的語法格式為:
PrivateSub對(duì)象名鼠標(biāo)事件(ButtonAsInteger,ShiftAs
Integer,
XAsSingle,YAsSingle)
說明:(1)Button參數(shù)表示哪個(gè)鼠標(biāo)鍵被按下或釋放。用0,1,2位分
別表示鼠標(biāo)的左、右、中鍵,用1或0表示被按下或釋放
210位
(2)Shift參數(shù)表示當(dāng)鼠標(biāo)鍵被按下或釋婺時(shí),Shift>CtrL
Alt鍵的按下或釋放狀態(tài)。用0、1、2位表示Shift、CtrLAlt
鍵
(3)X,Y表示鼠標(biāo)指針的當(dāng)前坐標(biāo)位置
2.鼠標(biāo)事件
⑴MouseDown和MouseUp^^^^H
當(dāng)按下鼠標(biāo)任意鍵時(shí)發(fā)生MouseDown事件,放開鼠標(biāo)
鍵時(shí)發(fā)生MouseUp事件
PrivateSubFormMouseDown(ButtonAsInteger,
ShiftAsInteger,XAsSingle,YAsSingle)
Commandl.MoveX,Y*
EndSub¥
¥▼
(2)MouseMove事件
當(dāng)移動(dòng)鼠標(biāo)時(shí)發(fā)生MouseMove事件。伴隨鼠標(biāo)指
針在對(duì)象上移動(dòng),該事件會(huì)連續(xù)不斷地產(chǎn)生
(3)改變鼠標(biāo)指針的形狀
通過MousePointer和Mouselcon屬性來設(shè)置鼠標(biāo)指
針形狀
對(duì)象的MousePointer屬性用于設(shè)置鼠標(biāo)指針的形狀
示例:Text1.MousePointer=2x
10.7.3拖放操作
“拖放”(DragDrop)就是使用鼠標(biāo)將對(duì)象從一個(gè)地方拖動(dòng)
到另一個(gè)地方再放下控件拖放是指運(yùn)行時(shí)將控件拖放到新的
位置
它可以分解為兩種操作:一個(gè)是發(fā)生在源對(duì)象的“拖”
操作,另一個(gè)是發(fā)生在目標(biāo)對(duì)象上的“放”操作
1.屬性
(l)DragMode屬性:用于設(shè)置拖放方式
為手動(dòng)方式,通過代碼來設(shè)定拖
(2)DragIcon屬性:設(shè)置拖放操作時(shí)顯示的圖標(biāo),默認(rèn)情況
下是將源對(duì)象的灰色輪廓作為拖動(dòng)圖標(biāo)
2.事件
(l)DragDrop事件:當(dāng)一個(gè)完整的拖放動(dòng)作完成時(shí)觸發(fā)。
它可用來控制在拖放操作完成時(shí)要進(jìn)行的處理。其事件過程的
PrivateSub對(duì)象名_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
Source表示正在被拖動(dòng)的對(duì)象,X、Y表示鼠標(biāo)指針在目
標(biāo)對(duì)象中的坐標(biāo)。
■
一(2)DragOver事件:當(dāng)源對(duì)象被拖動(dòng)到目標(biāo)對(duì)象上,在目
標(biāo)對(duì)象上就會(huì)觸發(fā)DragOver事件。本事件先于DragDrop事件。
其事件過程的語法格式為:
■
PrivateSub對(duì)象名_DragOver(SourceAsControl,XAsSingle,_
YAsSingle,StateAsInteger)^H
State參數(shù):0表示進(jìn)入,即源對(duì)象正進(jìn)入目標(biāo)對(duì)象內(nèi);
1表示離開,即源對(duì)象正在離開目標(biāo)對(duì)象;
2表示跨越,即源對(duì)象在目標(biāo)范圍內(nèi)移動(dòng)位置
3.方法
常用的有Drag方法。
對(duì)象名.Drag[動(dòng)作]■
“動(dòng)作”取值為0時(shí),表示取消拖動(dòng)操作;取值為1時(shí),啟
動(dòng)拖動(dòng)操作;取值為2時(shí),結(jié)束拖動(dòng)操作
例10.13采用自動(dòng)方式,實(shí)現(xiàn)文本框的拖動(dòng)操作
在窗體上建立一個(gè)文本框TextL其DragMode屬性值設(shè)置
為1(自動(dòng)方式),程序代碼:
PrivateSubForm_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
Source.MoveX,Y'移動(dòng)對(duì)象位置
EndSub
例10.14采用手動(dòng)方式,實(shí)現(xiàn)文本框的拖動(dòng)操作
在窗體上建立一個(gè)文本框Textl,其DragMode屬性值設(shè)置
為0(手動(dòng)方式),程序代碼:
PrivateSubForm_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
Source.MoveX,Y'移動(dòng)對(duì)象位置
EndSub
PrivateSubTextl_MouseDown(ButtonAsInteger,ShiftAsInteger,
XAsSingle,YAsSingle)
Text1.Drag1'啟動(dòng)“拖動(dòng)”操作
EndSub
PrivateSubTextl_MouseUp(ButtonAsInteger,ShiftAsInteger,
XAsSingle,YAsSingle)
Text1.Drag2'結(jié)束“拖動(dòng)”操作
EndSub
例10.15把文本框中的選定文本,拖放到圖
片框內(nèi)顯示出來
(1)在窗體上建立一^個(gè)圖片框(Picturel)和一^個(gè)文本框
(Text。文本框的Text屬性為空
(2)編寫程序代碼
功能要求:程序運(yùn)行后,用戶在文本框內(nèi)輸入文本和用鼠
標(biāo)選定(通過拖動(dòng))文本,然后按住鼠標(biāo)左鍵后把文本框拖放到
圖片框內(nèi),即可把已選定的文本顯示在圖片框內(nèi)w
程序代碼:
PrivateSubForm_Load()^^|
Textl.DragMode=0‘置手動(dòng)方式■
EndSub^^H
PrivateSubPicturel_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
Picturel.CurrentX=X'以鼠標(biāo)位置為當(dāng)前顯示起始位置
Picturel.CurrentY=
Picturel.PrintTextl.SelText'在圖片框中顯示文本框中的選定內(nèi)容
EndSub^^l
PrivateSubTextl_MouseMove(ButtonAsInteger,ShiftAsInteger,
XAsSingle,YAsSingle)
IfButton=1ThenButton為
'置自動(dòng)方AS¥
Textl.DragMode=1
End
EndSub*
10.8對(duì)話框
對(duì)話框(DialogBox)是應(yīng)用程序與用戶進(jìn)行交互的
主要途徑。三種對(duì)話框:
⑴預(yù)定義對(duì)話框(使用函數(shù)InputBox和MsgBox來實(shí)
現(xiàn))■
(2)通用對(duì)話框■
(3)用戶自定義對(duì)話框
10.8.1通用對(duì)話框
通用對(duì)話框是一種ActiveX控件,利用它能夠很容易地創(chuàng)
建下列六種標(biāo)準(zhǔn)對(duì)話框:打開(Open),另存為(SaveAs),顏色
(Color),字體(Font),打印機(jī)(Printer)和幫助(Help)對(duì)話框
1.添加通用對(duì)話框控件
在使用之前,應(yīng)選擇“工程”菜單中的“部件”命令先將
其添加到工具箱中
當(dāng)程序運(yùn)行時(shí),通用對(duì)話框是不可見的
通用對(duì)話框不僅本身具有一組屬性,而且由它產(chǎn)生的各種標(biāo)
準(zhǔn)對(duì)話框也擁有許多特定屬性。
屬性設(shè)置可以在屬性窗口或程序代碼中進(jìn)行,也可以通過
“屬性頁”對(duì)話框來設(shè)置
2.屬性頁
3.通用對(duì)話框的基本屬性和方法
(2)Action屬性:該屬性直接決定打開哪種對(duì)話框
對(duì)話框類型Action屬性值
無對(duì)話框0
打開”對(duì)話框ShowOpen
“另存為”對(duì)話框2ShowSaveB
“顏色”對(duì)話框3ShowColorJ
“字體”對(duì)話框4ShowFontH
“打印”對(duì)話框5ShowPrinterl
“幫助”對(duì)話框6ShowHelp
例如,利用通用對(duì)話框CommonDialogl產(chǎn)生一個(gè)“打開”
話框,可以執(zhí)行下列語句:
CommonDialogl.Action=l^^|
或CommonDialogl.ShowOpen*
(3)DialogTitle屬性:該屬性用于設(shè)置對(duì)話框的標(biāo)題
(4)ConcelEiror屬性:該屬性表示用戶在使用對(duì)話框進(jìn)行對(duì)話
時(shí),單擊“取消”按鈕是否產(chǎn)生錯(cuò)誤信息
(5)通用對(duì)話框的方法
4.“打開”對(duì)話框
在程序中將通用對(duì)話框的Action屬性設(shè)置為1,或用
ShowOpen方法打開,則彈出“打開文件”對(duì)話框
“打開”對(duì)話框的屬性:
FileName>FileTitle>Filter>Filterindex>IniDir
■¥
¥求
例10.16建立一個(gè)“打開文件”的對(duì)話框
在窗體上添加一個(gè)通用對(duì)話框和一個(gè)“打開”命令按鈕,
當(dāng)單擊“打開”按鈕時(shí),就會(huì)彈出一個(gè)“打開文件”的對(duì)話
框
?.*'i.J
打開?"IBOiI
」■■■
|打開文件EIE3
搜尋(X):卜今我的文檔3國(guó)囪宣面國(guó)
]Izrweb
1WvDownloads口
KIMvPictures
2jMyWebs勒
^1mvdir回'
文件名?:打開9|
文件類型(X)取消
⑴把CommonDialog控件添加到工具箱中。然后在窗體上添
加CommonDialog控件,其默認(rèn)名稱為CommonDialoglH
(2)在窗體上添加一個(gè)命令按鈕CommandL其Caption屬性為
(3)“打開”命令按鈕Commandl的
PrivateSubCommandl_Click()
CommonDialog1.DialogTitle=”打開文件“'設(shè)置文件過濾器
CommonDialogl.Filter="全部文件文本文件
CommonDialog1.InitDir=nC:\mydocuments”,設(shè)置默認(rèn)文件夾
CommonDialogl.ShowOpen,顯示“打開”對(duì)話框
EndSub
其中,設(shè)置文件過濾器(Filter)屬性的參數(shù)格式如下:
描述符1I過濾符1I描述符2I過濾符
程序運(yùn)行后,單擊“打開”按鈕即彈出如圖所示的對(duì)話框
從控件的FileName屬性中獲取選定的路徑及文件名
5■■■??
6.“顏色”對(duì)話框
7.“字體”對(duì)話框
例10.17“字體”對(duì)話框應(yīng)用示例
在文本框中輸入一段文字,單擊命令按鈕后,通
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- A證(企業(yè)負(fù)責(zé)人)-安全員A證(企業(yè)負(fù)責(zé)人考前練習(xí))
- 廣東省中山市2024年九年級(jí)中考三模數(shù)學(xué)試卷附答案
- 電力系統(tǒng)節(jié)能減排實(shí)施方案
- 高一化學(xué)二第三章第一節(jié)最簡(jiǎn)單的有機(jī)化合物-甲烷教學(xué)設(shè)計(jì)
- 2024高中地理第3章地理信息技術(shù)應(yīng)用第3節(jié)全球定位系統(tǒng)及其應(yīng)用學(xué)案湘教版必修3
- 2024高中語文第一單元以意逆志知人論世蜀相訓(xùn)練含解析新人教版選修中國(guó)古代詩(shī)歌散文欣賞
- 2024高中語文第四單元?jiǎng)?chuàng)造形象詩(shī)文有別第21課自主賞析項(xiàng)羽之死課時(shí)作業(yè)含解析新人教版選修中國(guó)古代詩(shī)歌散文欣賞
- 2024高考化學(xué)一輪復(fù)習(xí)專練5化學(xué)與STSE含解析新人教版
- 2024高考化學(xué)一輪復(fù)習(xí)第一部分考點(diǎn)41烴的含氧衍生物強(qiáng)化訓(xùn)練含解析
- 2024高考化學(xué)一輪復(fù)習(xí)課練3物質(zhì)的組成性質(zhì)分類和化學(xué)用語含解析
- 螺桿壓縮機(jī)安裝施工方案
- 個(gè)體診所醫(yī)生述職報(bào)告3篇
- 2024年事業(yè)單位招聘考試公共基礎(chǔ)知識(shí)試題庫(kù)及答案(共316題)
- 杭州宋韻文化課程設(shè)計(jì)
- 營(yíng)銷課件教學(xué)課件
- 2024時(shí)事政治考試100題及參考答案
- (賽斯資料)健康之道(全本)
- 汽車常識(shí)課件教學(xué)課件
- GB/T 5267.5-2024緊固件表面處理第5部分:熱擴(kuò)散滲鋅層
- 裝配式疊合板安裝施工方案
- 【學(xué)易金卷】2023-2024學(xué)年四年級(jí)數(shù)學(xué)上冊(cè)期末全真模擬提高卷(三)(A4版)(北師大版)
評(píng)論
0/150
提交評(píng)論