标题:多个窗体调用 module 里的代码,一个问题
只看楼主
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
结帖率:96%
已结贴  问题点数:20 回复次数:9 
多个窗体调用 module 里的代码,一个问题
module里有
public sub
if a.text1.text=0 then
...

a窗体调用没问题,b窗体同样的,b窗体怎么调用?module里怎么写?
搜索更多相关主题的帖子: public 
2014-11-26 22:30
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
应该活学活用参数传递解决,方法如下:
module里
public sub aaaa(bbbb as textbox)
  if bbbb.text=0 then bbbb.text=1
end sub

窗体1调用
aaaa text1

窗体2调用
aaaa text1
aaaa text2
.....
2014-11-27 07:00
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
得分:0 
不太理解,各种参数我还不会灵活使用。
module里是:
Public Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 46 And InStr(1, aaaa.Text1.Text, ".") > 0 Then '这里把我难住了。。。。。
        KeyAscii = 0
    End If
End Sub

aaaa窗体Text1_KeyPress要用,bbbb窗体Text1_KeyPress也要用,怎么办?

再问下窗体里是这样写吗?参数啥的对吗?
Private Sub Text1_KeyPress(KeyAscii As Integer)
Call Module1.Text1_KeyPress(KeyAscii)
End Sub
2014-11-27 09:45
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
回复 3 楼 txxb
哦?完全没基础啊。
好好啃下“面向对象编程”的基础知识吧,搞清楚类、对象,学习如何运用对象的属性、事件、方法。
不要把类想的太复杂,其实就是一段完成某一方面功能的代码,这段代码对外共享了部分数据、自触发的过程和子程序,共享的数据就是类的属性,共享的自触发的过程就是事件,共享的子程序就是方法。类是抽象的定义,对象是类的实体,如:电视类是定义,一台海尔液晶电视就是对象,电视类有些固有属性如需要电、电视信号,有屏幕、喇叭等,这是属性,有些属性可以让用户改变,如信号可以接有线,也可以接无线,喇叭可以内置也可以外接,选台、调音量、调亮度可以认为是电视类方法,而电压报警、无信号关机等可以认为是电视类的事件。
keypress是控件的按键事件,当控件获得焦点时,按键会触发该事件,用户可在该事件里加入自己的代码控制输入,每个对象都有自己独立的事件处理过程,要想共用可以使用控件数组,这就只需要在一个事件里写代码,如果不是控件数组,又有相同的处理过程,也可以在模块里写一个过程,但必须在每一个控件事件里写上该过程的调用代码。

哎...,就给你普及下这些基础吧,已经是管闲事了。
2014-11-27 10:39
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
得分:0 
类、对象、属性、事件、方法

我就是在实践中边运用边理解
2014-11-27 10:49
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1817
专家分:3681
注 册:2011-3-24
得分:0 
不太理解,module里怎会有事件?
Public Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 46 And InStr(1, aaaa.Text1.Text, ".") > 0 Then '这里把我难住了。。。。。
        KeyAscii = 0
    End If
End Sub
-------------------------------------------------------
通常要跨表单透过模块进行控件项操作,我都是直接把表单当参数传递给模块,再进行操作。
Public Sub AAA(A1 as Form,B1 as Integer)
    A1.XXX=??? 'A1看你是从哪个表单传来的,就是那个表单的东西。
End Sub
-------------------------------------------------------
呼叫使用的时候再:
1.Form1 -> Call AAA(Form1,1)
2.Form2 -> Call AAA(Form2.2)
.....
-------------------------------------------------------
不过个人不建议把表单动作写在模块内,后续会很麻烦。

不要選我當版主
2014-11-27 20:39
feishi1985
Rank: 2
等 级:论坛游民
帖 子:23
专家分:50
注 册:2011-11-29
得分:0 
想搞清楚还真不容易
2014-11-28 21:25
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
得分:0 
a窗体,b窗体,c窗体都有:
程序代码:
Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 46 And InStr(1, Text1.Text, ".") > 0 Then
        KeyAscii = 0
    End If
End Sub


为了减少代码,放到Module里,怎么写?我不会格式,理论我知道。
2014-11-28 21:57
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:20 
那你用函数吧。
----------Module 的代码----------
Public Function TextKeyCheck(objtext As TextBox, KeyAscii As Integer) As Integer
'传二个参数进来,第一个是 文本框,第二个是 按键值
TextKeyCheck = KeyAscii                 '默认等于 原始值
If TextKeyCheck = 46 And InStr(1, objtext.Text, ".") > 0 Then       '如果符合取消的条件
    TextKeyCheck = 0                    '置 0
End If
End Function

---------窗体中的代码--------------
Private Sub Text1_KeyPress(KeyAscii As Integer)
    KeyAscii = TextKeyCheck(Text1,Keyascii)
End Sub

==========================================================
还有一种写法,就借助VB6 过程(函数)的参数默认是按地址传递,那就直接修改值就可以了,不需要 使用函数的调用方法。
--------Module中的代码------------
Public Function TextKeyCheck(objtext As TextBox, ByRef KeyAscii As Integer) As Integer
'传二个参数进来,第一个是 文本框,第二个是 按键值 ,按键值,显式指定为按地址传递,方便理解
If KeyAscii = 46 And InStr(1, objtext.Text, ".") > 0 Then       '如果符合取消的条件
    KeyAscii = 0                    '置 0
End If
End Function

---------窗体中的代码--------------
Private Sub Text1_KeyPress(KeyAscii As Integer)
    call TextKeyCheck(Text1,Keyascii)
End Sub

授人于鱼,不如授人于渔
早已停用QQ了
2014-11-28 23:38
txxb
Rank: 2
等 级:论坛游民
帖 子:104
专家分:59
注 册:2014-10-8
得分:0 
非常感谢这么详细的解答,原来不太会带参数,此回答将大大加深我对参数,传址,函数的理解。
2014-11-29 09:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-439215-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.213825 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved