其他常用的語句及控件_第1頁
其他常用的語句及控件_第2頁
其他常用的語句及控件_第3頁
其他常用的語句及控件_第4頁
其他常用的語句及控件_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論