關於Visual Basic 6.0類開發(下) (轉)

worldblog發表於2007-12-04
關於Visual Basic 6.0類開發(下) (轉)[@more@]關於 6.0類開發(下)
2001-02-03· 新天·yesky

  在Visual Basic 6.0類的技術與應用(上)(以下簡稱上文)中,我們討論了類的理論、類的建立和類的方法的實踐,實際上,類之所以能夠在工程中廣泛應用,最主要的一點是它可以非常方便的封裝許多程式設計需要的屬性,這不僅使員在一定程度上克服(ocx)和連結庫(dll)設計和中的複雜性,而且能夠提高程式程式碼的簡潔和高效性――本文將討論完整的類的程式設計,包括方法、屬性和基本事件。

  (一)類的屬性的特徵和定義

  類似於標準控制元件的屬性,類的屬性允許在指定的資料範圍內進行賦值,這些值被類內的各個程式碼部分所共享。屬性的獲得和傳遞需要經過 Property Let和Property Get語句進行程式設計,當然,我們首先需要在類中進行全域性或者模組級的相應變數定義。

  (二)事件的屬性和基本定義

  和窗體的事件類似,類也有兩個基本的事件,Class_Initialize(類載入時觸發)和Class_Tenate(類解除安裝時觸發),這兩個事件都是private的。實際上,我們完全可以忽略這兩個事件――只要你記得完善類的方法和屬性。

  類同樣可以定義自己的事件,它和方法的程式編寫格式類似,只不過需要WithEvents關鍵字進行引數宣告,而且事件不能有任何命名引數或者可選引數,它也沒有返回值。

  實際上,結構良好的方法和屬性完全可以替代結構複雜的類的事件。

  (三)類的方法、事件和屬性的程式設計例項

  本程式的設計目的是,透過類控制窗體中文字框的內容的全部大寫、小寫和逆向排序轉化。

  為了方便程式碼的書寫和,我在類中引用了列舉的程式設計方法。

  以下程式碼在類Class1:

  Option Explicit

   Private WithEvents myTXT As TextBox

   '方法的引數介面

   Public Enum sTYLE

    Lcaseit'小寫屬性

    Lbigit'大寫屬性

    Nlogoit'逆向排序屬性

   End Enum

  '自定義列舉,用來實現屬性的自動賦值

  Private mvarBiaozhi As sTYLE

  '實現列舉常量的連線

  Public Function dONE() As String'

  'DONE方法用來根據指定的列舉屬性,對

  '窗體文字框進行相應的字元轉化操作

  '並且返回轉化後的字串

  If mvarBiaozhi = Nlogoit Then

   dONE = StrReverse(myTXT)

   '逆向排序

  ElseIf mvarBiaozhi = Lcaseit Then

   dONE = LCase(myTXT)

   '強制小寫轉化

  Else

   dONE = UCase(myTXT)

   '強制大寫轉化

  End If

  End Function

  'DONE方法結束

  Public Property Let Biaozhi(ByVal vData As sTYLE)

   '獲得屬性的被賦的值

   mvarBiaozhi = vData

  End Property

  Public Property Get Biaozhi() As sTYLE

   '傳遞屬性值到類中

   Set Biaozhi = mvarBiaozhi

  End Property

  Public Sub Attach(itTEXT As TextBox)

   '連線類的方法

   Set myTXT = itTEXT

  End Sub

  Private Sub Class_Initialize()

   '本事件在類倍載入時啟用

   MsgBox "你好!本程式向您展示使用類的方法、屬性、事件進行程式設計的技術!"

  End Sub

  Private Sub Class_Terminate()

   '本事件在類被解除安裝時啟用

   MsgBox "你好!記得在Class_Terminate中填寫撤銷後的程式碼!"

  End Sub

  '類的程式碼全部結束

  (四)窗體程式碼的引用程式設計

  在窗體FORM1中新增文字控制元件TEXT1、下拉選單控制元件COMBO1、命令按鈕COMMAND1(CAPTION="開始轉化"),調整三個控制元件到適當位置。

  Dim myT As New Class1

  '類的引用

  Private Sub Form_Load()

   Combo1.Clear

   Combo1.AddItem "字串大寫轉化"

   Combo1.AddItem "字串小寫轉化"

   Combo1.AddItem "字串逆向排序"

   Combo1.ListIndex = 0

   '在列表框中新增屬性選項

  End Sub

  Private Sub Command1_Click()

   '當命令按鈕按下時啟用類

   myT.Attach Text1

   '方法引數聯接

    Case Combo1.ListIndex

    Case 0

      myT.Biaozhi = Lbigit

    Case 1

      myT.Biaozhi = Lcaseit

    Case 2

      myT.Biaozhi = Nlogoit

   End Select

   '根據列表框的選擇,給類的Biaozhi屬性賦值

   '注意,在程式設計環境中,上述屬性值自動新增

   Text1.Text = myT.dONE

   '返回排序結束後的字串

  End Sub

  Private Sub Form_Unload(Cancel As Integer)

   Set myT = Nothing

  End

  '良好的程式設計習慣

  End Sub

怎麼樣,我們的程式碼看起來如此的簡潔,這種感覺就象是在使用一個控制元件,不僅可以隨心所欲的呼叫,而且方便的使用了vb的自動提示功能。

  (五)關於類的程式設計技術的總結

  嚴格的說,類是vb程式設計中的一個相當有用的技術,同樣也是學習和掌握中的難點,類在大型軟體工程中應用是非常廣泛和卓有成效的,但是,在小型中,為了提高軟體的和程式碼的清晰度,應該避免使用較多的類模組,控制元件和聯接庫,取代以標準模組。

  本文所示例的程式碼比較簡單,卻覆蓋了關於模組程式設計技術的方方面面,希望初學者能夠有所借鑑,也希望程式設計師能夠共同探討。我們應該相信,無論多麼複雜的高樓大廈都是由普普通通的方磚堆砌而成的,同樣,無論所麼複雜的軟體工程都是由基本的程式語句所構成的,程式設計愛好者、程式設計師和分析員的區別只是在於,用同樣的程式語句構建的程式的不同而已。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988075/,如需轉載,請註明出處,否則將追究法律責任。

相關文章