注册 登录
编程论坛 VB6论坛

有没有人建过VB6 子类的

wube 发布于 2018-05-22 16:08, 1673 次点击
因为原本程式内已经有个类了〜可是应使用者需求要加入功能〜
但是放在一起太复杂了〜想切成两个子类〜
不知道版上大神有没有能提供一个简单的示例代码〜
让我理解一下父类与子类和表单之间的关系〜

光一个类就将近1万5千行了〜要加入此功能估计要变3万行〜
想切割一下代码量〜

[此贴子已经被作者于2018-5-22 16:14编辑过]

7 回复
#2
wds12018-05-22 16:42

增加第二个类模块不行么。

#3
wube2018-05-22 17:08
可以〜类似吧〜
在表单定义类的物件名称〜在指定地点再去呼叫父类的相关功能〜
在父类定义子类的物件名称〜在指定地点再去呼叫子类的相关功能〜
也是一层呼叫下一层的概念〜原来还蛮简单的〜
#4
风吹过b2018-05-22 17:30
VB6 不完全支持类, 以前看到 牛人写过 继承来,但没看懂。。。。。


Implements 语句

      

指定要在包含该语句的类模块中实现的接口或类。

语法

Implements [InterfaceName | Class]

所需的 InterfaceName 或 Class 是类型库中的接口或类的名称,该类型库中的方法将用与 Visual Basic 类中相一致的方法来实现。

说明

所谓接口就是代表接口封装的成员(方法以及属性)的原型集合;也就是说,它只包含成员过程的声明部分。一个类提供一个或多个接口的所有方法以及属性的一种实现方案。类的控制者每次调用函数时,该函数所执行的代码由类来提供。每个类至少应实现一个缺省接口。在 Visual Basic 中,一个已实现的接口中任何没有显式声明的成员都是缺省接口的隐式成员。

当 Visual Basic 类实现接口时,都会提供该接口的类型库中说明的所有 Public 过程的版本。除了提供接口原型与自编过程之间的映射关系之外,Implements 语句还使这个类接收对指定接口 ID 的 COM QueryInterface 调用。

注意 Visual Basic 不能实现派生出来的类或接口。

在实现接口或类时,必须包括所用到的 Public 过程。如果在实现接口或类时遗漏了成员,就会产生错误。如果正在实现的类中某个过程还没有代码,则可以产生一个适当的错误信息 (Const E_NOTIMPL = &H80004001),以便用户意识到该成员还没有实现。

Implements 语句不能在标准模块中使用。


[此贴子已经被作者于2018-5-22 17:33编辑过]

#5
wube2018-05-22 17:39
1加到100用父子类做〜我是这样理解的〜功能切分的简单示例〜
当然实际上在用没那么简单〜

Form1
程序代码:

Option Explicit
Dim AA As Class1
Private Sub Form_Load()
    Set AA = New Class1
    MsgBox AA.AA(100)
    Set AA = Nothing
End Sub


Class1
程序代码:

Option Explicit
Dim AAA As Class2
Public Function AA(Count As Integer) As Integer
Dim i As Integer, BB As Integer
    BB = 0
    Set AAA = New Class2
    For i = 0 To Count
        AA = AAA.AA(AA, i)
    Next i
    Set AAA = Nothing
End Function


Class2
程序代码:

Option Explicit
Public Function AA(i As Integer, j As Integer) As Integer
    AA = i + j
End Function


只有本站会员才能查看附件,请 登录
#6
wube2018-05-22 17:43
突然想到如果要做类事件要怎写?
父类可以反馈给表单〜子类并不直接跟表单接触〜
所以就无法处发事件反馈给表单了〜

不然就是又要下一层事件透过上一层事件传递资讯给表单吗?
#7
wube2018-05-22 17:46
以下是引用风吹过b在2018-5-22 17:30:19的发言:

VB6 不完全支持类, 以前看到 牛人写过 继承来,但没看懂。。。。。


好复杂〜VB6就剩集合没用过〜也不知道怎么用了〜

只有本站会员才能查看附件,请 登录
#8
wube2018-05-22 18:05
我是要增加因条件切换功能~偷懒用另一个类做~也能这样玩~

Form1
程序代码:

Option Explicit
Dim AA As Class1
Private Sub Form_Load()
    Set AA = New Class1
    MsgBox AA.AA(0, 10)
    MsgBox AA.AA(1, 10)
    Set AA = Nothing
End Sub

Class1
程序代码:

Option Explicit
Dim AAA As Class2
Public Function AA(Mode As Integer, Count As Long) As Long
Dim i As Integer, BB As Integer
    BB = 0
    Set AAA = New Class2
    If Mode = 0 Then
        For i = 1 To Count
            AA = AA + i
        Next i
    ElseIf Mode = 1 Then
        AA = AAA.AA(Count)
    End If
    Set AAA = Nothing
End Function

Class2
程序代码:

Option Explicit
Public Function AA(i As Long) As Long
Dim ii As Integer
    AA = 1
    For ii = 1 To i
        AA = AA * ii
    Next ii
End Function


只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
1