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

VisualBasic對象使用二

編輯:VB綜合教程

  創建對象
  創建對象的最簡單方法是在“工具箱”中雙擊控件。但是,對VisualBasic中的所有可用對象以及來自其它應用程序的所有可用對象,要想充分體現它們的優勢,可在運行時用VisualBasic的可編程性能創立對象。
  1.用對象變量創建對象引用
  2.用類模塊“從零開始”創建自己的對象
  3.用集合對象創建自己的集合
  詳細信息在其它章節將會介紹如何訪問對象。例如,在第十章“用部件編程”中將討論CreateObject和GetObject函數。
  
  使用對象變量
  除了存儲值以外,變量可引用對象。如同給變量賦值一樣,基於下列相同理由,可把對象賦給變量:
  1.變量名往往比變量所含的值(或者,在此情況下,所含值就是它們引用的對象)短而好記。
  2.在運行代碼時,為了引用其它對象,應改變變量。
  3.引用包含對象的變量比反復引用對象本身有更高的效率。
   使用對象變量與使用常規變量一樣,只不過多了把對象賦予變量這一步:
  4.首先聲明變量:
  DimvariableAsclass
  5.然後把對象賦予變量:
  Setvariable=object
  
  聲明對象變量
  聲明對象變量的方法和聲明其它變量一樣,要用Dim、ReDim、Static、Private和Public。僅有的不同在於可選的New關鍵字和Class參數,本章後面將會對New關鍵字和Class參數都作介紹。語法是:
  {Dim|ReDim|Static|Private|Public}variableAs[New]class
  例如,可以聲明一個對象變量,它引用應用程序中的被稱做frmMain的窗體:
  DimFormVarAsNewfrmMain  '聲明一個類型為frmMain
       '的對象變量。
  也可以聲明一個對象變量,它引用應用程序中的任何窗體:
  DimanyFormAsForm   '一般窗體變量。
  類似地,可以聲明一個對象變量,它能夠引用應用程序中的任何文本框:
  DimanyTextAsTextBox  '可以引用任何文本框
       '(但只能是一個文本框)。
  還可以聲明一個對象變量,它能夠引用任何類型的控件:
  DimanyControlAsControl  '一般控件變量。
  注意,可以聲明一個引用應用程序中的指定窗體的窗體變量,但不能聲引用特定控件的控件變量。可以聲明能夠引用控件的特定類型(如TextBox或列表框)的控件變量,但不是引用那種類型的一個特定控件(如txtEntry或List1)。但是,可把特定的控件賦予那種類型的變量。例如,對於具有列表框lstSample的窗體可以這樣編碼:
  DimobjDemoAsListBox
  SetobjDemo=lstSample
  
  賦值對象變量
  用Set語句將對象賦予對象變量:
  Setvariable=object
  無論何時,只要希望對象變量引用對象,就可使用Set語句。
  有時可用對象變量,尤其可用控件變量直接縮短要鍵入的代碼。例如,原來的代碼是這樣的:
  IffrmAccountDisplay!txtAccountBalance.Text<0Then
    frmAccountDisplay!txtAccountBalance.BackColor=0
    frmAccountDisplay!txtAccountBalance.ForeColor=255
  EndIf
  如果使用控件變量,程序就可顯著縮短:
  DimBalAsTextBox
  SetBal=frmAccountDisplay!txtAccountBalance
  IfBal.Text<0Then
    Bal.BackColor=0
    Bal.ForeColor=255
  EndIf
  
  特定對象類型與一般對象類型
  特定的對象變量必須引用特定類型的對象或類。特定的窗體變量只能引用應用程序中的一個窗體(盡管可在該窗體的諸多實例中引用其中之一)。與此相似,特定的控件變量只能引用應用程序中的特定類型的控件,比如TextBox或者列表框。請看一例,打開新的工程,在窗體中放置一文本框。將下列代碼添加到窗體中:
  PrivateSubForm_Click()
    DimanyTextAsTextBox
    SetanyText=Text1
    anyText.Text="Hello"
  EndSub
  運行應用程序並單擊窗體。文本框的Text屬性將變成"Hello"。
  一般對象變量可在多種特定對象類型中引用其中一種。例如,一般窗體變量可引用應用程序中的任何窗體;一般控件變量可引用應用程序中任何窗體上的任何控件。請看一例,打開新的工程並在窗體中按任意順序放置若干Frame、Label和CommandButton控件。將下列代碼添加到窗體中:
  PrivateSubForm_Click()
    DimanyControlAsControl
    SetanyControl=Form1.Controls(3)
    anyControl.Caption="Hello"
  EndSub
  運行程序並單擊窗體。剛才放入窗體中的第三個控件的標題將變成"Hello"。
  VisualBasic中有四種一般對象:
  
  在不知道變量運行時是否引用特定類型的對象時,一般對象變量是很有用的。例如,如果要書寫代碼,並使之在應用程序的任何窗體中都可操作,則必須使用一般窗體變量。
  注意由於應用程序中只能有一個MDI窗體,因此不必使用一般的MDIForm類型。無論何時,一旦需要聲明引用MDI窗體的窗體變量,就可用特定的MDIForm類型(或者是MDIForm1,或者是對MDI窗體的Name屬性指定的任何名稱),而不用一般的MDIForm類型。實際上,由於在運行應用程序前,VisualBasic就能夠決定引用特定窗體類型的屬性和方法,因此總應使用特定的MDIForm類型。
  只是出於完整性的考慮才提供一般的MDIForm類型;在VisualBasic的今後版本中,單個應用程序中可以擁有多個MDI窗體,這將是非常有用的。
  
  作為對象的窗體
  窗體最常用到的是構造應用程序界面,但也常常是應用程序中其它模塊調用的對象。窗體與類模塊關系密切。兩者之間的主要區別在於,窗體是可視對象,而類模塊卻沒有可視界面。
  
  添加自定義方法和屬性
  可對窗體添加自定義方法和屬性,並可從應用程序中的其它模塊訪問它們。為了創建窗體的新方法,請添加用Public聲明的過程。
  '自定義Form1的方法。
  PublicSubLateJobsCount()
  .
  .   '<statements>
  .
  EndSub
  可用下面這個語句從其它模塊調用LateJobsCount過程:
  Form1.LateJobsCount
  創建窗體的新屬性就像在窗體模塊中聲明一個公用變量那樣簡單:
  PublicIDNumberAsInteger
  可用下面兩個語句從其它模塊設置和返回Form1的IDNumber值:
  Form1.IDNumber=3
  Text1.Text=Form1.IDNumber
  也可用Property過程向窗體添加自定義屬性。
  詳細信息第九章“用對象編程”提供了Property過程的詳細材料。
  注意不必加載窗體就可調用窗體的變量或自定義方法,還可設置窗體的自定義屬性。於是,不必將窗體加載到內存就可運行有關窗體的代碼。同樣,引用控件而不引用其屬性或方法時也不會加載窗體。
  
  使用New關鍵字
  用New關鍵字創建新對象,這個對象被視為它的類所定義的對象。可用New創建集合、窗體的實例以及類模塊中定義的類。
  
  在窗體上使用New關鍵字
  在設計時創建的窗體是類。可用New關鍵字創建這個類的新實例。為了看到這一工作過程,請在窗體上畫出一個命令按鈕和其它幾個控件。在“屬性”窗口中將窗體的Name屬性設置成Sample。在命令按鈕的Click事件過程中添加下列代碼:
  DimxAsNewSample
  x.Show
  運行應用程序,並單擊命令按鈕數次。把最前面的窗體移到一邊。因為窗體是具有可視界面的類,所以可看到附加副本。每個窗體在相同位置上都有相同控件,而且這些位置也正是窗體在設計時的位置。
  注意要使窗體變量和已加載窗體的實例一直存在,請用Static或Public變量,而不要用局部變量。
  也可將New關鍵字與Set語句並用。請試用命令按鈕的Click事件過程中的代碼:
  DimfAsForm1
  Setf=NewForm1
  f.Caption="hello"
  f.Show
  將New關鍵字和Set語句並用會加快運行速度,因此,這種方法值得推薦。
  
  對其它對象使用New關鍵字
  可用New關鍵字從類模塊中定義的類創建集合和對象。試用下例說明這一工作過程。
  此例說明了New關鍵字是如何創建類的實例的。打開新工程,在Form1上畫出一個CommandButton控件。從“工程”菜單中選擇“添加類模塊”命令,從而在工程中添加一個類模塊。設置類模塊的Name屬性為ShowMe。
  Form1中的下列代碼創建了類ShowMe的新實例,還調用了包含在類模塊中的過程。
  PublicclsNewAsShowMe
  PrivateSubCommand1_Click()
    SetclsNew=NewShowMe
    clsNew.ShowFrm
  EndSub
  類模塊中的ShowFrm過程創建類Form1的新實例,顯示窗體,然後使其最小化。
  SubShowFrm()
    DimfrmNewAsForm1
    SetfrmNew=NewForm1
    frmNew.Show
    frmNew.WindowState=1
  EndSub
  為了應用這個例子,請運行應用程序並單擊命令按鈕數次。在創建ShowMe類的每一個新實例時將看到最小化的窗體圖標出現在桌面上。
  詳細信息關於利用New創建對象的信息,請參閱第十章“用部件編程”。
  
  New關鍵字的限制
  下表說明不能用New關鍵字做什麼。
  
  
  釋放對對象的引用
  每個對象都使用內存和系統資源。當不再使用對象時及時釋放這些資源,這是良好的編程習慣。
   用Unload從內存中卸載窗體或控件。
   用Nothing釋放對象變量占用的資源。用Set語句將Nothing賦予對象變量。
  詳細信息請參閱《VisualBasic6.0語言參考手冊》中的“Unload事件”和“Nothing”部分。
  
  給過程傳遞對象
  可在VisualBasic中將對象傳遞給過程。在下面的代碼例子中假定窗體中有一CommandButton控件:
  PrivateSubCommand1_Click()
     '調用Demo子過程,並將窗體傳遞給它。
    DemoForm1
  EndSub
  
  PrivateSubDemo(xAsForm1)
     '在屏幕中使窗體居中。
  x.Left=(Screen.Width-x.Width)/2
  EndSub
  可以通過引用把對象傳遞給參數,然後在過程內將參數設置成新對象。為了看到這一工作過程,打開工程並插入第二個窗體。在每個窗體中安放一個圖片框。需要改變的屬性設置值如下表所示:
  
  Form1_Click事件過程調用Form2中的GetPicture過程,並把一個空的圖片框傳遞給它。
  PrivateSubForm_Click()
  Form2.GetPicturePicture1
  EndSub
  Form2中的GetPicture過程把Form2上的圖片框的Picture屬性賦予Form1上的空圖片框。
  PrivateobjXAsPictureBox
  PublicSubGetPicture(xAsPictureBox)
     '將傳遞進來的圖片框賦予對象變量。
     SetobjX=x
     '將Picture屬性值賦予Form1的圖片框。
     objX.Picture=picture2.Picture
  EndSub
  為了應用這個例子,請運行程序並單擊Form1。在Form1的圖片框中將看到出現了Form2中的圖標。
  詳細信息上述主題意在概述對象。更詳細內容,請參閱第九章“用對象編程”和第十章“用部件編程”。

->

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