原創文章,歡迎支持
在VB的使用過程中,較爲高級和較爲具有兼容性的編程方式是創建類模塊。
比如創建了一個數組創建類,專門用來創建特定類型的數組,它被存在一個“ArrayHelper.cls”文件中。代碼如下:
Option Explicit
'///////////////////
'@@summary
'@@require
'@@reference
'@@license
'@@author
'@@create
'@@modify
'////////////////////
'-------------------
' 初始化
'-------------------
Private Sub Class_Initialize()
End Sub
'--------------------
' 銷燬
'--------------------
Private Sub Class_Terminate()
End Sub
'///////////////////////////
'//
'// 公有方法
'//
'///////////////////////////
Public Function StringArray(ParamArray arr()) As String()
Dim a() As String
Dim i As Integer
ReDim a(UBound(arr))
For i = LBound(arr) To UBound(arr)
If VarType(arr(i)) <> vbString Then
Err.Raise 104, , "[SunSoft]參數非String,請檢查代碼!"
End If
a(i) = CStr(arr(i))
Next i
StringArray = a
End Function
Public Function IntegerArray(ParamArray arr()) As Integer()
Dim a() As Integer
Dim i As Integer
ReDim a(UBound(arr))
For i = LBound(arr) To UBound(arr)
If VarType(arr(i)) <> vbInteger Then
Err.Raise 104, , "[SunSoft]參數非Integer,請檢查代碼!"
End If
a(i) = CStr(arr(i))
Next i
IntegerArray = a
End Function
當我需要在其他的地方使用這裏的方法的時候,我必須創建一個類,才能使用這個方法。如下:
Dim k() As String
Dim o As New ArrayHelper
k = o.StringArray("1", "2222")
Stop
在Stop命令幫助下,我們在調試模式下驗證,k變量的確得到了正確的數組。
但是,由於VB6的機制,我們沒法在不創建對象的時候調用這個對象的方法。
今天,創建ActiveX DLL的時候,意外發現了一個方法。
使用ActiveX DLL創建支持靜態函數的類
創建工程
創建一個ActiveX DLL工程,工程名爲SunSoft
創建類
首先,添加一個類模塊(導入cls文件
或者編寫創建一個新的類模塊
)
然後,在右側的屬性窗口,按照如下的表格設置類的屬性
屬性名 | 屬性值 |
---|---|
(名稱) | ArrayHelper |
DataBindingBehavior | 0 - vbNone |
DataSourceBehavior | 0 - vbNone |
Instancing | 6 - GlobalMultiUse |
MTSTransactionMode | 0 - NotAnMTSObject |
Persistable | 0 - NotPersistable |
編譯導出
編譯,生成SunSoft.dll
使用方法
新建一個普通exe工程,然後在工程-引用-瀏覽(B)...
中選擇Sunsoft.dll
,完成在新工程中對它的引用。
在新工程的窗口中繪製一個按鈕,爲它增加單擊事件。
Dim k() As String
k = ArrayHelper.StringArray("1", "2222")
Stop
可以看到我們可以直接訪問到ArrayHelper提供的方法了。