我有一个程序,打开用VBG打开10个VBP,10个VBP互相调用,其中只有一个VBP中都是窗体,也就是主VBP
提问:当我程序show出一个form,我如何取得这个form上的控件内容和form里的全局变量?
1.如何在主VBP中的其他form、模块、类中取得当前主VBP中打开form上的控件内容和form里的全局变量
2.如何在其他VBP的类中取得主VBP中打开form上的控件内容和form里的全局变量
提问:当我程序show出一个form,我如何取得这个form上的控件内容和form里的全局变量?
1.如何在主VBP中的其他form、模块、类中取得当前主VBP中打开form上的控件内容和form里的全局变量
2.如何在其他VBP的类中取得主VBP中打开form上的控件内容和form里的全局变量
控件内容:form1.textBox1.text
全局变量:把form1的全局变量设为public,通过from1.xxx取得
2.可以通过类属性取得
就像面向对象编程中的取属性
关于第二点,能否举个例子
假设主工程是project1.vbp,其中有个form 是form1
调用了子工程project2.vbp中的类clscomm中的一个函数functiona,在functiona中如何取得project1.vbp中form1打开时给其中一个全局变量赋的值
各位高手救救我吧
除了进程间的各种通信技术,还有就是active提供的接口.你要工程2的某个函数能访问到工程1的form1里面的数据,..先得看2个工程得关系,如果工程2也是个标准exe工程,那么2个工程各有自己得进程空间,想直接工程1.form1.***是访问不了了,要用进程间通信(什么事件,系统对象,文件映象...).如果工程2是active dll被工程1引用,就可以给工程2传递工程1.form1得引用给工程2,由工程2处理,你最好是把你得工程组描述清楚,要求说明白,再看看大家有什么办法.
1.工程最后都编译成dll,其中主工程为project1,其中有form,modual,class,project2里只有modual,class,project3……同Project2
2.project1引用了project2、project3……,project2引用了project3、project4……
3.主工程是project1.vbp,其中有个form 是form1,其中定义了一个全局变量g_strLotId,这个form的一个按钮事件
调用了子工程project2.vbp中的类clscomm中的一个函数functiona,在functiona中如何取得project1.vbp中form1打开时给g_strLotId赋的值?
4.另外,其他vbp中层层嵌套调用,所以不可能把这个全局变量当做byref的形式传给各个函数,否则改动量太大
5.我与组员讨论过,在各个工程中都定义一个全局变量g_strLotId,当打开form1,点一个按钮触发的时候,给各个vbp中的g_strLotId赋值,这样无论程序如何复杂,如何嵌套调用,都能得到各自vbp下的g_strLotId,但是发现这么做,会将程序启动时给各个VBP中的其他公共变量赋的值清掉,不知道是否对象引用的问题,有点混乱了
你不能修改可能是在某些(个)类的_Initialize过程修改了该DLL内全局变量吧?
你所说的可以这样解决:
1 在主工程1里定义一个类class1
2 在主工程1(模块里)定义全局变量: public gCls as new class1
3 引用需要的子工程2
4 在主工程1里,初始化由子工程2创建的对象SubProObj1,各种dim..new...并且有:set SubProObj.Obj=Cls
5 在子工程2的必要的类里添加属性Obj,属性类型是object,
6 子工程2里需要访问主工程的全局变量时,用Obj的属性,Obj就是引用的主工程的gCLs
7 子工程2可以把引用的主工程1的gCls传递给自己的子工程3,4,5,6....就是主工程给他创建的对象里的属性赋值了,赋值的是自己的全局类的引用,对象要访问就通过这个引用的属性...
全局变量名称难道会变吗?你思路不正确吧
不是很明白