回 帖 发 新 帖 刷新版面

主题:函数中包含控件的函数 如何编写

现在我的 多个窗体文件中 要用到 aa 函数

但是 aa 函数中 需要包含  mscomm1 控件,

当我将 mscomm1控件 写到 module中时,程序运行 找不到 mscomm1控件。


如果我将 aa函数 多次写在 用到的 多个窗体文件中时,感觉 有重复写代码的意思。

请问如何在module中 写 通用的 包含 控件的 代码?

回复列表 (共8个回复)

沙发

如果,涉及控件是不变的,就按照一般函数写

如果涉及到的控件是不确定的,就把空间作为函数的参数使用。

板凳


Public Function inquire_function(aa As Integer)
    buff(0) = &HEAB
    buff(1) = &HE0
    buff(2) = aa
    i = CRC_CITT(1)
    MSComm1.OutBufferCount = 0  '发送缓冲区的字节数清零

    If MSComm1.PortOpen = True Then
        For i = 0 To 4
            xu(0) = buff(i)
            MSComm1.Output = xu
        Next i
    End If
End Function

就这样一个函数,由于我引用了 控件 mscomm1,此程序是写在 module 中的,在程序 运行时,提示 找不到控件

3 楼

MSComm1.Output = xu

->

Formxxxx.MSComm1.Output = xu

4 楼

关键是 这个函数 我是在 多个窗体中 都要用到
各个窗体的名称是 不一样的

5 楼

你把控件放到一個窗體,在模塊公共函數裡像我說那樣引用就是了

6 楼

你可以把窗体作为参数使用。

Public Function inquire_function(窗体 As Form, 数据 As Integer)
    buff(0) = &HEAB
    buff(1) = &HE0
    buff(2) = 数据
    i = CRC_CITT(1)
    窗体.MSComm1.OutBufferCount = 0  '当然你要保证窗体上有这个控件

    If 窗体.MSComm1.PortOpen = True Then
        For i = 0 To 4
            xu(0) = buff(i)
            窗体.MSComm1.Output = xu
        Next i
    End If
End Function

7 楼

Public Function inquire_function(nCom as Dim a As MSComm, 数据 As Integer)
    buff(0) = &HEAB
    buff(1) = &HE0
    buff(2) = 数据
    i = CRC_CITT(1)
    nCom.OutBufferCount = 0  

    If nCom.PortOpen = True Then
        For i = 0 To 4
            xu(0) = buff(i)
            nCom.Output = xu
        Next i
    End If
End Function

8 楼

Public Function inquire_function(nCom as As MSComm, 数据 As Integer)
    buff(0) = &HEAB
    buff(1) = &HE0
    buff(2) = 数据
    i = CRC_CITT(1)
    nCom.OutBufferCount = 0  

    If nCom.PortOpen = True Then
        For i = 0 To 4
            xu(0) = buff(i)
            nCom.Output = xu
        Next i
    End If
End Function

你说的是这样吧( nCom as Dim a As MSComm 没有这种语句吧)

但是 我试了,在调用时,我写成inquire_function(MSComm1, 数据 )
提示这种写法 不对

我来回复

您尚未登录,请登录后再回复。点此登录或注册