| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 585 人关注过本帖
标题:新手求助——如何在模块中编写正确的代码
只看楼主 加入收藏
mixedfruits
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-4-15
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:8 
新手求助——如何在模块中编写正确的代码
Public Const PI As Single = 3.14159265357           '全局常量
Public Const g As Single = 9.7949
Public Const P As Single = 1.25
Public Const U As Single = 1800000
Public d As Single
Public S As Single
Public h As Integer
Private Sub TEXT1_Change()                                                  '窗口F6的H
   h = Form6.TEXT1.Text
Public L As Integer                               '窗口F6的L
Private Sub TEXT2_Change()
   L = Form6.Text2.Text
Public w As Integer
Private Sub TEXT3_Change()                                                    '窗口F6的V0
   w = Form6.Text3.Text
Public m As Integer                                '窗口F6的m
Private Sub TEXT4_Change()
   m = Form6.Text4.Text
Public r As Integer
Private Sub TEXT5_Change()
   r = Form3.TEXT5.Text                                   '窗口F3的r
Public c As Integer
Private Sub TEXT6_Change()
     c = Form4.TEXT6.Text                                  '窗口F4的R
Public a As Integer                               '窗口F7的a
Private Sub TEXT7_Change()
   a = Form7.TEXT7.Text
Public b As Integer                                   '窗口f7的b
Private Sub TEXT8_Change()
   b = Form7.TEXT8.Text
Public v As Integer
Private Sub TEXT9_Change()
   v = Form8.Text9.Text                                   '窗口F8的速度v
Public Function Re() As Long
Re = P * w * L / U
End Function

If Re <= 1 Then
    d = 100

ElseIf Re > 1 Or Re <= 2 Then
    d = 20

ElseIf Re > 2 Or Re <= 4 Then
    d = 9

ElseIf Re > 4 Or Re <= 10 Then

        d = 6

ElseIf Re > 10 Or Re <= 40 Then

        d = 2

ElseIf Re > 40 Or Re <= 100 Then

       d = 0.8

ElseIf Re > 100 Or Re <= 400 Then

       d = 0.6

ElseIf Re > 400 Or Re <= 1000 Then

       d = 0.5

ElseIf Re > 1000 Or Re <= 200000 Then

       d = 0.4

Else

      d = 0
        Form11.Show                                            '雷诺数过大,涉及了马赫数,不在讨论范围
End If
Public Function f() As Long
f = w * w * S * d * P / 2
End Function
End Sub
本人新手,不知道正确的代码怎么写,它是多form的全局变量和全局函数,所以用了标准模块,但是怎么找书本都找不到案例,求更改。
搜索更多相关主题的帖子: 如何 
2015-04-18 17:09
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:10 
没有出现对运算结果进行输出的语句,看不到结果的。你可以调用窗体的Print方法,在窗体上把结果显出来。
注意你的文本框内的文本不能赋值给Integer变量喔。要写成L=Val(Form1.Text1.text)这样才行。
下面的几个逻辑运算可能你是想让前后两个值同为真吧?要把Or改成And
收到的鲜花
  • mixedfruits2015-04-19 21:44 送鲜花  3朵   附言:谢谢指教!
2015-04-19 09:01
mixedfruits
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-4-15
收藏
得分:0 
回复 3楼 yangfrancis
谢谢指教,我还以为没人理,紧张了好久。
就是表示(a,b)这个区间的意思,大于a值,小于b值。书上好像也是这样表示的,我是照书上来的,不知道用错没有。
2015-04-19 09:37
mixedfruits
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-4-15
收藏
得分:0 
回复 3楼 yangfrancis
还有,我是在模块里放的public变量和public函数公式,在窗口a,b里面进行运算(窗口a的输入值传给窗口b,窗口b也有输入值,然后将两个窗口的输入值一起在窗口b里面计算),把结果在c窗口中显示出来,这样做有问题麽?怎么调用模块的public到窗口里运算?那个print用在窗口c,还是模块?
2015-04-19 21:45
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
初学?
多FORM我不是很了解
不过据我所知,单个FORM中的function跨Form调用有点不对啊,建议另外加个模块或类模块。

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2015-04-20 20:31
chen3523
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:33
帖 子:223
专家分:1165
注 册:2013-2-12
收藏
得分:2 
点击“工程”,点击“添加模块”,点击“打开”;然后把你的全局常量定义,及各窗口的H、L啦定义等全部粘贴到模块的通用下面。
Public Const PI As Single = 3.14159265357           '全局常量
Public Const g As Single = 9.7949
Public Const P As Single = 1.25
Public Const U As Single = 1800000
Public d As Single
Public S As Single
Public h As Integer
Public L As Integer                               '窗口F6的L
Public w As Integer

各窗口文本框改变赋值不变
Private Sub TEXT1_Change()                                                  '窗口F6的H
   h = Form6.TEXT1.Text
End Sub

增加命令控件Command1
修改:
Private Sub Command1_Click()
Re = P * w * L / U

If Re <= 1 Then
    d = 100

ElseIf Re > 1 and Re <= 2 Then
    d = 20

ElseIf Re > 2 and Re <= 4 Then
    d = 9

ElseIf Re > 4 and Re <= 10 Then

        d = 6

ElseIf Re > 10 and Re <= 40 Then

        d = 2

ElseIf Re > 40 and Re <= 100 Then

       d = 0.8

ElseIf Re > 100 and Re <= 400 Then

       d = 0.6

ElseIf Re > 400 and Re <= 1000 Then

       d = 0.5

ElseIf Re > 1000 and Re <= 200000 Then

       d = 0.4

Else

      d = 0
        Form11.Show                                            '雷诺数过大,涉及了马赫数,不在讨论范围
End If
f = w * w * S * d * P / 2
msgbox f
End Sub
试看。本人没有调试,凭空想象。

调试失败3次后,关机睡觉,当醒来时多有收获。
2015-04-20 22:08
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:8 
VB6工程结构

1、工程文件,后缀: .vbp  
必须的,打开工作,就是打开这个文件 。

2、工程状态文件 ,后缀:.vbw
可选的,保存工程各个窗体的当前状态。内容是一个文本格式。可删。

3、窗体文件,后缀:.frm
如果启动对象是窗体,则是必须的。VB6程序里可视化的部分,控件必须放在窗体上才能被使用。

4、窗体数据文件,后缀:.frx
如果窗体中的控件设置了某些选项,如图片框的图片,列表框的列表时,窗体的图标时,
该文件是必须的,保存着这些控件的具体数据。该文件由VB6自动管理调用。

5、模块文件,后缀:.bas
如果无窗体文件时,是必须,否则是可选。
当你工程里有多个窗体时,建议使用。整个工程可见的 全局变量 和全局调用的函数写在这里面。
可以存在多个。

6、其他,
类文件: .cls
自定义控件:.ctl

=======================
针对你的问题:
1、全局变量,全局调用的函数,写在 模块文件中。
2、各个控件的响应事件,分别写在各个窗体的代码窗体中。
3、由模块里调用窗体里的函数,可以把函数声明为 public ,然后 使用 窗体名.函数名 来调用。
   或者把函数写在 模块里,调用时,把窗体(或控件)传递当做参数进去,然后对该对象操作。
   各有各的优点:函数写在窗体里,就是相当于给这个窗体一个方法。只对本窗体(控件)操作,代码易懂。
                 函数写在模拟里,代码复用性好,减少重复代码,代码结构易理解,但可读性略受影响。

=======================
因为实在是没看懂你的程序结构,所以也不知道怎么回答才好。

授人于鱼,不如授人于渔
早已停用QQ了
2015-04-21 14:20
mixedfruits
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2015-4-15
收藏
得分:0 
回复 8楼 风吹过b
你好,我也知道我的这段程序有很多错误,主要是我不知道正确的书写格式,翻的教材,参考书都没有合适的例子,挺愁的。
意思就是把窗口A的几个文本框输入值(全局可用)赋值给我定义的变量,把这些变量,连同窗口B的文本框输入值(局部的)进行计算,计算结果在窗口C的文本框里显示(我不知道怎么用,好像print不大对,因为我想把值放在文本框里)出来。
然后我同学叫我把窗口A的几个文本框输入值(全局可用)和那个Re函数放在模块。但是我不知道赋值的格式,Vai(),inputbox()。都不知道怎么书写。
最后,谢谢回复,我以为不会回复我的 :)
2015-04-24 22:02
快速回复:新手求助——如何在模块中编写正确的代码
数据加载中...
 
   



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

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