主题:函数中包含控件的函数 如何编写
xinying2005
[专家分:0] 发布于 2008-07-10 14:25:00
现在我的 多个窗体文件中 要用到 aa 函数
但是 aa 函数中 需要包含 mscomm1 控件,
当我将 mscomm1控件 写到 module中时,程序运行 找不到 mscomm1控件。
如果我将 aa函数 多次写在 用到的 多个窗体文件中时,感觉 有重复写代码的意思。
请问如何在module中 写 通用的 包含 控件的 代码?
回复列表 (共8个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2008-07-10 21:28:00
如果,涉及控件是不变的,就按照一般函数写
如果涉及到的控件是不确定的,就把空间作为函数的参数使用。
板凳
xinying2005 [专家分:0] 发布于 2008-07-10 23:01:00
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 楼
tanchuhan [专家分:15140] 发布于 2008-07-10 23:27:00
MSComm1.Output = xu
->
Formxxxx.MSComm1.Output = xu
4 楼
xinying2005 [专家分:0] 发布于 2008-07-10 23:50:00
关键是 这个函数 我是在 多个窗体中 都要用到
各个窗体的名称是 不一样的
5 楼
tanchuhan [专家分:15140] 发布于 2008-07-11 00:56:00
你把控件放到一個窗體,在模塊公共函數裡像我說那樣引用就是了
6 楼
老大徒伤悲 [专家分:29120] 发布于 2008-07-11 20:01:00
你可以把窗体作为参数使用。
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 楼
凡尘 [专家分:9680] 发布于 2008-07-19 17:34:00
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 楼
xinying2005 [专家分:0] 发布于 2008-07-20 07:59:00
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, 数据 )
提示这种写法 不对
我来回复