Visual Basic教學(xué)課件介紹_第1頁
Visual Basic教學(xué)課件介紹_第2頁
Visual Basic教學(xué)課件介紹_第3頁
Visual Basic教學(xué)課件介紹_第4頁
Visual Basic教學(xué)課件介紹_第5頁
已閱讀5頁,還剩164頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章VisualBasic介紹

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

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

定義過程,對象和類等基礎(chǔ))

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

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

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

第七章從文件中存取資料

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

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

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

第H■一章ActiveX文檔

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

第十三章使用資源文件

第十四章用VisualBasic建立ActiveXDLL

第十五章用Winsock控件進(jìn)行Internet通信

第十六章Web瀏覽控件

第一章VisualBasic介紹

§2窗體和命令鈕介紹

一、窗體

窗體是Windows的基本組成部分,這也是為什么這個操作系統(tǒng)叫Windows

的原因。它的主要屬性除上屬介紹的以外,還包括:

1,Appearance屬性

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

2,BorderSlyle屬性

這個屬性決定了窗體的邊框形式,共有6種屬性值。改變宙體的BordrStyle

屈性后,窗體在屏幕上沒有變化,它只在運(yùn)行時才變?yōu)槟闼蟮臉幼印?/p>

3,ComBox屬性

程序員用來決定采用不采用控制框的屬性,僅在程序運(yùn)行時才有效。

4,Font屈性

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

文本顯示。

5.Icon屬性

這個屬性是用戶經(jīng)常要使用的種屬性。當(dāng)用戶的應(yīng)用程序在工具條上最

小化或在Windows桌面上變?yōu)橐粋€獨(dú)立應(yīng)用程序時,該屬性決定將采用何種

圖標(biāo),窗體控制框里的圖標(biāo)也由它決定。為自己的窗體設(shè)置該屬性時,要控

制住自己挑三揀四的沖動。

6,Visible屬性

該屬性決定窗體是否可見.錯誤地改變其值是很危險的,窗體會從眼前消

失,這種莫名其妙的事情會使用戶驚惶失措,所以肩負(fù)重任的程序員?定要

慎重喲!

7,WindowState屬性

指定窗體在運(yùn)行時的三種狀態(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ā)生ActivateM件,而前■個窗體發(fā)生Deaclivale事件。

三、窗體控制

I,裝入或卸出窗體

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

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)窗體則反之。

同理,隱藏窗體用fonnName.hideo

四、命令鈕

命令鈿有兩類:一類是簡單的命令鈿,一類是圖形針1。圖形鈿常常成組地

出現(xiàn)在屏幕的頂端,成為一些程序炫耀自己貼近用戶的標(biāo)志.圖形鈕充分利

用了圖形用戶界面的特征,而且比命令鈕小,用它的缺點(diǎn)是用戶必須知道圖

形鈕是什么意思,而且沒有鼠標(biāo)的用戶恐怕用不了圖形鈿。命令鈕也有

Appearance.Caplion、Font、Left*Visihle之類的屬性。命令鈕的最主要事件

就是Click事件,它還仃MouseDown和MouseUp等事件

§3建立菜單

一般Windows的菜單條包含F(xiàn)ile,Edit.Window和Help菜單標(biāo)題“我它

的菜單,程序員應(yīng)將它們插在Edit和Window菜單之間。在VisualBasic里,

為了創(chuàng)建菜單,必須打開菜單編輯窗口。可以按下Ctrl+E鍵,也可以從Ibols

菜單中選擇MenuEdiior項(xiàng),或者■單擊VisualBasic主窗口的從左邊數(shù)第六個

圖形鈕。

一、給菜單命名

菜單標(biāo)題和菜單命令也右C叩tion和Name屬性,你設(shè)置了這兩個屬性就等

于創(chuàng)建了菜單。于控件一樣Caplion是屏辱上可見的,而Name則是一個抽象

名稱.別忘了在C叩lion里加入以幫助沒有鼠標(biāo)的用戶。

二、增加和刪除菜單

在MenuEdiior中部有三個命令鈕分別是Next,Insert,Delete?Insert可用

來增加新的菜單:在這三個鍵下面的C叩tion列表框里選中菜單頂(這時它的

底色就變成深藍(lán)色),單擊Insert鍵,VisualBasic將上?個增亮菜單卜推并增

亮一空行,你就可以輸入新菜單名和標(biāo)題了。Ddcic鍵可用來刪掉菜單.你選

中要刪掉的菜單,單擊Delete漁就可以刪掉它了.

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

右四種情況,向上移動,向下移動,向左縮排,向右縮排,這就是MenuEditor

中間上下左右箭頭的功能.選中某一?菜單標(biāo)題,安上下箭頭,則這個菜單將

上下移動到你喜歡的位置匕這也決定了它在界面中的位置.如果你按左右

箭頭,情況則有所不同。由于菜單是分級的,所以,如果它沒有縮排,則它

是一個菜單標(biāo)題:如果它縮排一次,那么它將變成一個菜單命令:如果縮排

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

菜單。

四、設(shè)置分離條

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

奇怪的是,VisualBasic將分離條也看成一-個菜單項(xiàng),它也需要Caption和

Name屬性,而且它也有其它屬性,分離條與菜單項(xiàng)的區(qū)別是分離條的Caption

屬性必須是連字號即減號。也就是,當(dāng)你設(shè)置了一個Caplion屬性為“?”的菜

單項(xiàng)時,實(shí)際上你就設(shè)置了一個分離條,分離條的名字可以是barFilel之類,

以表明分離條的位置。

芻無標(biāo)建-記事本

文件任)3項(xiàng)肝堪)帶勒出)

新建好

打開?…

保存0

另存為日.

一分陶條

貝面諛R<i)-

一分離條

退出QP

五、菜單的各種簡單屬性

在MenuEdilor里有許多確認(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屬性為假?則菜單命令是模糊的,這

時用戶就不能選中這個菜單項(xiàng)了。

3,Visible屬性

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

用戶看不見這個菜單命令時,他也就不會發(fā)無名之火了.如果把Visible屬性

設(shè)為假,則菜單根本不會出現(xiàn)在肝幕上。這樣做比把Enabled屬性設(shè)為假顯得

更加干脆!

4,Index屬性

可以生成菜單命令數(shù)組,用索引號區(qū)分開°例如向File菜單中添加一系列

最近打開的文件名。添加菜單可用Load方法。

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

例如:

innulJndo.Enabled=False

innuPropcrty.Visible=False

你還可以改變Cuplion等屬性。

mnuUndo.Caption="Redo”

在對窗體,命令鈕和菜單杓所了解后,工具箱里的其它控件就更加容易理

解了。下面這些控件的熟練運(yùn)用,將使你做出漂亮的界面。

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

幾乎每個Windows應(yīng)用程序都提供彈出式菜單,用戶可以右鍵單擊窗體

或控件取得這個菜單。彈出式菜單也屬于普通菜單,只是不固定在窗體上,

而是可以在任何地方顯示。

彈出式菜單用PopupMenu方法調(diào)用。假設(shè)我們已經(jīng)用MenuEdiior生成\

名為mnucdit的菜單,則可以在MouscUp3件加入如下代碼:

IfButton=2ThenPopupMenunimiedii

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

得到。左

繪使菜單

密使菜單

Rwrov'eaFtawo^iQn

Dimrtmcnu

PrivateSubcmdadd_Click()

rtmenu=rtinenu+1

Ifrtmcnu=IThenmnuoption(0).Caption="RuntimeOption"

LoadmnuoptionCrtmenu)

innuupli()n(rtmenu).Captk)n="option#"&rtmenu

EndSub

PrivateSuhcnidremove_CIick()

Ifrtmenu=0Then

MsgBox"menuisempty"

ExitSub

EndIf

Unloadmnuoption(rtmenu)

rtmcnu=nmcnu-1

EndSub

PrivateSubForm_M()useUp(ButtDnAsInteger,ShiftAsInteger,XAsSingle,

YAsSingle)

[fButton=2ThenPopupMenumnuedit

EndSub

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

一、確認(rèn)框和選項(xiàng)鈕就好比多項(xiàng)選擇和單項(xiàng)選擇.在考試時選擇題總比簡

答題要好做,因?yàn)槟憧梢杂冒得傻牟呗浴S脩艚缑嬖O(shè)計(jì)的保持簡單的原則使

確認(rèn)框和選項(xiàng)鈕成為有用的框件。確認(rèn)框和選項(xiàng)鈕用于向程序輸入信息。確

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

選項(xiàng)鈕選中時會在小圓圈里點(diǎn)一個點(diǎn)。它們的主要屬性除rName.Caption

等,還有:

1,Value屬性

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

2,Alignment屬性

決定它們的對齊方式。

二、有兩道選擇題或更多時,我們就必須對它們進(jìn)行分組。這種分組需要

借助框架控件。分組的方法是:

1.在工具箱里單擊Frame控件:

2.在窗體里拖咀鼠標(biāo)畫出框架:

3.在工具箱里單擊確認(rèn)框或選項(xiàng)粗控件:

4.在框架里畫確認(rèn)框或選項(xiàng)鈕:

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

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

正文框通常用「向計(jì)算機(jī)輸入信息,而標(biāo)簽通常用于輸出信息。正文框是

一個卜分重要的控件,因?yàn)橛纱_認(rèn)框和選項(xiàng)鈕向程序輸入的信息畢竟只有少

數(shù)的幾條信息而已e標(biāo)簽和正文框的區(qū)別很小,標(biāo)簽可以看成是一個在運(yùn)行

時不能修改正文的正文框。因此標(biāo)簽主要用于輸出信息。標(biāo)簽是生活中不可

缺少的部分,比如教室里的“團(tuán)結(jié),勤奮,嚴(yán)琳,活潑”就是一個每天不得

不面對的標(biāo)簽。

1,BorderStylc屬性

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

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

這兩個屬性其實(shí)是一樣的,它決定了用戶在屏幕上看到的東西,只不過正

文框的Tcxl屬性在運(yùn)行時可以直接在正文框里修改。

3,Alignment屬性

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

4,正文框的Multiline屬性

如果正文框里的字太多了,超過了正文框的寬度,那么計(jì)算機(jī)就在某個我

們不知道的地方顯示這行字,所以我們要設(shè)置Mulliline屬性為True,這樣正

文框就有了字換行的能力。

5,正文框的PasswordChar屬性

如果用戶從事的是一種掌握大量金錢或機(jī)密的工作的話(此類用戶肯花大

錢來買關(guān)于”?算機(jī)的東西),那么他就需要對自己的工作遮遮掩掩,在Visual

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

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

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

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

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

第三步使口令正文框只有一行,因?yàn)镸ultiline屬性為True將使Password

屬性失效。VisualBasic認(rèn)為口令不必太長,因?yàn)樘L的口令更加容易忘記。

6,正文框的Maxlength屬性

為了防止一些古怪用戶輸入太多的廢話,程序員有限制正文框正文長度的

權(quán)力,這就是Maxlength屬性。如果Maxlength屬性設(shè)置為零,那么正文框就

只受計(jì)算機(jī)內(nèi)存的限制了。

7.Label的AutoSize屬性和Wordwrap屬性

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

程序里有一個程序里有這兩個屬性的例子,它的路徑通常是

c:\vb\sainples\controls\control.vbpo在VisualBasic里運(yùn)行這個例子,選擇

Options菜單的WordwrapandAutoSize.AutoSize屬性使標(biāo)簽自動地?cái)U(kuò)大縮小

以適應(yīng)標(biāo)簽的Caplion屈性,但是它只會水平伸展。Wordwrap屬性使標(biāo)簽具

有字換行處理的能力。

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

Wordwrap屬性同時為True。

AutoSize屬性為False?Wordwrap屬性為False時,若標(biāo)簽不夠高而Caption

太長時,Caplion將被切割掉。

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

AutoSize屬性為True,Wordwrap屬性為False時,表示可以水平伸展,但

只顯示一行信息。

Locked屈件

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

這是VisualBasic4.0的新功能。

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

PictureBox和ImageBox是用來把圖形放入程序里的。PictureBox和

ImageBox可以顯示幾種不同格式的圖形。Bitmap文件(,BMP或.DIB)、18n

文件(.ICO或.CUR)、Mciaf加圖元文件(.WMF)、增強(qiáng)型圖元文件(.EMF)、

JEPG(.JPG)及GIF(.GIF)文件。在VisualBasic里Microsoft大概送給了我們兒

百個上述前三類文件,它們的路徑通常是:c:\vb\bitmaps、c:\vb\icons、

c:\vb\mctafile?它們的主要屬性行:

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

(1)單擊PictureBox或ImageBox。

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

(3)單擊Picture屬性。

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

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

則VisualBasic將圖形裝入PictureBox或ImageBox,如果想在程序運(yùn)行期

間裝入或刪除圖形,就需要用程序代碼來實(shí)現(xiàn)了。我們可以使用LoadPicture

函數(shù)。例:

裝入圖形

imgMyHand.Picture=LoadPicture("c:'graphic7hand.bmp'')

刪除圖形

imgMyHand.Picture=LoadPicture("”)

2,PictureBox和ImageBox的BorderSlyle屬性

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

3,Stretch屬性和AutoSi/c屬性

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

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

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

面的邊框。

§7Line和Shape控件

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

I,Line和Shape的Bordei<olor屬性

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

擊BorderCclor屬性,再單擊省略號,VisualBasic將顯示一塊調(diào)色板,在調(diào)色

板里選擇你喜愛的顏色:

2,Line和Shape的BordcrWidth屬性

這個屬性決定線的粗細(xì)。

3,Line和Shape的BorderStyle屬性

這個屬性決定稅的輪廓.

4,Shape的FillSlyle屬性

在形狀中我們可能更加喜歡實(shí)心的樣廣,這也可以做到。

我們已經(jīng)了解了窗體,菜單,及十種不同的控件,這正是Windows的基本

元素,再加上它們的各種屬性,就可以畫出各式徉樣的用戶界面了!

§6&§7總結(jié):Image、Shape和Line控件有時被稱作輕量圖形控

件。它們需要較少的系統(tǒng)資源,因此比PictureBox控件顯示得快并且包含

PiclurcBox中可用的屬性、方法和事件的子集。每一個控件都適用「?一個特

定的目的。

1、其它控件的容器:PictureBoxPrinting或graphics方法:PictureBox

3、顯示圖片Image或PiclurcBox4、控件顯示簡單圖形元素:Shape或Line

控件

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

在我們設(shè)計(jì)完用戶界面后,我們就將開始了編寫指令代碼的過程。這是一

個相對?枯燥但卻是必須的過程。

§IVisualBasic編程概述

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

簡單地說就是當(dāng)事件發(fā)生時程序才工作,否則程序?qū)⒌却录陌l(fā)生。在

事件疆動程序中,用戶的操作或系統(tǒng)事件執(zhí)行一個事件過程,這樣.程序執(zhí)

行的順序就由哪一個事件的發(fā)生決定,由用戶的操作決定。就是用戶管理,

代碼響應(yīng)。

二、事件過程

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

L窗體

2.控件

3,菜單

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

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

2,打開代碼窗口--簡單的方法是按FaJsc7鍵或者雙擊對象:

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

HI工程1Teel(r?a一同日

[,?r.V!!▼]

PrirtteSubTom.bjadO

tod$nk

代碼窗口的Qbjeci列表框可以選擇對象,旁邊的Proc列表框可以選擇對象

的事件.如果事件已經(jīng)有了代碼的話,那么在Pmc列表框里.這個事件名用黑

體顯示??盏氖录a都由兩行組成,如;

PrivateSubForm_Load()

I

EndSub

4,編寫程序代碼。

三、變量

程序總是要做三件事:

1,得到數(shù)據(jù):

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

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

在程序運(yùn)行時,這些數(shù)據(jù)被儲存在變量里,變量可理解為計(jì)算機(jī)內(nèi)存條上

的一個微觀的東西。一旦關(guān)機(jī),變量就消失了。變量在VisualBasic里有兩種

類型:

1,程序員建立的變量:

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

變量必須滿足:

1,字母開頭;

2,不超過40個字:

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

4,不是保留字。

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

I,用Dim語句說明它;

2,可以省略聲明語句而用變最聲明字符生成確定類型的變屬。在程序執(zhí)行

時若要生成變量并指定數(shù)據(jù)類型,可加入下表所示的變星聲明字符后綴.

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

號型

$SiringAS.message

IcxtS

%IntegerCounter%,var%

&LangPopulation&.color

Value%

*1SingleDistance!

#DoubleExactDistance#

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

Dim語句的語法是:

DimVariablcNamcAsType

例如:DimMyName

AsType部分可以省略,它涉及到我們將要講的關(guān)于數(shù)據(jù)類型的問題。Dim

語句的作用是聲明變量并分配存儲空間。

賦值語句的語法是:VariableName=Value或VariableNaineI=

VariableName2

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

=A+1在VisualBasic里是合法的。例如:cmdExit.Caption="Exit”

(這是一個改變對象屬性的例子)

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

變量可以存放數(shù)字或字符申等東西,但是MyName變量并不需要存放數(shù)字,

所以你可以限制存放的數(shù)據(jù)類型。你可以規(guī)定MyNanic只能字符中。Visual

Basic提供了七種數(shù)據(jù)類型:

I.整型(Integer)

2字節(jié)整數(shù),標(biāo)識符(同上面的變最聲明字符)為百分號(%),范圍從-3276H

到32767,運(yùn)算很快。

2.長整型(Long)

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

3.單精度型(Single)

4字節(jié)浮點(diǎn)數(shù),標(biāo)識符為!,范圍可達(dá)38位數(shù)字,前7位可靠,運(yùn)算比整型

和長整型慢.

I.雙精度型(Double)

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

數(shù)字。

5.字符串型(Suing)

標(biāo)識符為$,在32位版本的VisualBasic4.0中,字符串可容納高達(dá)200兆

字節(jié)的內(nèi)容。

6.貨幣型(Currency)

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

7.F1期型(Date)

用于存放日期,范困從#癡11婚1,100#到#口8。址仃319999#,日期的格式

取決于系統(tǒng)的設(shè)定,賦值方法是:New=#Januar)-1,2000#。

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

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

9,布爾型(Boolean)

只內(nèi)True或False兩個值。

io,變體型(Varianl)

如果你不告訴VisualBasic你的變量是什么類型,VisualBasic就自動把它

看成變體型。變體型的意思就是它沒有類型,或者是任何類型.如果聲明了

Viirianl變量而未賦值,則其值為Empty。

例如:DiniMyNameAsSiring

事實(shí)上,語句DimMyName只是將MyNamc變昂:聲明為變體類型罷了,因

為變體類型是VisualBasic的缺省類型。但是,我們使用數(shù)據(jù)類型的原因是什

么呢?

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

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

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

例如:

PrivateSubForm_Load()

DimMyNameAsString

MyNamc="DongSharT

EndSub

變換變量類型

有時需要將一種變量類型變成另一種變量類型,卜表列出了進(jìn)行變量類型

轉(zhuǎn)換的函數(shù):

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

Cboo將變元變成布CLng將變元變成長

1爾值整型值

Cbyl將變元變成字CSng將變元變成單

e節(jié)值精度值

CCur將變元變成貨CSir將變元變成字

幣型值符串值

CDai將變元變成日Cvar將變元變成變

e期值體值

CDbl將變元變成雙CVE將變元變成錯

精度值rr誤值

Clnt將變元變成整

型值

Vai:將變量轉(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)。

在VISUALBASIC中定義記錄,用Type語句,其語法如卜?:

TypevarTypc

Variable1AsvarType

Variable?Asvaffypc

VariablcnAsvarTypc

EndType

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

TypeClieckRcxord

CheckNumbcrasInteger

CheckDateasDate

CheckAmountasSingle

EndType

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

使用如下語句:

Dimcheck1AsCheckRecord

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

check1.Che£,kNuinber=l23

check1.CheckDate=M)8/l4/1996#

check1.ChcckAmoiint=24().00

強(qiáng)制的變量聲明

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

確很有好處。

因此VisualBasic提供強(qiáng)制聲明的方法,只要在窗體或模塊的聲明部分加

上一條語句:

OptionExplicit

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

出一個錯誤消息!

數(shù)組

單個變吊:只能存放單個澳體,而數(shù)組可以存放一組相關(guān)的數(shù)據(jù)。像變量一

樣,數(shù)組有名稱,存放在數(shù)組中的數(shù)值通過一個索引來訪問,

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

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

Names是保存了了個元素的數(shù)組,Nan心(0)是第?個元素,Names⑼是最

后一個元素。數(shù)組元素的賦值如下:

Names(0)="John"

Names(I)="Tom"

Names(9)="XionghuiM

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

DimNames。lb16)

DimNan心(5To16)

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

有時可能不知道需要多大的數(shù)組,這時可以生成動態(tài)數(shù)組,其長度可以

在運(yùn)行程序時改變。定義動態(tài)數(shù)組,和平常一樣用Dim語句(或Private和

Public),但不要指定長度(或維數(shù)):

DimDynArray。

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

ReDimDynArray(UserConnt)

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

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

能想改變數(shù)組的長度,而不損失原有的數(shù)據(jù),幸好VisualBasic提供了Preserve

關(guān)鍵字,它就能作到!例如下面語句將數(shù)組加大一個元素而不改變原有數(shù)據(jù):

RcDimPreserveDynArray(Ubound(DynArray>+1)

由Fubound。函數(shù)只能返回靜態(tài)數(shù)組或已經(jīng)重定義上限的數(shù)組上.標(biāo),否則將

出錯。所以我們常使用:

Dimarr()

???

Redimarr(O)

Redimpreservearr(ubound(arr)+l)

這樣ubound()取得的上標(biāo)即數(shù)組成員數(shù),實(shí)際上是將arr(O)閑置,將有效的

數(shù)組數(shù)據(jù)寫入arr(l)之后的成員中。

清除數(shù)組

Erasearraylist,參數(shù)為數(shù)組列表,arrayLarray2該語句清空并輕

放數(shù)組,一般用于動態(tài)數(shù)組。

五、變量的使用范圍

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

1,局部變量;

2,模塊級變量,也可以叫做窗體級變量,因?yàn)榇绑w和模塊是同級的;

3,全局變量。

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

過程中說明。

模塊級變量可存在于這個窗體或模塊中,可以被所有窗體內(nèi)的事件過程所

引用和改變,說明模塊級變量的方法是:

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

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

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

4,用Dim語句說明。

全局變量從程序開始時存:在至程序結(jié)束,不過全局變量的錯誤也許會導(dǎo)致

致命的鉗誤,你不得不讀遍程序來4找到底在說明地方改變了全局變量。創(chuàng)

建全局變量的方法是:

I,從Insert菜單里選Module項(xiàng),這個命令為一個BAS模塊文件顯示代碼

御口;

2,在Object列表框中選擇(genend):

3,在Proc列表框中選擇(dedara〔ions):

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

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

1,算術(shù)運(yùn)算

盡管一臺上萬元的計(jì)算機(jī)看來很高科技,但它在算術(shù)運(yùn)算方面并不比一個

幾十元的計(jì)算器強(qiáng)多少。

運(yùn)算符運(yùn)算運(yùn)算符運(yùn)算

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

拼接)

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

*乘A乘方

/浮點(diǎn)數(shù)除&字符中拼接

2,邏輯運(yùn)算

邏輯運(yùn)算是對True和False進(jìn)行操作的運(yùn)算,VisualBasic將True的值看成

-I,將False的值看成0。

運(yùn)算符使用意義

A量

nd1And變兩個量均為True,才返回True

最2

or21Or變星只要有一個量為True,返回值

就為True

r艮

x()1Xor變兩個最一個為True,一個為False

量2

才返回True

1Not變簡單地把True變?yōu)镕alse,把

N(m2

False變?yōu)門rue

3,比較運(yùn)算

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

運(yùn)算符意義運(yùn)算符意義

小于>=大于等于

<=小于等于=等于

>大于<>不等于

說明:變體型變量必須使用Variype(Var)判斷其是否為空,

如返回1則為空。

有時候,史雜的運(yùn)算會把我們搞暈,良好的習(xí)慣是加括號。如:x=(5*(8

+9))A2,則計(jì)算機(jī)先處理(8+9),再處理(5*(8+9)),最后才是乘方。

再如:x=(5*6)/2,這個括號加得似乎沒什么意義,但它使我們清晰地知

道是從哪兒開始運(yùn)算的,

七、字符串操作

有時程序需要對字符串進(jìn)行操作,比如從一個文件的完整路徑名中找出文

件的名稱。卜面介紹幾個常用的函數(shù)C

1,Len函數(shù)

返回字符串的長度。如Length=Len(、'$lring"),則Length=6a

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

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

如:

x=LCase(“DONGSHAN”)

x=UCase("visualBasic")

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

語法是:

[.eft(VariablcName.N)

Right(VariableName.N)

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

個字符。

4,Mid函數(shù)

語法是:

x=Mid(VariableName.n,rn>

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

5,Insir函數(shù)

語法是:

Instr(VariableName1,VariableName?)

Instr函數(shù)從VariableNameI里找出VariableName2的位置。如;x=Instr

(“ABCD”「CD”),此時x=3,如果計(jì)算機(jī)沒找到要找的字符串,則這個函數(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,Sti?函數(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,使用注釋

用...注釋。如:"ThisSubisusedtogetWindowsversion

撇號右邊的東西VisualBasic通常用綠色的字來已示,而liVisualBasic將

忽略注釋的東西.在VisualBasic4.0所附的示例程序里使用了大量的注釋,

這樣使其他人(也包括自己)能更好地讀懂程序,所以使用注釋是一個好習(xí)

慣。

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

x=(3.5A2-4)*(5+6,73*7\2)-10.89

現(xiàn)在你需要測試這一語句是否是必要的,r是你把它刪除,再運(yùn)行著是否

能得出正確的答案,如果它是不必要的,那就很順利,如果它是必要的,你

就不得不痛苦地再輸入一遍而II還有輸錯的可能?,F(xiàn)在你可以選擇把它注擇

掉,這樣程序運(yùn)行將忽略它的存在,也可達(dá)到上面測試的目的。

§2VisualBasic的語句

一、條件選擇語句

人們面臨選擇的時候精神會變得脆弱,這就是為什么我們總是輕信偷看來

的答案。因此,選擇對于人類來說是一件兔雜的事情.而對于計(jì)算機(jī)來說,

則非常簡單。它頭腦簡單,因而永遠(yuǎn)不會發(fā)出哈姆雷特式的疑問——“是生,

還是死?”

L條件式

條件式必然代表一個值,是真(True)或者是假(False)計(jì)算機(jī)可以檢測

出這個值以做出相應(yīng)的行動。卜面就是判斷的例子,其中加卜.劃線的部分就

是指條件式。

IfLove=TrueThen...

勺之相同的商略的形式是:

IfLoveThen...

而lfLove=FalseThen...IfNolLoveThen…的意義是相同的.

條件式中可加入邏輯運(yùn)算符,如:

Ifxv20Andx>15Then表示當(dāng)15vxv20程序?qū)⒆鲠懿访础?/p>

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

2,If-Then語句

語法是:

IfConditionThenInstructiun

例如:lfn>25ThentxtABC.Text="ABC'*

3,If?Then?EndIf語句

IfConditionTiien

Instruction1

Instniction2

EndIf

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

%If-Then-Else語句

IfConditionThen

Instructions!

Else

Instructions2

EndIf

這種結(jié)構(gòu)指示計(jì)算機(jī)在條件不成立時應(yīng)該做的事,這樣保證了計(jì)算機(jī)至少

執(zhí)行一些語句。

5?If?Then-ElseIf語句

IfCondition1Then

Instructions1

ElselfCondition2Then

Instructions2

ElselfCondition3Then

Instructions3

Else

Instructions4

EndIf

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

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

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

SelectCaseVariableNamc/objcct

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

Instructions1

CaseValue2

Instructions2

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

Instructions3

EndSelect

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

我們可以把許多各式各樣的條件語句嵌套在?起,而氏這種戰(zhàn)套在理論上

沒有限制。但事實(shí)上嵌套使用汨越少,代碼就越容易被理解。在俄套時最好

使用便于觀察的縮排的格式。如:

SelectCaseGrade

Case"95"

]fClass="3r,The!i

Dorm="1106-1108w

Else!fClass="33"Then

Donn=-11()4-IIOS"

EndIf

EndSelect

7,選擇函數(shù)

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

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

置的那個。

二、循環(huán)語句

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

1,Do-Loop循環(huán)

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

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

DoWhileCondition

InstrucUons

Loop

While也可以放在Loop語句匕

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

執(zhí)行循環(huán))。

Do

Instructions

LoopWhileCondition

這兩種循環(huán)的不同之處是:DoWhile循環(huán)先判斷條件,所以,D。While循

環(huán)可能一次都不執(zhí)行。DoLoopWhile循環(huán)先執(zhí)行指令,再判斷循環(huán)條件。所

以D。LoopWhile循環(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í)行一次。Do

LoopUntil是當(dāng)一定條件為假時的循環(huán)。

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

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

法是:

ForCounter=StartToEnd

Instructions

NextCminter

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

Fori=1To5

Instructions

Nexti

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

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

ForCounter=StartToEndStepIncrement

Instructions

NextCounter

Incremeni表明每次循環(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

Instruction,

Nexti

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

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

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

Foreachelemetuin...next,針對一個數(shù)組或集合中的每個元素,重

復(fù)執(zhí)行一組遭包。

可參見Csdn中Foreachnext語句或Primer對象與Primers集合。

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

DoWhileC?ondition

Fori=1To5

Insiruclions

Nexti

Loop

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

FoH=1To4Ebd=11()4

Fori=1To5Forj=ITo5

NextiNexii

NexiiNexti

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

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

通過使用命令ExilDo和ExitFor,我們可以在循環(huán)未結(jié)束前跳出循環(huán).

但我們應(yīng)該保證所需的動作完成后再跳出來,否則也許會遇到新的錯誤。而

且不要試圖用Goto語句從循環(huán)外跳入循環(huán)。

下面的代碼可以檢測出3至2()之間的質(zhì)數(shù)。其中使用r循環(huán)的抿套及條

件語句,并且當(dāng)發(fā)現(xiàn)i不是質(zhì)數(shù)時立即用ExitFor轉(zhuǎn)向?qū)ο乱粋€數(shù)的檢測.

SubF;onn_Click()

Dimi.j,xAsInteger

Fori=3To2()

x=False

Forj=2Toi-1

If(iModj)=0ThenExitFor

Ifj=i-1Thenx=True

Nextj

IfxThenPrimi

Nexti

EndSub

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

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

(1)、遍歷所有窗體

4MDI窗體Load事件中無法列出子窗體,因?yàn)樗鼈冞€沒加載。

,判斷是否mdi子窗體只能看name屬性,因?yàn)镸DI窗體沒有Mdichild屬性

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

DimfrmAsvb.Fomi

ForEachfnnInForms

Debug.Primfrm.Caption

Next

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

Dimi

Fori=Forms.Count-1lbIStep-I

Dchug.PrintF0rms(i).Caption

Next

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

DimXAsPrinter

ForEachXTnPrinters

IfX.Orientation=vbPRORPortraitThen

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

SetPrinter=X

'終止杳找打印機(jī)。

ExitFor

EndIf

Next

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

如同常量的定義一樣,行時不僅僅是幾個數(shù)字反復(fù)出現(xiàn)在程序中,而且是

很多段代碼在做幾乎同樣的事,如果有?些通用的代碼可供調(diào)用的話,那么

程序就會筒練得多,而」[更為清晰,這就是過程與函數(shù)“過程和函數(shù)保存在

FRM文件和BAS文件里。若一個過程保存在BAS文件里,那么這個過程可

供程序里所有的代碼調(diào)用:如果?個過程保存在FRM文件里,那么這個過程

只能波本窗體里的代碼調(diào)用到。創(chuàng)建過程或函數(shù)的簡單.方法是選擇Inwrt菜單

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

樣。

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

Subsubname(arguinentlisi)

Instructions

EndSub

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

如下而過程:

SubPrintHello(nAsInteger)

DimiAsInteger

Fori=1Ton

Print"Hello"

Nexti

EndSub

n參數(shù)就是指導(dǎo)這個過程打印“Hello”的個數(shù).當(dāng)有許多參數(shù)時,可用

將它們分開。

如果在Form_Click事件過程里調(diào)用PrintHello過程,就可用鍵入:

CallPrintHello(5),其中Call是VisualBasic的保留字

PrintHello5

后-一種省略Call和括號的方法使這個過程看起來更象個VisualBasic的

語句.所以我們可以這樣認(rèn)為:建立好的過程可以當(dāng)作語句來使用。

2,函數(shù)結(jié)構(gòu)

函數(shù)結(jié)構(gòu)與過程結(jié)構(gòu)基本上是一樣的,

Functionfunctionnanie(argumcntlist)Astype

Instructions

EndFunction

函數(shù)就是有返回值的過程,它自己是有數(shù)據(jù)類型的。但Astype部分是可

以省略的,這時函數(shù)的返回值將是變體類型的值。在調(diào)用沒仃參數(shù)的函數(shù)時

也必須加括號。如:

Functionlotal(aAsInteger,bAsInleger.cAsInteger)AsInteger

Total=a+h+c

EndFunction

調(diào)用時可以這樣:

Answer

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論