程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB6 >> vb對象的使用(一)

vb對象的使用(一)

編輯:VB6

使用對象

在Visual Basic中創建應用程序之際,也就是和對象打交道之時了。可以使用Visual Basic提供的對象, 比如控件、窗體和數據訪問對象。也可以在一個Visual Basic應用程序內部控制另一個應用程序對象。甚至還可建立自己的對象,定義它們的屬性和方法。
對象是什麼
對象是代碼和數據的組合,可以作為一個單位來處理。對象可以是應用程序的一部分,比如可以是控件或窗體。整個應用程序也是一個對象。下表列出了在Visual Basic中可能用到的幾種類型的對象:

對象從何而來Visual Basic 中的每個對象都是用類定義的。用餅干模子和餅干之間的關系作比喻,就會明白對象和它的類之間的關系。餅干模子是類。它確定了每塊餅干的特征,比如大小和形狀。用類創建對象。對象就是餅干。
下面再用兩個例子進一步說明Visual Basic中類與對象之間的關系。
1.在Visual Basic的“工具箱”上,控件代表類。直到在窗體上畫出這些被稱作控件的對象為止,它們實際上並不存在。在創建控件之時也就是在復制控件類,或建立控件類的實例。這個類實例就是應用程序中引用的對象。
2.在設計時操作的窗體是類。在運行時,Visual Basic 建立窗體的類實例。“屬性”窗口顯示Visual Basic應用程序中的對象的類和Name屬性,如圖5.8所示。

把對象看作是類的原原本本的復制品,從而建立所有對象。一旦它們以單個對象的形式存在,屬性就可改變。例如,如果在窗體上畫了三個命令按鈕,則每個命令按鈕對象都是命令按鈕類的實例。 每個對象都具有一組由類定義的公共的特征和功能(屬性、方法和事件)。但是,每個對象都有自己的名字,都能分別設置成有效或無效,都能放在窗體的不同位置,等等。
為簡單起見,本章之外的大部分內容將不過多引用對象的類。例如,只要記住術語“ListBox 控件”意味著“列表框類的一個實例”。

用對象能做什麼
對象可提供現成代碼,省卻書寫麻煩。例如,可以自己創建打開文件和保存文件的對話框,但實際上大可不必。取而代之的是利用Visual Basic提供的 CommonDialog 控件(一個對象)。雖然用戶也能撰寫日程管理和資源管理的程序,但也大可不必。在此亦可使用 Microsoft Project 提供的Calendar、Resources 和 Task 對象。

Visual Basic 可以組合來自其它來源的對象
Visual Basic提供了把來自不同資源的對象組合起來的工具。現在可把Visual Basic 的各種強有力的特性以及支持自動化(先前以 OLE 自動化聞名)的應用程序結合起來,建立定制的解決方法。自動化是部件對象模式(COM) 的一個特性,它是應用程序使用的工業標准,用來陳列對象以開發工具和其它應用程序。
可把Visual Basic內部的控件結合在一起,也可使用其它應用程序提供的對象。考慮把下列對象放入Visual Basic窗體: 1.Microsoft Excel Chart 對象
2.Microsoft Excel Worksheet 對象
3.Microsoft Word Document 對象
可用這些對象建立如圖 5.9 所示的支票簿應用程序。由於不必書寫代碼,重建已由 Microsoft Excel 和 Word 等對象提供的功能,因而節省很多時間。

使用對象初步
Visual Basic對象支持屬性、方法和事件。在Visual Basic中,稱對象的數據(設置和屬性)為屬性,稱各種可在對象上操作的過程為方法。事件是可被對象識別的動作,例如單擊鼠標和按下鍵盤鍵,還可編寫代碼來響應事件。
改變對象的屬性就可改變對象的特性。用收音機打比方,收音機的一個屬性是音量。用Visual Basic的行話來說,就是收音機有個“Volume”屬性,改變其值就可調節音量大小。假定收音機的音量值可設置在 0 到 10 之間。 如果能夠通過Visual Basic控制收音機,則可在一個過程中寫代碼,把“Volume”屬性值從 3 提高到 5,使聲音更響一些:
Radio.Volume = 5
除了屬性以外,對象還有方法。方法和屬性都是對象的一部分。一般說來,方法就是要執行的動作,而屬性就是要設置或檢索的特性。以撥號打電話為例。可以說電話有一個“撥號”方法,撥一個 7 位電話號碼的語法就是:
Phone.Dial 5551111
對象還有事件。當對象的某方面有變動時就觸發了事件。例如,收音機可能有“VolumeChange”事件。電話可能有“Ring”事件,等等。

用屬性控制對象
個別屬性隨著可以設置和取得它們的值的時間不同而不同。有的屬性可在設計時設置。可在“屬性”窗口設置這些屬性的值而無需編寫任何代碼。而有的屬性在設計時是不可用的;因此,這些屬性只有通過代碼在運行時設置。
在運行時可以設置並可獲得值的屬性叫做讀寫屬性。在運行時只能讀取的屬性叫做只讀屬性。

設置屬性值
在想改變對象的外觀或特性時設置屬性的值。例如,通過改變 TextBox 控件的 Text 屬性,就可以改變文本框的內容。
用下列語法設置屬性值:
object.property = expression
下面是設置屬性的語句:
Text1.Top = 200 ' 設置 Top 屬性為 200 缇(twips)。
Text1.Visible = True ' 顯示文本框。
Text1.Text = "hello" ' 在文本框中顯示 "hello"。

讀取屬性值
想要在代碼執行附加動作(例如給另一個對象賦值)之前得知對象的狀態,這時就要讀取屬性值。例如,在運行代碼之前能夠返回 TextBox 控件的 Text屬性值,以確定文本框的內容,這裡,代碼可能改變值。
在大多數情況下可以用以下語法獲得屬性值:
variable = object.property
屬性值可以作為較復雜的表達式的一部分,而不必將屬性賦予變量。下面的代碼計算控件數組中的一個新成員的 Top 屬性,它等於前一個成員的Top 屬性加上 400。
Private Sub cmdAdd_Click ()
' [語句]
optButton (n).Top = optButton (n-1).Top + 400
' [語句]
End Sub
提示 如果不只一次使用一個屬性值,而且將這個值存儲到一個變量中,則代碼執行起來會更快。

用方法來執行動作
方法能夠影響屬性值。例如在用收音機打比方的例子中,SetVolume 方法改變了 Volume 屬性。與此類似,在Visual Basic中列表框具有 List 屬性,而 Clear 和 AddItem 方法可以改變這一屬性。

在代碼中使用方法
在代碼中使用方法時如何書寫語句,這取決於該方法要求多少參數,以及是否返回一個值。如果方法不要求參數,則用以下語法編寫代碼:
object.method
下例中,用 Refresh 方法重畫圖片框:
Picture1.Refresh ' 強迫重畫控件。
有些方法,如上面的 Refresh ,既無參數又不返回值。
如果方法要用多個參數,就用逗號將它們分開。例如, Circle 方法就要用代表窗體上圓的位置、半徑和顏色的參數:
' 畫一個半徑為 1200 缇的藍色圓。
Form1.Circle (1600, 1800), 1200, vbBlue
如果要保存方法的返回值,就必須把參數用括號括起來。例如, GetData 方法從剪貼板返回一張圖片:
Picture = Clipboard.GetData (vbCFBitmap)
如果沒有返回值,則參數不會出現在括號中。例如,AddItem 方法沒有返回值。
List1.AddItem "yourname" ' 在列表框中添加 "yourname"。
詳細信息 關於Visual Basic對所有方法提供的語法和參數,請參閱《VisualBasic 6.0語言參考手冊》。

對象之間的關系
在同一窗體上放置兩個命令按鈕時,它們是兩個具有不同 Name 屬性設置值(Command1 和 Command2)的分開的對象,但都分享同一個類——命令按鈕。
它們也共享這樣一個特征,即它們在同一窗體上。在本章前面已看到,窗體上的控件也包含在窗體中。這就把控件放在一個層次上。要引用控件就必須先引用窗體,就如同打電話撥號一樣,首先要撥國家/地區號碼或區域號碼,然後再撥具體的電話號碼。
這兩個命令按鈕也共享這樣一個特征,即它們都是控件。所有控件都具有公共特性,使它們不同於窗體以及Visual Basic環境中的其它對象。以下章節中將說明Visual Basic如何用集合使相關的對象分組。

對象的層次
對象層次提供了一種組織結構,它決定了對象間的相互關系以及訪問它們的方法。在大多數情況下不必考慮Visual Basic對象的層次。但是:
1.在操作其它應用程序的對象時,應當熟悉那個應用程序的對象層次。關於定位對象層次的信息,請參閱第十章“用部件編程”。
2.在使用數據訪問對象時,應當熟悉數據訪問對象層次。在Visual Basic中,一個對象包含其它對象的一般情況時有發生。下面我們要詳細討論。

使用對象集合
集合對象有自己的屬性和方法。對象集合中的對象作為集合的成員被引用。集合中的每個成員從 0 開始順次編號;這就是成員的索引號。例如,控件集合包含已給定窗體上的所有控件 ,如圖 5.10 所示。如果對集合中的所有對象都必須執行相同操作,則可用集合簡化代碼。

例如,下列代碼遍歷控件集合,並在列表框中列出每個成員的名字。
Dim MyControl as Control
For Each MyControl In Form1.Controls
'把每個控件的名字送到列表框。
List1.AddItem MyControl.Name
Next MyControl

應用集合成員的屬性與方法
有兩種通用方法可用來對集合對象成員尋址:
1.指定成員的名稱。以下兩個表達式等價:
Controls ("List1")
Controls!List1
2.利用成員的索引號:
Controls (3)
一旦能夠從整體上對全體成員尋址,而且還能夠個別地對單個成員尋址,就可用下面隨便一種方式應用屬性和方法:
'將 ListBox 控件的 Top 屬性設置為 200。Controls!List1.Top = 200
-或者-
Dim MyControl as Control
For Each MyControl In Form1.Controls ()
'將每一個成員的 Top 屬性設置為 200。
MyControl.Top = 200
Next MyControl

包含其它對象的對象
在Visual Basic中,一些對象包含其它對象。例如,窗體通常包含一個或數個控件。把一個對象當作其它對象的容器,這樣做的好處在於,在代碼中引用容器即可明了要使用哪個對象。例如,圖 5.11 說明在一個應用程序中可有兩個不同的窗體,一個用來輸入應付帳交易,另一個用來輸入應收帳交易。

兩個窗口可以有名為 IstAcctNo 的列表框。通過引用包含列表框的窗體就可准確指定要使用的列表框: frmReceivable.lstAcctNo.AddItem 1201
-或者-
frmPayable.lstAcctNo.AddItem 1201

Visual Basic 中的公共集合
在Visual Basic中一個對象包含其它對象的一般情況時有發生。下表簡要敘述Visual Basic中最常用的集合。

在Visual Basic中也可實現對象控制。
詳細信息 關於對象容器的詳細信息,請參閱第八章“再論編程”中的“使用集合替代數組”。關於打印機集合的信息,參閱第十二章“使用文本和圖形”。關於窗體集合和控件集合的詳細信息,請參閱《Visual Basic 6.0語言參考手冊》。

容器屬性在窗體內,可用 Container 屬性改變對象的容器。以下控件可包含其它控件:
1.Frame 控件
2.PictureBox 控件
3.ToolBar 控件(僅對專業版和企業版而言)
如何在窗體上將命令按鈕從一個容器移動到另一個容器,該例對此作了演示。打開新工程,並在窗體上畫出 Frame 控件、PictureBox 控件和CommandButton 控件。
下列代碼在窗體單擊事件中,這些代碼使計數器變量增加,並通過 SelectCase 循環使命令按鈕在容器之間移動。
Private Sub Form_Click ()
Static intX as Integer
Select Case intX
Case 0
Set Command1.Container = Picture1
Command1.Top= 0
Command1.Left= 0

Case 1
Set Command1.Container = Frame1
Command1.Top= 0
Command1.Left= 0

Case 2
Set Command1.Container = Form1
Command1.Top= 0
Command1.Left= 0

End Selectint
X = intX + 1
End Sub
詳細信息 請參閱《Visual Basic 6.0語言參考手冊》中的“Container 屬性”。

對象之間的通訊
除了在Visual Basic中使用和創建對象外,還可與其它應用程序通訊並在自己的應用程序中操作其它應用程序的對象。在應用程序之間共享數據的能力是 Microsoft Windows 操作系統的關鍵性能之一。有了Visual Basic,與其它應用程序進行通訊變得極為靈活。
詳細信息 關於使用其它應用程序的對象及其通訊的詳細信息,請參閱第十章“用部件編程”。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved