我有一个程序,打开用VBG打开10个VBP,10个VBP互相调用,其中只有一个VBP中都是窗体,也就是主VBP
提问:当我程序show出一个form,我如何取得这个form上的控件内容和form里的全局变量?
1.如何在主VBP中的其他form、模块、类中取得当前主VBP中打开form上的控件内容和form里的全局变量
2.如何在其他VBP的类中取得主VBP中打开form上的控件内容和form里的全局变量

解决方案 »

  1.   

    1.同一工程form2取form1
      控件内容:form1.textBox1.text
      全局变量:把form1的全局变量设为public,通过from1.xxx取得
    2.可以通过类属性取得
      就像面向对象编程中的取属性
      

  2.   


    关于第二点,能否举个例子
    假设主工程是project1.vbp,其中有个form 是form1
    调用了子工程project2.vbp中的类clscomm中的一个函数functiona,在functiona中如何取得project1.vbp中form1打开时给其中一个全局变量赋的值
      

  3.   

    摸索了一天都不成功,我试过在主工程打开form的时候通过对象的方式给每个子工程里的全局变量赋值,但是不知道执行到什么时候,原来子工程中的其他全局变量的值会被清掉,影响了原来的程序,不懂啊不懂。
    各位高手救救我吧
      

  4.   

    主工程,子工程,都是工程,工程之间是独立的吧?管你什么工程,结果就是exe,active exe,active dll
    除了进程间的各种通信技术,还有就是active提供的接口.你要工程2的某个函数能访问到工程1的form1里面的数据,..先得看2个工程得关系,如果工程2也是个标准exe工程,那么2个工程各有自己得进程空间,想直接工程1.form1.***是访问不了了,要用进程间通信(什么事件,系统对象,文件映象...).如果工程2是active dll被工程1引用,就可以给工程2传递工程1.form1得引用给工程2,由工程2处理,你最好是把你得工程组描述清楚,要求说明白,再看看大家有什么办法.
      

  5.   


    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中的其他公共变量赋的值清掉,不知道是否对象引用的问题,有点混乱了
      

  6.   

    所有的工程都是DLL,在DLL可以有全局变量,而且全局变量也不是拷贝过去的,DLL里创建的对象都可以使用修改全局变量.
    你不能修改可能是在某些(个)类的_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....就是主工程给他创建的对象里的属性赋值了,赋值的是自己的全局类的引用,对象要访问就通过这个引用的属性...
      

  7.   

    for each object in Form.controls?
    全局变量名称难道会变吗?你思路不正确吧
    不是很明白
      

  8.   

    后来经过我的研究,发现确实如spt_petrolor所说,在程序的某个地方将初始化赋值的对象和变量给清空了,所以用类的概念来解决这个多工程变量、对象共享的方法可行,我不该怀疑VB在这方面的能力的,感谢大家!
      

  9.   

    用全局变量对象的方法,可以传递多个公共变量(类的多个属性),如果继续完善可以给类添加事件,实现通知.包装的吧.在跨进程的时候不行,谁让你都是dll那...呵呵