?? 050204.htm
字號:
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>vb study</title>
<style>
<!--
td {font-size: 9pt}
A:link {text-decoration: none; color: #0033cc;font-size: 9pt}
A:visited {text-decoration: none; color: #0066CC;font-size: 9pt}
A:active {text-decoration: none; color: #ff0000; font-size: 9pt}
A:hover {text-decoration: underline; color: #000000;font-size: 9pt}
-->
</style>
</head>
<body>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" width="98%">
<tr>
<td width="100%"><a href="#">你的位置</a>:<a href="http://www.xxby.com" target="_blank">華生小屋</a>--<a href="#">VB學(xué)習(xí)</a>--<a href="#">代碼</a></td>
</tr>
<tr>
<td width="100%">
<p align="center">代碼</td>
</tr>
<tr>
<td width="100%"><br>
在標(biāo)準(zhǔn)模塊中不能編寫某個窗體中的對象的事件過程,事件過程只能在窗體模塊中編寫。<br>
VB代碼窗口中的書簽:書簽可用來標(biāo)記代碼中的某些行,以便以后可以很容易地返回這些行,書簽的切換或定位可在"編輯"菜單"書簽"項中進行。<br>
VB代碼一行一般寫一條語句,也可一行寫多條語句,每條語句間用冒號:隔開即可<br>
VB一條長語句可以分成幾行來寫,在需要分行的地方用"空格+下劃線(_)"即可。<br>
在VB中我們一般用十進制數(shù),但有時用十六進制數(shù)或八進制數(shù)更方便,怎樣表示16進制數(shù)呢:用前綴&H,怎樣表示八進制數(shù)呢,用前綴&O(&號和大寫字母O或數(shù)字0),如:<br>
255=&o377=&hFF<br>
我們可看到用16進制數(shù)表示的控件顏色值如:label1.backcolor=&HFF0000(藍色),通常情況下,顏色值由六位數(shù)組成,顏色值=&Hbbggrr。前兩位數(shù)表示藍色成分,中間兩位表示綠色成分,后面兩位表示紅色成分,范圍從16進制數(shù)的0-FF。<br>
在多個模塊中有同名的公用變量(用public聲明的)時,引用時應(yīng)分別指出它的出處,形如:module1.lxn或module2.lxn或form1.lxn等。如果有同名的公用過程或公用函數(shù)等也是如此,引用時指明出處。<br>
變體類型數(shù)據(jù)的三個特殊值:EMPTY,NULL,ERROR。<br>
當(dāng)一個變體變量未賦值時,其"值"就等于Empty.它不等于0或空字符串"",當(dāng)給一個變量賦值后(如 lxn=0),其empty值就消失,可重新賦予empty值,如:lxn=empty<br>
可用IsEmpty函數(shù)檢測是否為empty值:if IsEmpty(lxn)=true then lxn=0<br>
給一個變體變量賦予NULL值:常用于數(shù)據(jù)庫程序中表示未知數(shù)據(jù)或丟失的數(shù)據(jù),null的傳播性:假如有一個變量值為NULL,將它放入一個表達式中,整個表達式值將變?yōu)镹ULL,將它作為參數(shù)傳入函數(shù)中,函數(shù)將返回NULL,NULL能通過表達式"傳播",當(dāng)然前提是有"變體"變量(為傳播載體)的基礎(chǔ)上。用IsNull函數(shù)檢測是否為NULL值,<br>
如: if IsNull(lxn)=false then lxn=Null<br>
變體變量的ERROR值,指出已發(fā)生的過程中的錯誤狀態(tài)。不是指程序錯誤(我沒看懂)<br>
在動態(tài)數(shù)組的使用中,用redim確定了數(shù)組的最大下標(biāo),如果還要改動這個值,而程序中若重復(fù)執(zhí)行ReDim語句時,當(dāng)前存儲在數(shù)組中的值都會全部丟失, VB重新將所有數(shù)組元素初始化,運行中怎樣改變數(shù)組的大小而又不丟失數(shù)據(jù)呢?用ReDim Preserve關(guān)健字,但要注意,運行中只能改變數(shù)組最后一維的大小,可先用UBound函數(shù)取得數(shù)組未維最大下標(biāo),再進行加或減,如:ReDim Preserve lxn(UBound(lxn)+1),增加一個元素。多維數(shù)組如:<br>
Redim Preserve lxn(10,UBound(lxn,2)+1)第2維增加1個元素。UBound(lxn,2)返回數(shù)組lxn的第2維長度。<br>
在DO…LOOP循環(huán)的中途退出用Exit Do語句。<br>
在函數(shù)過程的中途退出用Exit Function語句。<br>
重點筆記:對象的引用<br>
在VB中很重要的一部分內(nèi)容是對其他應(yīng)用程序所包含的對象的引用,如運行WORD的某些功能,EXCEL的某些功能等等,可以大大豐富程序的實用性,并使程序簡單化。<br>
這樣理解:如Word這個大"程序"也是由許許多多的小"控件"單位做成的,我們在自己的程序中也可隨意使用這些本屬于Word的"控件"對象,只要把Word的對象庫包含進來即可。要引用對象,1,"工程"菜單"引用"項,在出現(xiàn)的對話框中選中某個程序?qū)ο髱斓膹?fù)選框,(如Microsoft Excel 9.0 Object Library,是Excel的對象庫),2,如果不熟悉該對象庫的語法及有關(guān)知識,可去"視圖"菜單"對象瀏覽器"中看一看。3,在本程序代碼中創(chuàng)建該對象庫中某個對象實例,步驟是:<br>
1,聲明1個對象變量:如Dim x as object<br>
2,用Set語句和CreateObject函數(shù)創(chuàng)建對象,格式為:<br>
Set 對象變量=CreateObject("對象庫中某對象") 引號不能丟。"對象庫中某對象"都列出在對象瀏覽器中左邊"類"框里面。<br>
Set x = CreateObject("Excel.Application")<br>
上例x就成了Excel庫中1個Application對象的實例。<br>
也有另一種簡便法,就是直接用"set 對象變量=new 對象庫中某對象",和創(chuàng)建一般form或類模塊對象一樣,甚至可只用一句話"Dim 變量 as new 對象庫中對象名",如 dim x as new excel.application.<br>
3,這時就可以進行引用了,在引用完后,要及時退出以釋放內(nèi)存。用Quit和給對象變量賦nothing值的辦法。<br>
例下:<br>
Private Sub Command1_Click()<br>
Dim x As Object 聲明對象變量<br>
Dim lxn<br>
If Text1.Text <> "" And Text2.Text <> "" And Text3.Text <> "" Then<br>
Set x = CreateObject("Excel.Sheet") 創(chuàng)建對象<br>
lxn = x.Application.WorksheetFunction.Pmt _ 引用對象中的Pmt函數(shù)<br>
(Text1.Text / 12, Text2.Text, Text3.Text)<br>
MsgBox CCur(Abs(lxn)), , a<br>
x.Application.Quit<br>
Set x = Nothing<br>
End If<br>
End Sub<br>
對象變量的作用是在程序中用來引用對象,在聲明對象變量時,可把對象變量聲明為特定對象類(即只含1種對象類型,如聲明為按紐類Dim lxn as commandbutton),也可把對象變量聲明為一般對象類(即含多種類型,如Dim lxn as object),聲明為object使lxn可引用任何類型對象,象這種一般對象類有以下幾個:<br>
Form 可引用程序中的任何窗體;<br>
Control 可引用程序中的任何控件;<br>
object 可引用任何對象。<br>
在代碼中怎樣動態(tài)地創(chuàng)建對象:我們以前創(chuàng)建對象都是在設(shè)計時通過"工具箱"畫到窗體上去,而在代碼中也可以創(chuàng)建,運行時只要經(jīng)過這段代碼時就可創(chuàng)建了,這叫動態(tài)創(chuàng)建:首先,要確定動態(tài)創(chuàng)建的對象類型,如按紐文本框等等;其次,在現(xiàn)有窗體上建立一個樣本,將其index屬性設(shè)為0(其實就是控件數(shù)組),--動態(tài)創(chuàng)建的對象將照搬這個樣本;第三,在代碼中用"load 新對象"加載,并設(shè)"新對象.visible=true"就可以了。至于"新對象"的代碼名稱,就是樣本名加上新的數(shù)組下標(biāo),如樣本為text1(0),則新對象可以為text1(1)。第四,在代碼中對新對象作必要的屬性方法事件改動。<br>
注:動態(tài)創(chuàng)建的對象會包括樣本設(shè)計時的一切屬性方法事件,而對樣本自身在運行過程中的改變則不會照搬。<br>
以上是創(chuàng)建一般的對象,還有:窗體form對象及類模塊中對象(還有對象庫中對象)的創(chuàng)建如下:<br>
用NEW關(guān)健字及Set語句:格式:<br>
Dim 變量 as 現(xiàn)有窗體名(或類模塊名、或?qū)ο髱熘心硨ο螅?lt;br>
Dim lxn as form1<br>
Set 變量=New 現(xiàn)有窗體名(或類模塊,對象庫中對象名)<br>
Set lxn=new form1<br>
也可以簡單用 "Dim 變量 as new 現(xiàn)有窗體名"的方式。<br>
新建窗體后要用 窗體變量.show來顯示新窗體。注:new能動態(tài)創(chuàng)建窗體對象和類模塊對象,以及對象庫中對象。
<p>補充兩個邏輯運算符:EQV:兩邊表達式同真同假,結(jié)果為真,兩邊表達式一真一假,結(jié)果為假(是XOR的逆運算)<br>
IMP:第1個表達式為真第2個表達式為假時結(jié)果為假,其余都為真。<br>
循環(huán)結(jié)構(gòu)的一個補充(較重要):For Each 元素變量 in 數(shù)組或集合<br>
循環(huán)體<br>
next 元素變量<br>
這種結(jié)構(gòu)提供遍歷數(shù)組或集合中每個元素的方法(不用知道其中有多少個元素)。元素可用變量表示,如:<br>
For Each lxn in Form1.Controls<br>
lxn.left=lxn.Left+50<br>
Next lxn<br>
在代碼中創(chuàng)建對象:以前用數(shù)組的方法來動態(tài)創(chuàng)建對象,實際可不用數(shù)組,直接在代碼中創(chuàng)建,步驟:1。在(通用)中用WithEvents關(guān)健字聲明1個對象變量,格式:<br>
Private WithEvents 新對象名 as 控件類<br>
private withevents text1 as textbox<br>
WithEvents的作用是可在代碼窗口對新創(chuàng)建對象編寫事件過程。聲明后,你可以在代碼窗口的對象下拉框中找到這個對象變量。<br>
2,在事件過程中用<br>
Set 新對象=Controls.Add("vb.控件類","控件類")<br>
set text1=controls.add("vb.textbox","textbox")<br>
3,全面設(shè)置新對象的屬性:由于要全部設(shè)置,所以會較多(不象直接畫到窗體上那樣有"缺省屬性"),建議用with結(jié)構(gòu)來進行。<br>
例下:<br>
Private WithEvents command1 As CommandButton '代碼中創(chuàng)建對象</p>
<p>Private Sub Form_Load()<br>
Set command1 = Controls.Add("vb.commandbutton", "button") '這句是關(guān)健,用<br>
With command1 button也行。<br>
.Caption = "退出"<br>
.Visible = True<br>
.Left = 1000<br>
.Top = 1000<br>
.Width = 800<br>
.Height = 400<br>
End With<br>
End Sub<br>
怎樣檢查剪貼板上是否有文本?用判斷剪貼板clipboard對象的gettext中字符串長度是否大于0來檢查(如使"粘貼"菜單自動失效),如下例:<br>
If Len(Clipboard.GetText) > 0 Then<br>
mnupaste.Enabled = True<br>
Else<br>
mnupaste.Enabled=False<br>
End If<br>
在keydown事件中用組合鍵:如要求用戶輸入Ctrl+X鍵,則如下:<br>
Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)<br>
If KeyCode = vbKeyX And Shift = vbCtrlMask Then Unload Me<br>
End Sub<br>
shift的參數(shù)有vbAltMask(或4),vbCtrlMask(或2),vbShiftMask(或1),分別代表按下Alt,ctrl或shift鍵。</p>
<p align="center">
<br>
< <a href="050203.htm">上一頁</a>--<a href="http://www.xxby.com" target="_blank">華生小屋</a>--<a href="050205.htm">下一頁</a>
><br>
</td>
</tr>
</table>
</center>
</div>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -