VB教材共十六章課件_第1頁
VB教材共十六章課件_第2頁
VB教材共十六章課件_第3頁
VB教材共十六章課件_第4頁
VB教材共十六章課件_第5頁
已閱讀5頁,還剩134頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章VisualBasic介紹

第二章用戶界面設(shè)計

第三章編程的基礎(chǔ)(含變量,常量,條件語句,循環(huán)語句,自定義變量,自定義過程,對象和類等基礎(chǔ))

第四章Windows95的新控件VisualBasic的輸入輸出

第五章VisualBasic的鼠標(biāo)事件和繪圖

第六章VisualBasic的數(shù)據(jù)庫、報表、預(yù)覽、打印

第七章從文件中存取資料

第八章發(fā)行應(yīng)用程序

第九章使用WindowsAPI和用VisualBasic建立自己的屏幕保護程序

第十章創(chuàng)建ActiveX控件

第^—章ActiveX文檔

第十二章用對象鏈接與嵌入(OLE)擴展VisualBasic

第十三章使用資源文件

第十四章用VisualBasic建立ActiveXDLL

第十五章用Winsock控件進行Internet通信

第十六章Web瀏覽控件

第一章VisualBasic介紹

§2窗體和命令鈕介紹

一、窗體

窗體是Windows的基本組成部分,這也是為什么這個操作系統(tǒng)叫Windows的原因。它的主要屬性除上面介紹的以

外,還包括:

1,Appearance屬性

這個屬性用來決定控件是否采用三維效果。

2,BorderStyle屬性

這個屬性決定了窗體的邊框形式,共有6種屬性值。改變窗體的BordrStyle屬性后,窗體在屏幕上沒有變化,它

只在運行時才變?yōu)槟闼蟮臉幼印?/p>

3,ControlBox屬性

程序員用來決定是否采用控制框的屬性,僅在程序運行時才有效。

4,Font屬性

程序員可以改變該窗體上顯示信息的字體,它控制著直接在窗體上打印的文本顯示。

5,Icon屬性

這個屬性是用戶經(jīng)常要使用的一種屬性。當(dāng)用戶的應(yīng)用程序在工具條上最小化或在Windows桌面上變?yōu)橐粋€獨立

應(yīng)用程序時,該屬性決定將采用何種圖標(biāo),窗體控制框里的圖標(biāo)也由它決定。為自己的窗體設(shè)置該屬性時,要控制住

自己挑三揀四的沖動。

6,Visible屬性

該屬性決定窗體是否可見。錯誤地改變其值是很危險的,窗體會從眼前消失,這種莫名其妙的事情會使用戶驚惶

失措,所以肩負重任的程序員一定要慎重喲!

7,WindowState屬性

指定窗體在運行時的三種狀態(tài):正常、最小化、最大化。

二、窗體的主要事件

1,Load事件

這個事件發(fā)生在窗體被裝入內(nèi)存時,且發(fā)生在窗體出現(xiàn)在屏幕之前。窗體出現(xiàn)之前,VisualBasic會看一看Load

事件里有沒有代碼,如果有,那么它先執(zhí)行這些代碼,再讓窗體出現(xiàn)在屏幕上。

2,Click事件,Dblclick事件

這兩個事件在單擊或雙擊窗體時發(fā)生。不過你單擊窗體里的控件時,窗體的Click事件并不會發(fā)生,VisualBasic

會去看控件的Click事件里有沒有代碼。

3,Activate(活動事件)與Deactivate(非活動事件)

顯示多個窗體時,可以從一個窗體切換到另一個窗體。每次激活一個窗體時,發(fā)生Activate事件,而前一個窗體

發(fā)生Deactivate事件。

三、窗體控制

1,裝入或卸出窗體

要裝入或卸出窗體,用Load或Unload語句。Load語句的語法如下:

LoadformName

而UnLoad語句的語法是:

UnLoadformName

FormName變量是要裝入或卸出的窗體名。Load語句只是把窗體裝入內(nèi)存,并不顯示出來,要顯示窗體可以

使用窗體的Show方法。

2,顯示或隱藏窗體

要顯示窗體,用Show方法。若尚未裝入內(nèi)存則先裝入再顯示。它的語法如下:

formName.showmode

FormName變量是窗體名,可選變元mode為0(缺省值)時窗體為非模態(tài),為1時窗體為模態(tài)。模態(tài)窗體完全占

有應(yīng)用程序控制權(quán),不允許切換到別的應(yīng)用程序,除非關(guān)閉!而非模態(tài)窗體則反之。

同理,隱藏窗體用formName.hideo

四、命令鈕

命令鈕有兩類:一類是簡單的命令鈕,一類是圖形鈕.圖形鈕常常成組地出現(xiàn)在屏幕的頂端,成為一些程序炫耀

自己貼近用戶的標(biāo)志。圖形鈕充分利用了圖形用戶界面的特征,而且比命令鈕小,但它的缺點是用戶必須知道圖形鈕

是什么意思,而且沒有鼠標(biāo)的用戶恐怕用不了圖形鈕。命令鈕也有Appearance、(Option、Font、Left、Visible之類的

屬性。命令鈕的最主要事件就是Click事件,它還有MouseDown和MouseUp等事件

§3建立菜單

一般Windows的菜單條包含F(xiàn)ile,Edit,Window和Help菜單標(biāo)題。其它的菜單,程序員應(yīng)將它們插在Edit和

Window菜單之間。在VisualBasic里,為了創(chuàng)建菜單,必須打開菜單編輯窗口。可以按下Ctrl+E鍵,也可以從Tools

菜單中選擇MenuEditor項,或者單擊VisualBasic主窗口的從左邊數(shù)第六個圖形鈕。

一、給菜單命名

菜單標(biāo)題和菜單命令也有Caption和Name屬性,你設(shè)置了這兩個屬性就等于創(chuàng)建了菜單。于控件一樣Caption是

屏幕上可見的,而Name則是一個抽象名稱。別忘了在Caption里加入“&”以幫助沒有鼠標(biāo)的用戶。

二、增加和刪除菜單

在MenuEditor中部有三個命令鈕分別是Next,Insert,DeleteJnsert可用來增加新的菜單。在這三個鍵下面的Caption

列表框里選中菜單項(這時它的底色就變成深藍色),單擊Insert鍵,VisualBasic將上一個增亮菜單下推并增亮一空

行,你就可以輸入新菜單名和標(biāo)題了。Delete鍵可用來刪掉菜單。你選中要刪掉的菜單,單擊Delete鍵就可以刪掉它

了。

三、移動菜單標(biāo)題

有四種情況,向上移動,向下移動,向左縮排,向右縮排,這就是MenuEditor中間上下左右箭頭的功能。選中某

一菜單標(biāo)題,安上下箭頭,則這個菜單將上下移動到你喜歡的位置上,這也決定了它在界面中的位置。如果你按左右

箭頭,情況則有所不同。由于菜單是分級的,所以,如果它沒有縮排,則它是一個菜單標(biāo)題;如果它縮排一次,那么

它將變成一個菜單命令:如果縮排兩次,那么它將成為一個子菜單命令。VisualBasic里你可以總共設(shè)計四層子菜單。

四、設(shè)置分離條

分離條是指在菜單中將命令分組的線。

奇怪的是,VisualBasic將分離條也看成一個菜單項,它也需要C叩tion和Name屬性,而且它也有其它屬性,分

離條與菜單項的區(qū)別是分離條的Caption屬性必須是連字號即減號。也就是,當(dāng)你設(shè)置了一個Caption屬性為的

菜單項時,實際上你就設(shè)置了一個分離條,分離條的名字可以是barFilel之類,以表明分離條的位置。

身無標(biāo)題一記事本

文件9稿輯②搜索⑤)幫助國)

新建?

打開(Q)...

保存(S)

另存為⑥…

—分離條

頁面設(shè)置9...

一分離條

退出意)

五、菜單的各種簡單屬性

在MenuEditor里有許多確認(rèn)框和一些正文框及一個下拉式的列表框,這些東西決定了菜單的各種屬性。

1,Checked屬性

這個屬性值設(shè)置為真,將在菜單命令左邊產(chǎn)生一個打勾的確認(rèn)標(biāo)志,你可以看看FileManager里的View菜單就可

以了解什么是確認(rèn)標(biāo)志了。

2,Enabled屬性

各種各樣的用戶會產(chǎn)生千奇百怪的操作,在許多Edit菜單里都會有不同形式的讓菜單命令模糊的情況。Enabled

屬性就是用來做這件事的。Enabled屬性為真,則菜單命令是清晰的,Enabled屬性為假,則菜單命令是模糊的,這時

用戶就不能選中這個菜單項了。

3,Visible屬性

用戶看見一個模糊的菜單而不能選的時候,有時會非常生氣。所以,如果用戶看不見這個菜單命令時,他也就不

會發(fā)無名之火了。如果把Visible屬性設(shè)為假,則菜單根本不會出現(xiàn)在屏幕上。這樣做比把Enabled屬性設(shè)為假顯得更

加干脆!

4,Index屬性

可以生成菜單命令數(shù)組,用索引號區(qū)分開。例如向File菜單中添加一系列最近打開的文件名。添加菜單可用Load

方法。

以上屬性可以在運行時設(shè)置,形成動態(tài)的菜單的情況.

例如:

mnuUndo.Enabled=False

mnuProperty.Visible=False

你還可以改變Caption等屬性。

mnuUndo.Caption="Redo”

在對窗體,命令鈕和菜單有所了解后,工具箱里的其它控件就更加容易理解了。下面這些控件的熟練運用,將使

你做出漂亮的界面。

六、生成彈出式菜單(或浮動菜單)

幾乎每個Windows應(yīng)用程序都提供彈出式菜單,用戶可以右鍵單擊窗體或控件取得這個菜單。彈出式菜單也屬于

普通菜單,只是不固定在窗體上,而是可以在任何地方顯示。

彈出式菜單用P陰upMenu方法調(diào)用。假設(shè)我們已經(jīng)用MenuEditor生成了名為mnuedit的菜單,則可以在MouseUp

事件加入如下代碼:

IfButton=2ThenPopupMenumnuedit

下面將用一個實例展示動態(tài)菜單和彈出式菜單。

左圖表單顯示了一個彈出式菜單,在表單的空白處右擊鼠標(biāo)就可得到。左圖表單顯示了一個動態(tài)菜單,單擊Add

runtimeoption鈕一下就會使菜單RuntimeMenu增加一項,而單擊Removeruntimeoption鈕一下就會使菜單Runtime

Menu減少一項。其源代碼如下:

Dimrtmenu

PrivateSubcmdadd_Click()

rtmenu=rtmenu+1

Ifrtmenu=1Thenmnuoption(0).Caption=''RuntimeOption1'

Loadmnuoption(rtmenu)

mnuoption(rtmenu).Caption=''option#"&rtmenu

EndSub

PrivateSubcmdremove_Click()

Ifrtmenu=0Then

MsgBox"menuisempty1'

ExitSub

EndIf

Unloadmnuoption(rtmenu)

rtmenu=rtmenu-1

EndSub

PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

IfButton=2ThenPopupMenumnuedit

EndSub

§4框架,確認(rèn)框和選項鈕

一、確認(rèn)框和選項鈕就好比多項選擇和單項選擇,在考試時選擇題總比簡答題要好做,因為你可以用瞎蒙的策略。

用戶界面設(shè)計的保持簡單的原則使確認(rèn)框和選項鈕成為有用的框件。確認(rèn)框和選項鈕用于向程序輸入信息。確認(rèn)框選

中時會在小方框里打一個鉤,菜單設(shè)計窗口里就有這種確認(rèn)框的例子。

選項鈕選中時會在小圓圈里點一個點。它們的主要屬性除了Name,Caption等,還有:

1,Value屬性

決定它們是否被選中的屬性。

2,Alignment屬性

決定它們的對齊方式。

二、有兩道選擇題或更多時,我們就必須對它們進行分組。這種分組需要借助框架控件。分組的方法是:

1,在工具箱里單擊Frame控件;

2,在窗體里拖曳鼠標(biāo)畫出框架;

3,在工具箱里單擊確認(rèn)框或選項鈕控件;

4,在框架里畫確認(rèn)框或選項鈕;

5,把所需的確認(rèn)框或選項鈕都畫好。

§5正文框和標(biāo)簽

正文框通常用于向計算機輸入信息,而標(biāo)簽通常用于輸出信息。正文框是一個十分重要的控件,因為由確認(rèn)框和

選項鈕向程序輸入的信息畢竟只有少數(shù)的幾條信息而已。標(biāo)簽和正文框的區(qū)別很小,標(biāo)簽可以看成是一個在運行時不

能修改正文的正文框。因此標(biāo)簽主要用于輸出信息。標(biāo)簽是生活中不可缺少的部分,比如教室里的“團結(jié),勤奮,嚴(yán)

謹(jǐn),活潑”就是一個每天不得不面對的標(biāo)簽。

1,BorderStyle屬性

決定了正文框和標(biāo)簽的邊框形式。

2,正文框的Text屬性和標(biāo)簽的Caption屬性

這兩個屬性其實是一樣的,它決定了用戶在屏幕上看到的東西,只不過正文框的Text屬性在運行時可以直接在正

文框里修改。

3,Alignment屬性

這個屬性決定正文或標(biāo)題的排列方式。

4,正文框的Multiline屬性

如果正文框里的字太多了,超過了正文框的寬度,那么計算機就在某個我們不知道的地方顯示這行字,所以我們

要設(shè)置Multiline屬性為True,這樣正文框就有了字換行的能力。

5,正文框的PasswordChar屬性

如果用戶從事的是一種掌握大量金錢或機密的工作的話,那么他就需要對自己的工作遮遮掩掩,在VisualBasic里

你可以作一個口令正文框來實現(xiàn)這種遮掩。方法是:

(1)選中作為口令正文框的正文框。(它的周圍出現(xiàn)八個小方塊)

(2)按F4鍵打開屬性窗口。

(3)設(shè)置Multiline屬性為False?

(4)設(shè)置PasswordChar為用于掩蓋的字符。(只能是一個字符,比如*號)

第三步使口令正文框只有一行,因為Multiline屬性為True將使Password屬性失效。VisualBasic認(rèn)為口令不必太

長,因為太長的口令更加容易忘記。

6,正文框的Maxlength屬性

為了防止一些古怪用戶輸入太多的廢話,程序員有限制正文框正文長度的權(quán)力,這就是Maxlength屬性。如果

Maxlength屬性設(shè)置為零,那么正文框就只受計算機內(nèi)存的限制了。

7,Label的AutoSize屬性和Wordwrap屬性

這兩個屬性在一起搭配使用總是讓人混淆,以至于VisualBasic附帶的示例程序里有一個程序里有這兩個屬性的例

子,它的路徑通常是c:\vb\samples\controls\control.vbpo在VisualBasic里運行這個例子,選擇Options菜單的Wordwrap

andAutoSize?AutoSize屬性使標(biāo)簽自動地擴大縮小以適應(yīng)標(biāo)簽的Caption屬性,但是它只會水平伸展。Wordwrap屬

性使標(biāo)簽具有字換行處理的能力。

為了使標(biāo)簽具有垂直伸展和字換行處理,必須設(shè)置它的AutoSize屬性和Wordwrap屬性同時為True,

AutoSize屬性為False,Wordwrap屬性為False時,若標(biāo)簽不夠高而Caption太長時,Caption將被切割掉。

AutoSize屬性為False,Wordwrap屬性為True時,情況同上。

AutoSize屬性為True,Wordwrap屬性為False時,表示可以水平伸展,但只顯示一行信息。

Locked屬性

程序員可以阻止用戶改變文本框的內(nèi)容,用戶只可以看文本而不能改變它。這是VisualBasic4.0的新功能。

§6圖形框(PictureBox)和圖象框(ImageBox)

PictureBox和ImageBox是用來把圖形放入程序里的。PictureBox和ImageBox可以顯示幾種不同格式的圖形。

Bitmap文件(.BMP或.DIB)、Icon文件(.ICO或.CUR)、Metafile圖元文件(.WMF)、增強型圖元文件(.EMF)、JEPG(.JPG)

及GIF(.GIF)文件。在VisualBasic里Microsoft大概送給了我們幾百個上述前三類文件,它們的路徑通常是:

c:\vb\bitmapsc:\vb\icons>c:\vb\metafile。它們的主要屬性有:

1,設(shè)置PictureBox和ImageBox的Picture屬性

(1)單擊PictureBox或ImageBox。

(2)按F4鍵打開屬性窗口。

(3)單擊Picture屬性。

(4)單擊設(shè)置框右邊的省略號,VisualBasic將顯示LoadPicture對話框。

(5)選擇用戶需要的文件,單擊0k鍵。

則VisualBasic將圖形裝入PictureBox或ImageBox。如果想在程序運行期間裝入或刪除圖形,就需要用程序代碼

來實現(xiàn)了。我們可以使用LoadPicture函數(shù)。例:

裝入圖形

imgMyHand.Picture=LoadPicture("c:\graphics\hand.bmp")

刪除圖形

imgMyHand.Picture=LoadPicture(u)

2,PictureBox和ImageBox的BorderStyle屬性

如同正文框和標(biāo)簽-一樣,你可以設(shè)計PictureBox和ImageBox的邊框。

3,Stretch屬性和AutoSize屬性

ImageBox只有Stretch屬性,而PictureBox只有AutoSize屬性。

AuloSize屬性設(shè)為True,則PictureBox改變自己的大小來適應(yīng)其中的圖形。

Stretch屬性設(shè)為True,則ImageBox中的圖形將改變自己的大小來適應(yīng)外面的邊框。

§7Line和Shape控件

總有一些除了裝飾作用沒有別的功能的東西。如Line和Shape控件。

1,Line和Shape的BorderColor屬性

一般來說邊界顏色是黑的,但你也可顯示你喜愛的顏色。在屬性窗口里單擊BorderColor屬性,再單擊省略號,

VisualBasic將顯示一塊調(diào)色板,在調(diào)色板里選擇你喜愛的顏色。

2,Line和Shape的BorderWidth屬性

這個屬性決定線的粗細。

3,Line和Shape的BorderStyle屬性

這個屬性決定線的輪廓。

4,Shape的FillStyle屬性

在形狀中我們可能更加喜歡實心的樣子,這也可以做到。

我們己經(jīng)了解了窗體,菜單,及十種不同的控件,這正是Windows的基本元素,再加上它們的各種屬性,就可以

畫出各式各樣的用戶界面了!

§6&§7總、結(jié):Image、Shape和Line控件有時被稱作輕量圖形控件。它們需要較少的系統(tǒng)資源,因此比

PictureBox控件顯示得快并且包含PictureBox中可用的屬性、方法和事件的子集。每一個控件都適用于一個特定的

目的。

1、其它控件的容器:PictureBox2>Printing或graphics方法:PictureBox3、顯示圖片Image或PictureBox4、

控件顯示簡單圖形元素:Shape或Line控件

第三章編程的基礎(chǔ)

在我們設(shè)計完用戶界面后,我們就將開始了編寫指令代碼的過程。這是一個相對枯燥但卻是必須的過程。

§1VisualBasic編程概述

一、事件驅(qū)動應(yīng)用程序

簡單地說就是當(dāng)事件發(fā)生時程序才工作,否則程序?qū)⒌却录陌l(fā)生。在事件驅(qū)動程序中,用戶的操作或系統(tǒng)事

件執(zhí)行一個事件過程,這樣,程序執(zhí)行的順序就由哪一個事件的發(fā)生決定,由用戶的操作決定。就是用戶管理,代碼

響應(yīng)。

二、事件過程

用戶界面對事件響應(yīng)的三個部分是:

1,窗體

2,控件

3,菜單

編寫程序代碼的通常過程是:

I,確定哪一個對象(窗體,控件或菜單)做出反應(yīng)一一單擊此對象選中它;

2,打開代碼窗口一一簡單的方法是按F7鍵或者雙擊對象;

3,找到響應(yīng)的事件;

E工程1-Forml(Code)

▼||LoadZl

PrivateSubForm_Load0

EndSub

代碼窗口的Object列表框可以選擇對象,旁邊的Proc列表框可以選擇對象的事件。如果事件已經(jīng)有了代碼的話,

那么在Proc列表框里這個事件名用黑體顯示??盏氖录a都由兩行組成,如:

PrivateSubForm_Load()

I

EndSub

4,編寫程序代碼。

三、變量

程序總是要做三件事:

L得到數(shù)據(jù);

2,處理數(shù)據(jù);

3,輸出數(shù)據(jù)。

在程序運行時、這些數(shù)據(jù)被儲存在變量里,變量可理解為計算機內(nèi)存條上的一個微觀的東西。一旦關(guān)機,變量就

消失了。變量在VisualBasic里有兩種類型:

1,程序員建立的變量;

2,對象的屬性往往也看成變量。

變量必須滿足:

I,字母開頭;

2,不超過40個字;

3,只包括字母,數(shù)字,下劃線;

4,不是保留字。

創(chuàng)建變量的方法:

1,用Dim語句說明它;

2,可以省略聲明語句而用變量聲明字符生成確定類型的變量。在程序執(zhí)行時若要生成變量并指定數(shù)據(jù)類型,可加

入下表所示的變量聲明字符后綴。

符號數(shù)據(jù)類型舉例

$StringA$,messageText$

%IntegerCounter%,var%

&LongPopulation&,colorValue%

!SingleDistance!

#DoubleExactDistance#

3,把一個值賦給一個名稱,VisualBasic就把這個名稱看成變量。

Dini語句的語法是:

DimVariableNameAsType

例如:DimMyName

AsType部分可以省略,它涉及到我們將要講的關(guān)于數(shù)據(jù)類型的問題。Dim語句的作用是聲明變量并分配存儲空

間。

賦值,語句的語法是:VariableName=Value或VariableName1=VariableName2

與數(shù)學(xué)中的等號意義不同,這里等號只表示把后者的值賦給前者,所以,A=A+1在VisualBasic里是合法

的。例如:cmdExit.Caption="Exit"(這是一個改變對象屬性的例子)

四、數(shù)據(jù)類型

變量可以存放數(shù)字或字符串等東西,但是MyName變量并不需要存放數(shù)字,所以你可以限制存放的數(shù)據(jù)類型。你

可以規(guī)定MyName只能字符串。VisualBasic提供了七種數(shù)據(jù)類型:

I,整型(Integer)

2字節(jié)整數(shù),標(biāo)識符(同上面的變量聲明字符)為百分號(%),范圍從-32768到32767,運算很快。

2,長整型(Long)

4字節(jié)整數(shù),標(biāo)識符為&,范圍從-2147483648到2147483647,運算很快。

3,單精度型(Single)

4字節(jié)浮點數(shù),標(biāo)識符為!,范圍可達38位數(shù)字,前7位可靠,運算比整型和長整型慢。

4,雙精度型(Double)

8字節(jié)浮點數(shù),標(biāo)識符為#,范圍可達300多位,但是可靠的只有前16位數(shù)字。

5,字符串型(String)

標(biāo)識符為$,在32位版本的VisualBasic4.0中,字符串可容納高達200兆字節(jié)的內(nèi)容。

6,貨幣型(Currency)

8字節(jié)定點數(shù),標(biāo)識符為@,小數(shù)點右邊4位,左邊15位。

7,日期型(Date)

用于存放日期,范圍從#January1,100#到#December31,9999#,日期的格式取決于系統(tǒng)的設(shè)定,賦值方法是:New

=#January1,2000#。

8,字節(jié)型(Byte)

VisualBasic4.0新增加的數(shù)據(jù)類型,用于存放0到255的整數(shù)。

9,布爾型(Boolean)

只有True或Fake兩個值。

10,變體型(Variant)

如果你不告訴VisualBasic你的變量是什么類型,VisualBasic就自動把它看成變體型。變體型的意思就是它沒有

類型,或者是任何類型。如果聲明了Variant變量而未賦值,則其值為Empty。

例如:DimMyNameAsString

事實上,語句DimMyName只是將MyName變量聲明為變體類型罷了,因為變體類型是VisualBasic的缺省類型。

但是,我們使用數(shù)據(jù)類型的原因是什么呢?

I,使用最小的數(shù)據(jù)類型可節(jié)省內(nèi)存;

2,程序員可以容易地找出每一變量所存放的數(shù)據(jù)類型;

3,可以防止數(shù)據(jù)類型存放錯誤引起的錯誤。

例如:

PrivateSubForm_Load()

DimMyNameAsString

MyName="DongShan”

EndSub

變換變量類型

有時需要將一種變量類型變成另一種變量類型,下表列出了進行變量類型轉(zhuǎn)換的函數(shù):

函數(shù)說明函數(shù)說明

Cbool將變元變成布爾值CLng將變元變成長整型值

Cbyte將變元變成字節(jié)值CSng將變元變成單精度值

CCur將變元變成貨幣型值CStr將變元變成字符串值

CDate將變元變成日期值Cvar將變元變成變體值

CDbl將變元變成雙精度值CVErr將變元變成錯誤值

CInt將變元變成整型值

Val:將變量轉(zhuǎn)成數(shù)值型,從左至右轉(zhuǎn),直到遇到第一個非數(shù)字為止。

Str:將變量轉(zhuǎn)成字符型,會在最前保留一符號位,正號時前為空格。

Format:將按格式返回字符。StrConv:轉(zhuǎn)換字符編碼

例如要將如下的初始化變量:

DimAAsInteger

變成雙精度值,可用下列函數(shù):

B=CDbl(A)

用戶自定義的數(shù)據(jù)類型……記錄

保存多個相同或不同類型數(shù)值的結(jié)構(gòu)稱為記錄(record)。

itVISUALBASIC中定義記錄,用Type語句,其語法如下:

TypevarType

Variable1AsvarType

Variable2AsvarType

VariablenAsvarType

EndType

例如定義一個名為CheckRecord的記錄:

TypeCheckRecord

CheckNumberasInteger

CheckDateasDate

CheckAmountasSingle

EndType

CheckRecord結(jié)構(gòu)可以像普通變量類型一樣使用。要定義這個類型的變量,使用如下語句:

DimcheckIAsCheckRecord

要對結(jié)構(gòu)的各個字段訪問,可使用如下語句:

check1.CheckNumber=123

check1.CheckDate=#08/l4/1996#

check1.CheckAmount=240.00

強制的變量聲明

VisualBasic并不要求變量聲明,但對于編寫大型應(yīng)用程序時,變量聲明的確很有好處。

因此VisualBasic提供強制聲明的方法,只要在窗體或模塊的聲明部分加上一條語句:

OptionExplicit

這個語句使編譯器檢查每個變量的聲明,如果要用的變量沒有聲明,則發(fā)出一個錯誤消息!

數(shù)組

單個變量只能存放單個實體,而數(shù)組可以存放一組相關(guān)的數(shù)據(jù)。像變量一樣,數(shù)組有名稱,存放在數(shù)組中的數(shù)值

通過一個索引來訪問。

數(shù)組的定義必須用Dim語句聲明,如下:

DimNames(9)AsString'也可以不指定數(shù)據(jù)類型

Names是保存了10個元素的數(shù)組,Names(O)是第一個元素,Names(9)是最后一個元素。數(shù)組元素的賦值如下:

Names(0)="John"

Names(1)="Tom"

Names(9)="Xionghui"

數(shù)組的第一個元素的索引可以不是0,可以在Dim語句中指定下限:

DimNames(lTo16)

DimNames(5To16)

動態(tài)數(shù)組

有時可能不知道需要多大的數(shù)組,這時可以生成動態(tài)數(shù)組,其長度可以在運行程序時改變。定義動態(tài)數(shù)組,和

平常一樣用Dim語句(或Private和Public),但不要指定長度(或維數(shù)):

DimDynArrayO

后面等能確定維數(shù)的時候,再用ReDim語句重新確定實際長度(或維數(shù)):

ReDimDynArray(UserCount)

ReDim語句只能出現(xiàn)在過程之中,它是可執(zhí)行語句。

但每次執(zhí)行ReDim語句,數(shù)組中原先存放的所有當(dāng)前值會消失。但有時可能想改變數(shù)組的長度,而不損失

原有的數(shù)據(jù),幸好VisualBasic提供了Preserve關(guān)鍵字,它就能作到!例如下面語句將數(shù)組加大一個元素而不改

變原有數(shù)據(jù):

ReDimPreserveDynArray(Ubound(DynArray)+1)

由于ubound。函數(shù)只能返回靜態(tài)數(shù)組或己經(jīng)重定義上限的數(shù)組上標(biāo),否則將出錯。所以我們常使用:

Dimarr()

Redimarr(O)

Redimpreservearr(ubound(arr)+l)

這樣ubound。取得的上標(biāo)即數(shù)組成員數(shù),實際上是將arr(O)閑置,將有效的數(shù)組數(shù)據(jù)寫入arr(l)之后的成員中。

清除數(shù)組

Erasearraylist,參數(shù)為數(shù)組列表,格式為array1,array2…,該語句清空并釋放數(shù)組,一般用于動態(tài)數(shù)組。

五、變量的使用范圍

VisualBasic的變量有三種使用范圍。

1,局部變量;

2,模塊級變量,也可以叫做窗體級變量,因為窗體和模塊是同級的:

3,全局變量。Public

局部變量只存在于說明它的過程里,為說明一個局部變量,應(yīng)在一個事件過程中說明。

模塊級變量可存在于這個窗體或模塊中,可以被所有窗體內(nèi)的事件過程所引用和改變,說明模塊級變量的方法是:

1,按F7鍵打開代碼窗口;

2,在Object列表框中選擇(general);

3,在Proc列表框里選擇(declarations);

4,用Dim語句說明。

全局變量從程序開始時存在至程序結(jié)束,不過全局變量的錯誤也許會導(dǎo)致致命的錯誤,你不得不讀遍程序來尋找

到底在說明地方改變了全局變量。創(chuàng)建全局變量的方法是:

1,從Insert菜單里選Module項,這個命令為一個BAS模塊文件顯示代碼窗口;

2,在Object列表框中選擇(general);

3,在Proc列表框中選擇(declarations);

4,用Public語句說明全局變量。

六、算術(shù),邏輯,比較運算符

1,算術(shù)運算

盡管一臺上萬元的計算機看來很高科技,但它在算術(shù)運算方面并不比一個幾十元的計算器強多少。

運算符運算運算符運算

+加(也是字符串拼接)\整數(shù)除

-減(也是取負值)Mod取余數(shù)

*乘A乘方

/浮點數(shù)除&字符串拼接

2,邏輯運算

邏輯運算是對True和False進行操作的運算。VisualBasic將True的值看成-1,將False的值看成0。

運算符使用意義

And變量1And變量2兩個量均為True,才返回True

Or變量1Ch■變量2只要有一個量為T「優(yōu),返回值就為True

Xor變量IXor變量2兩個量一個為True,一個為False才返回True

Not變量1Not變量2簡單地把True變?yōu)镕alse,把False變?yōu)門rue

3,比較運算

比較運算是比較兩個數(shù)或字符串的大小。

運算符意義運算符意義

<小于>=大于等于

<=小于等于=等于

>大于<>不等于

說明:變體型變量必須使用VarType(Var)判斷其是否為空,如返回1則為空。

有時候,復(fù)雜的運算會把我們搞暈,良好的習(xí)慣是加括號。如:x=(5*(8+9)J2,則計算機先處理(8+9),

再處理(5*(8+9)),最后才是乘方。再如:x=(5*6)/2,這個括號加得似乎沒什么意義,但它使我們清晰地知道

是從哪兒開始運算的。

七、字符串操作

有時程序需要對字符串進行操作,比如從一個文件的完整路徑名中找出文件的名稱。下面介紹幾個常用的函數(shù)。

I,Len函數(shù)

返回字符串的長度。如Length=Len("string"),則Length=6。

2,LCase函數(shù),UCase函數(shù)

LCase函數(shù)把字符串變?yōu)樾懽帜?。UCase函數(shù)把字符串變?yōu)榇髮懽帜浮H纾?/p>

x=LCase("DONGSHAN")

x=UCase(''visualBasic")

3,Left函數(shù),Right函數(shù)

語法是:

Left(VariableName,N)

Right(VariableName,N)

Left函數(shù)從字符串的左邊提出N個字符。Right函數(shù)從字符串的右邊提出N個字符。

4,Mid函數(shù)

語法是:

x=Mid(VariableName,n,m)

Mid函數(shù)從VariableName字符串的第n個字符開始取出m個字符。

5,Instr函數(shù)

語法是:

Instr(VariableName1,VariableName?)

Instr函數(shù)從VariableName1里找出VariableName2的位置。如:x=Instr("ABCD","CD"),此時x=3。如果計算

機沒找到要找的字符串,則這個函數(shù)返回0。

6,LTrim函數(shù),RTrim函數(shù),Trim函數(shù)

LTrim函數(shù)將去掉字符串前的空格。

RTrim函數(shù)將去掉字符串后的空格。

Trim函數(shù)將去掉字符串前后的空格。如:x=RTrim("John"),此時x="John”。

7,Vai函數(shù)

語法是:

x=Vai(VariableName)

這個函數(shù)將字符串里的數(shù)字字符串轉(zhuǎn)化為數(shù)字。如:Y=Vai(“123”),則Y=123。

當(dāng)VisualBasic發(fā)現(xiàn)下一個字符不是數(shù)字時就停止繼續(xù)轉(zhuǎn)化。

8,Str函數(shù)

與Vai函數(shù)相反,Str函數(shù)將數(shù)字轉(zhuǎn)化為字符串。

語法是:

x=Str(VariableName)

八、常量及注釋

1,使用常量

如果我們編一個程序從每筆收入中拿出40%用于飯卡的消耗,則在程序中我們會總是用到0.4這個數(shù)字。這時糧

食漲價了,我們不得不把0.4全都改成0.5,這就顯得非常麻煩。我們本可以定義并使用一個常量為0.4,在漲價時把

它小小調(diào)整一下就可以了。常量命名的要求與變量一樣。常量的使用范圍也與變量一樣,分為:局部常量(在過程里

用Const說明)、模塊級常量(在窗體,模塊的聲明區(qū)用Const說明)、全局常量(在模塊的聲明區(qū)用PublicConst

說明)

2,使用注釋

用注釋。如:4ThisSubisusedtogetWindowsversion

撇號右邊的東西VisualBasic通常用綠色的字來顯示,而且VisualBasic將忽略注釋的東西。在VisualBasic4.0所

附的示例程序里使用了大量的注釋,這樣使其他人(也包括自己)能更好地讀懂程序,所以使用注釋是一個好習(xí)慣。

注釋的忽略性也有一些小用處,如:

x=(3.5A2-4)*(5+6.73*7\2)-10.89

現(xiàn)在你需要測試這一語句是否是必要的,于是你把它刪除,再運行看是否能得出正確的答案,如果它是不必要的,

那就很順利,如果它是必要的,你就不得不痛苦地再輸入一遍而且還有輸錯的可能?,F(xiàn)在你可以選擇把它注釋掉,這

樣程序運行將忽略它的存在,也可達到上面測試的目的。

§2VisualBasic的語句

一、條件選擇語句

1,條件式

條件式必然代表一個值,是真(True)或者是假(Fake)計算機可以檢測出這個值以做出相應(yīng)的行動。下面就是

判斷的例子,其中加下劃線的部分就是指條件式。

IfLove=TrueThen...

與之相同的簡略的形式是:

IfLoveThen...

而IfLove=FalseThen...與IfNotLoveThen...的意義是相同的。

條件式中可加入邏輯運算符,如:

Ifx<20Andx>15Then表示當(dāng)15vx<20程序?qū)⒆鍪裁础?/p>

Ifx<15Orx>2QThen表示當(dāng)x<15或x>20時程序?qū)⒆鍪裁础?/p>

2,If-Then語句

語法是:

IfConditionThenInstruction

例如:Ifn>25ThentxtABC.Text="ABC”

3,If?Then-EndIf語句

IfConditionThen

Instruction1

Instruction2

EndIf

這種結(jié)構(gòu)可指示計算機執(zhí)行一串語句。

4,If-Then-Else語句

IfConditionThen

Instructions1

Else

Instructions2

EndIf

這種結(jié)構(gòu)指示計算機在條件不成立時應(yīng)該做的事,這樣保證了計算機至少執(zhí)行一些語句。

5,If-Then-ElseIf語句

IfCondition1Then

Instructions1

ElselfCondition2Then

Instructions2

ElselfCondition3Then

Instructions3

Else

Instructions4

EndIf

類似這樣的完整的語句可做出多次判斷,又保證計算機至少執(zhí)行一些代碼。

6,SelectCase-case...case.?.endselect語句

被選擇的值為許多定值時,這個語句就更有用一些。

SelectCaseVariableName/object

CaseValue1,可以是變量值或?qū)ο竺?/p>

Instructions1

CaseValue2

Instructions2

Caseelse,除上述情況外的其他情況

Instructions3

EndSelect

7,嵌套結(jié)構(gòu)

我們可以把許多各式各樣的條件語句嵌套在一起,而且這種嵌套在理論上沒有限制。但事實上嵌套使用得越少,

代碼就越容易被理解。在嵌套時最好使用便于觀察的縮排的格式。如:

SelectCaseGrade

Case“95”

IfClass=n3r'Then

Dorm=H1106-1108n

ElseIfClass=u33MThen

Dorm="1104-1105*,

EndIf

EndSelect

7,選擇函數(shù)

Hf(expression?)根據(jù)表達式邏輯值,返回兩個參數(shù)中的一個

Choose(expression,?...)根據(jù)表達式整數(shù)值,返回多個參數(shù)中的對應(yīng)位置的那個。

二、循環(huán)語句

計算機擅長反復(fù)地做一件事,循環(huán)語句將發(fā)揮它的這種優(yōu)勢。

LDo-Loop循環(huán)

Do-Loop循環(huán)基本上是一個死循環(huán),所以需要在循環(huán)時判斷一些條件。

(1)DoWhile循環(huán)(當(dāng)Condition條件為真時執(zhí)行循環(huán))。

DoWhileCondition

Instructions

Loop

While也可以放在Loop語句上。

(2)Do-LoopWhile循環(huán)(先執(zhí)行一次程序體,再判斷條件為真則繼續(xù)執(zhí)行循環(huán))。

Do

Instructions

LoopWhileCondition

這兩種循環(huán)的不同之處是:DoWhile循環(huán)先判斷條件,所以,DoWhile循環(huán)可能-一次都不執(zhí)行。DoLoopWhile

循環(huán)先執(zhí)行指令,再判斷循環(huán)條件。所以DoLoopWhile循環(huán)至少執(zhí)行一次指令。但它們都是當(dāng)一定條件為真時的循

環(huán)。

(3)DoUntil循環(huán)(條件為真即“退出”循環(huán))。

DoUntilCondition

Instructions

Loop

DoUntil先判斷條件,所以循環(huán)可能一次都不執(zhí)行,它是當(dāng)一定條件為假時的循環(huán)。

DoUntil等同于:

DoWhileNotCondition

Instructions

Loop

(4)Do-LoopUntil循環(huán)(執(zhí)行程序體,直到條件為真時退出)。

Do

Instructions

LoopUntilCondition

DoLoopUntil先執(zhí)行指令再判斷循環(huán)條件,所以指令至少被執(zhí)行一次。D。LoopUntil是當(dāng)一定條件為假時的循

環(huán)。

2,計數(shù)的循環(huán)For-Next

(I)For-Next循環(huán)必須有一個控制變量,這個控制變量一般為整型。語法是:

ForCounter=StartToEnd

Instructions

NextCounter

這里的Counter就是控制變量。如果想運行5次,可用下面的循環(huán):

Fori=1To5

Instructions

Nexti

這時,每循環(huán)一次,i的值就加1。

(2)向前向后計數(shù)

ForCounter=StartToEndStepIncrement

Instructions

NextCounter

Increment表明每次循環(huán)控制變量所加的值。如下面代碼也可循環(huán)5次:

Fori=5To1Step-1

Instructions

Nexti

只有當(dāng)Counter<=End時循環(huán)才執(zhí)行,當(dāng)Counter>End的時候循環(huán)就不執(zhí)行了。所以

Fori=1To10Step7

Instructions

Nexti

循環(huán)將執(zhí)行兩次,一次是當(dāng)i=l時,一次是當(dāng)i=8時。

最好不要在循環(huán)內(nèi)改變控制變量的值,這樣往往會導(dǎo)致邏輯上的錯誤。

(3)對象的計次循環(huán)

Foreachelementingroupnext,針對一個數(shù)組或集合中的每個元素,重復(fù)執(zhí)行一組語句。

可參見Csdn中Foreach.…next語句或Printer對象與Printers集合。

3,與條件語句一樣,循環(huán)語句也可以嵌套。如:

DoWhileCondition

Fori=1To5

Instructions

Nexti

Loop

循環(huán)總是先從內(nèi)部開始的。比較:

Fori=1To4Fori=1To4

Fori=1To5Fori=1To5

NexliNexLi

Nextj

是允許的這種For-Next的纏繞是不允許的

4,從循環(huán)中快速退出

通過使用命令ExitDo和ExitFor,我們可以在循環(huán)未結(jié)束前跳出循環(huán)。但我們應(yīng)該保證所需的動作完成后再跳

出來,否則也許會遇到新的錯誤。而且不要試圖用Goto語句從循環(huán)外跳入循環(huán)。

下面的代碼可以檢測出3至20之間的質(zhì)數(shù)。其中使用了循環(huán)的嵌套及條件語句,并且當(dāng)發(fā)現(xiàn)i不是質(zhì)數(shù)時立即

用ExitFor轉(zhuǎn)向?qū)ο乱粋€數(shù)的檢測。

SubForm_Click()

Dimi,j,xAsInteger

Fori=3To20

x=False

Forj=2Toi-1

If(iModj)=0ThenExitFor

Ifj=i-IThenx=True

Nextj

IfxThenPrinti

Nexti

EndSub

5,遍歷對象(如:所有打印機、窗體等)

使用ForEachobjectIncollection語句來遍歷集合中的對象

(1)、遍歷所有窗體

'MDI窗體Load事件中無法列出子窗體,因為它們還沒加載。

'判斷是否mdi子窗體只能看name屬性,因為MDI窗體沒有Mdichild屬性

,方法一(遍歷含MDI窗體)

DimfrmAsvb.Form

ForEachfrmInForms

Debug.Printfrm.Caption

Next

,方法二(遍歷含MDI窗體)

Dimi

Fori=Forms.Count-1To1Step-1

Debug.PrintForms(i).Caption

Next

(2)、遍歷打印機(VBMSDN自帶例程)

DimXAsPrinter

ForEachXInPrinters

IfX.Orientation=vbPRORPortraitThen

'設(shè)定為系統(tǒng)缺省打印機。

SetPrinter=X

'終止查找打印機。

ExitFor

EndIf

Next

三、建立過程與函數(shù)

如同常量的定義一樣,有時不僅僅是幾個數(shù)字反復(fù)出現(xiàn)在程序中,而且是很多段代碼在做幾乎同樣的事,如果有

一些通用的代碼可供調(diào)用的話,那么程序就會簡練得多,而且更為清晰,這就是過程與函數(shù)。過程和函數(shù)保存在FRM

文件和BAS文件里。若一個過程保存在BAS文件里,那么這個過程可供程序里所有的代碼調(diào)用;如果一個過程保存

在FRM文件里,那么這個過程只能被本窗體里的代碼調(diào)用到。創(chuàng)建過程或函數(shù)的簡單方法是選擇Insert菜單的

Procedure項。過程名,函數(shù)名的命名規(guī)則與變量名,常量名的命名規(guī)則一樣。

1,過程結(jié)構(gòu)

Subsubname(argumentlist)

Instructions

EndSub

argumentlist指的是參數(shù)列表,所謂參數(shù),就是指過程操作所需的指導(dǎo)條件。如下面過程:

溫馨提示

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

評論

0/150

提交評論