【VB6】实现VB6中类的静态方法
2016-02-13 19:52
465 查看
原创文章,欢迎支持
在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提供的方法了。
相关文章推荐
- VB.NET视频打开方式
- 【VB6】VB6类库项目中的Persistable
- 【VB6】VB6类库项目中的MTSTransactionMode
- 【VB6】VB6类库项目中Instancing属性
- vb学习之十三
- vb学习之十二
- vb学习之十一
- vb学习之十
- vb学习之六
- vb学习之五
- vb学习之四
- vb学习之三
- vb学习之二
- vb学习之一
- 【VB】窗体透明二:窗体逐渐变透明 4000 (包括控件)
- 【VB】窗体透明一:窗体透明,控件不透明(穿过)
- 【VB】点击控件,窗体不获得焦点
- 关于vba一列区别变成两列的时候,保留前后数字最前面的零
- VB脚本编写的小题库程序
- VB6.0中提示:该部件的许可证信息没有找到,在设计环境中,没有合适的许可证使用该功能”的解决办法