版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藝術(shù)類學(xué)校雙減工作方案
- 供水管網(wǎng)智能監(jiān)控方案
- 九江2024年統(tǒng)編版小學(xué)英語第5單元真題試卷
- 人口老齡化對養(yǎng)老保險支出的影響研究
- 家庭聘用保姆協(xié)議書(2篇)
- IT合作協(xié)議(可直接使用)
- AR虛擬現(xiàn)實技術(shù)合作合同
- 醫(yī)藥行業(yè)生物安全事故應(yīng)急處置預(yù)案
- 廣州-PEP-2024年10版小學(xué)五年級英語第五單元期末試卷
- 信息技術(shù)產(chǎn)品市場方案
- 人力資源外包服務(wù)勞務(wù)外包勞務(wù)派遣投標(biāo)方案
- 膨化食品生產(chǎn)的國家法規(guī)與標(biāo)準(zhǔn)要求解讀
- 2023年小學(xué)世界濕地日主題班會課件
- 孫燕姿所有歌曲歌詞大全(11張專輯)
- 百萬英鎊英語劇本
- 小學(xué)道德與法治-生命最寶貴教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- 初中化學(xué)項目式教學(xué)的實施策略探究
- 第四屆全國大學(xué)生計算機能力挑戰(zhàn)賽真題及答案
- 2017版地形圖圖式與2007圖式對比
- 班級管理第2版(高等師范專業(yè))PPT完整全套教學(xué)課件
- 盆腔膿腫-盆腔膿腫護理查房優(yōu)質(zhì)材料課件
評論
0/150
提交評論