關於Visual Basic 6.0類開發(上) (轉)
關於Visual Basic 6.0類開發(上) (轉)[@more@]關於 6.0類開發(上)
2001-02-03· 新天·yesky
對員和愛好者來說,VB中類的技術是學習中的一個難點,在大型的開發過程中,模組(Moudle)、(Active ocx)、連結庫(Active dll)和類(Class moudle)構成了化、高效化的軟體工程,而類的技術是控制元件和連結庫技術的基礎,因此掌握類的理論和程式設計方法是非常有意義的。
(一)類的基本定義和應用概述;
類是包含了方法、屬性、資料成員的高階程式碼模組,它既在模組的範疇之內,又是一個沒有圖形介面的Active ocx,程式設計師可以象使用控制元件一樣使用它,但卻不能看到它,值得注意的是,類是不能繼承的。
類能夠使我們高效的完成對某一個或者某幾個特定的的複雜操作,物件的動作就是類的方法,物件的屬性就是類的屬性過程。相對而言,如果程式設計的物件是一組事物,那麼,我們採用標準模組的方式是非常合適的,在下列兩種情況下,應該使用類進行程式碼處理:
(1)建立大量性質相近的物件;
(2)提高程式碼的封裝性。
類的建立非常簡單,在進行程式碼編寫的時候,在“工程”選單中選擇“新增類模組”專案,就可以新增一個空白的類。
類一般以.cls作為副檔名儲存。
(二)類的方法的實現;
類的方法類似於動態連結庫的介面,它能夠接受其他窗體程式碼的指定型別引數,並且傳遞到類中。一般來說類的方法是能夠指定是否有返回值的。它在類中通常是一個public過程。請看下面的程式碼示例,它使一個密碼框拒絕非字母的輸入:
(1)類cls的程式碼;
Option Explicit'變數檢查
Private WithEvents mytxt As TextBox
'本類中的方法接受和控制一個text密碼框
Dim isNUM As Boolean
'類的模組級變數
Public Sub Attach(itTEXT As TextBox)
'接受外部變數到mytxt中
Set mytxt = itTEXT
End Sub
Private Sub mytxt_KeyUp(KeyCode As Integer, Shift As Integer)
isNUM = (KeyCode >= 65) And (KeyCode <= 90)
'測試密碼框的鍵盤輸入是否是英文字母
If isNUM = False Then
Beep
mytxt.Text = ""
'如果輸入不是英文字母則響鈴並且清空密碼框內容
MsgBox "字元輸入!"
End If
De.Print mytxt.Text
'輸出密碼框內容
End Sub
'類的程式碼結束
(2)類的引用;
已經編寫完成的類可以經過兩種格式進行引用,第一種方式:Private(public或者dim) myCLS(指定的類名) As New cls(編寫完成的類名);第二種方式較多用於程式編寫風格較“老”的程式設計師:首先在窗體程式碼中進行模組級宣告――Dim myCLS As cls,然後在具體程式碼過程中進行具體定義―― Set mycls = New cls。這兩種方式的和程式碼的簡潔性方面可能會有所差別,但在筆者的程式設計實踐中,並沒有什麼特別的感覺,不過我較多使用第一種方式,因為它書寫起來更加方便。另外,在程式碼結束的時候,使用 Set myCLS = Nothing來取消類的資源佔用是一種非常好的程式設計習慣。
在窗體form1中(窗體有一個密碼框控制元件text1,passworldchar="*")新增以下程式碼:
Option Explicit
Private myCLS As New cls
'引用cls
Private Sub Form_Load()
myCLS.Attach Text1
'啟動類
End Sub
'在程式碼結束時記得釋放資源
Private Sub Form_Unload(Cancel As Integer)
Set myCLS = Nothing
End
End Sub
本文程式碼展示了類的方法的程式碼編寫過程和方式(儘管它和類的事件非常相似),它的效果是,如果密碼框中被輸入了非字母,則系統振鈴,並刪除密碼框中的原來的資料――在一定程度上保護密碼。
類的方法可以不需要任何引數,這一點類似一個public的函式或者過程,它也是類中使用最廣泛的。在下一篇文章中我將討論,如何使用類的屬性、事件和方法進行綜合程式設計。(未完待續)
2001-02-03· 新天·yesky
對員和愛好者來說,VB中類的技術是學習中的一個難點,在大型的開發過程中,模組(Moudle)、(Active ocx)、連結庫(Active dll)和類(Class moudle)構成了化、高效化的軟體工程,而類的技術是控制元件和連結庫技術的基礎,因此掌握類的理論和程式設計方法是非常有意義的。
(一)類的基本定義和應用概述;
類是包含了方法、屬性、資料成員的高階程式碼模組,它既在模組的範疇之內,又是一個沒有圖形介面的Active ocx,程式設計師可以象使用控制元件一樣使用它,但卻不能看到它,值得注意的是,類是不能繼承的。
類能夠使我們高效的完成對某一個或者某幾個特定的的複雜操作,物件的動作就是類的方法,物件的屬性就是類的屬性過程。相對而言,如果程式設計的物件是一組事物,那麼,我們採用標準模組的方式是非常合適的,在下列兩種情況下,應該使用類進行程式碼處理:
(1)建立大量性質相近的物件;
(2)提高程式碼的封裝性。
類的建立非常簡單,在進行程式碼編寫的時候,在“工程”選單中選擇“新增類模組”專案,就可以新增一個空白的類。
類一般以.cls作為副檔名儲存。
(二)類的方法的實現;
類的方法類似於動態連結庫的介面,它能夠接受其他窗體程式碼的指定型別引數,並且傳遞到類中。一般來說類的方法是能夠指定是否有返回值的。它在類中通常是一個public過程。請看下面的程式碼示例,它使一個密碼框拒絕非字母的輸入:
(1)類cls的程式碼;
Option Explicit'變數檢查
Private WithEvents mytxt As TextBox
'本類中的方法接受和控制一個text密碼框
Dim isNUM As Boolean
'類的模組級變數
Public Sub Attach(itTEXT As TextBox)
'接受外部變數到mytxt中
Set mytxt = itTEXT
End Sub
Private Sub mytxt_KeyUp(KeyCode As Integer, Shift As Integer)
isNUM = (KeyCode >= 65) And (KeyCode <= 90)
'測試密碼框的鍵盤輸入是否是英文字母
If isNUM = False Then
Beep
mytxt.Text = ""
'如果輸入不是英文字母則響鈴並且清空密碼框內容
MsgBox "字元輸入!"
End If
De.Print mytxt.Text
'輸出密碼框內容
End Sub
'類的程式碼結束
(2)類的引用;
已經編寫完成的類可以經過兩種格式進行引用,第一種方式:Private(public或者dim) myCLS(指定的類名) As New cls(編寫完成的類名);第二種方式較多用於程式編寫風格較“老”的程式設計師:首先在窗體程式碼中進行模組級宣告――Dim myCLS As cls,然後在具體程式碼過程中進行具體定義―― Set mycls = New cls。這兩種方式的和程式碼的簡潔性方面可能會有所差別,但在筆者的程式設計實踐中,並沒有什麼特別的感覺,不過我較多使用第一種方式,因為它書寫起來更加方便。另外,在程式碼結束的時候,使用 Set myCLS = Nothing來取消類的資源佔用是一種非常好的程式設計習慣。
在窗體form1中(窗體有一個密碼框控制元件text1,passworldchar="*")新增以下程式碼:
Option Explicit
Private myCLS As New cls
'引用cls
Private Sub Form_Load()
myCLS.Attach Text1
'啟動類
End Sub
'在程式碼結束時記得釋放資源
Private Sub Form_Unload(Cancel As Integer)
Set myCLS = Nothing
End
End Sub
本文程式碼展示了類的方法的程式碼編寫過程和方式(儘管它和類的事件非常相似),它的效果是,如果密碼框中被輸入了非字母,則系統振鈴,並刪除密碼框中的原來的資料――在一定程度上保護密碼。
類的方法可以不需要任何引數,這一點類似一個public的函式或者過程,它也是類中使用最廣泛的。在下一篇文章中我將討論,如何使用類的屬性、事件和方法進行綜合程式設計。(未完待續)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988074/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Visual Basic 6.0(VB6.0)詳細安裝過程
- Visual Basic for ApplicationAPP
- 關於 Laravel6.0 開發中的簡單小問題解答Laravel
- 關於Visual Studio快捷鍵整理
- 自問自答系列——關於 Laravel6.0 開發中的簡單小問題解答Laravel
- 關於上海哪裡有開發具票#怎麼開如何開#
- 基於Microsoft visual c++ 6.0實現客戶端HTTP的Get、Post請求ROSC++客戶端HTTP
- 關於上海哪裡有開房租費發票
- 微軟適用於 Visual Studio 的 Edge 開發者工具微軟
- 開發了一個基於thinkphp6.0的快速開發後臺管理系統PHP
- 關於開發檢視
- 關於上海區哪裡有開完稅證發票
- Visual C++ 6.0專案檔案型別簡介C++型別
- 關於.NET 6.0 Crossgen2的一些研究ROS
- 使用Visual Studio 2022開發前端前端
- 搭建基於 Laravel 6.0 - Laravels (swoole) 模組化開發架子(Layui 後臺)LaravelUI
- 關於:laravel開發環境Laravel開發環境
- 對於Web開發最棒的22個Visual Studio Code外掛Web
- 關於Hexo6.0搭建個人部落格(高階篇)Hexo
- 關於上饒哪裡可以開具住宿發票-開票服務大廳-上饒本地寶
- 基於 Traefik 的 Basic Auth 配置
- 基於 TP6.0 和 vue 開發前後端分離管理後臺Vue後端
- 《Visual Studio 2017 Web 開發》截圖Web
- [永久開源] EasyAdmin - 基於 ThinkPHP6.0+Layui 的快速開發的後臺管理系統。PHPUI
- 關於成都開具玻璃發票?
- 關於南京開具玻璃發票?
- 關於太原開手撕發票
- C++ Qt開發:使用關聯容器類C++QT
- 關於上海哪裡有開票“怎麼開如何開”
- 驅動開發:配置Visual Studio驅動開發環境開發環境
- 一對一直播開發完成之後關於程式上架的部分
- 關於上海哪裡可以開餐飲費發票-上海本地寶
- 微軟開發工具 Visual Studio 官網微軟
- 徹底解決關於CSocket類的Receive超時的問題(轉)
- 關於SAP的故事(轉)
- 關於福州開手撕發票-福州開票
- 關於北京開手撕發票-北京開票
- 關於南京開手撕發票-南京開票
- 關於iOS開發中copy的使用iOS