"Main_Form  中所调用的POP_FORM  不在Main_Form  所在的PROJECT  中"?难!

解决方案 »

  1.   

    当pop form得到焦点时写入一标志数据至ini文件中,在main_form中检测该标志(可用时间控件,如要求不高也可在其得到焦点时再检测),不知能否满足要求。
      

  2.   

    问题简单化:
        如果Main_Form与POP_FORM在同一个PROJECT 中,请问上述问题如何解决。
      

  3.   

    打开pop form 时根据需要直接改写main_form中控件值就可以了。
      

  4.   

    if Forms.Count=1 then            ''you can add a timer control
        main_form中buttons are Useful!
    else
        button can't be used
    end if
      

  5.   

    用一全局计数,保留弹出的POP FORM的数量,每弹出一个POP FORM,计数器加一
    生成一公用函数,用来设置MainForm的按钮状态在每个POP FORM的的Unload事件中,将计数器减一,再判断计数器,若计数器为0,则全部POP FORM都关闭,则可调用公用函数恢复Main Form的按钮状态
      

  6.   

    可以在POP_FORM的FORM_LOAD中加入关闭BUTTON的命令
        Command1(1).Enabled = False
    在POP_FORM的FORM_LOAD中加入打开BUTTON的命令    Command1(1).Enabled = true
      

  7.   

    最佳化办法:给Pop Form添加事件。在Pop Form窗体文件中写
    Public Event OnClose(arg As Long)
    然后,当关闭窗体时,书写
    Unload Me
    RaiseEvent OnClose(i) 'i是自定义参数然后,主窗体中写
    Public WithEvent frmPopForm As PopForm在需要显示的地方
    Set frmPopForm = New PopForm
    frmPopForm.Show()
    ... '使你的按钮失效最后,响应事件
    Private frmPopForm_OnClose(arg As Long)
        ...'使你的按钮有效
    End Sub
    你的问题比这个例子稍微复杂,但仍然可以这样解决
      

  8.   

    我觉的Ninputer的方法比较好,可以用事件来解决这个问题。
      

  9.   

    其实并不难,在你的另一DLL工程中用一个类建一个虚函数
    让你的MainForm继承这个类并让PopForm调用这个类即能实现了通信!
      

  10.   


      
      
      比如在类ClsTest中定义一个虚函数Change(),即不需要一行代码的函数
      然后
      窗体中加上
      Implements  ClsTest
      (这样即可看到窗体中有了ClsTest_Change())
      再有下列代码:
      Dim  CTest  as  New  ClsTest
      Dim  Form  as  form1
      
      Set  Form  =  New  form1
      Set  CTest  =  Form  
      
      这样即让窗体直正继承了类ClsTest
      
      在DLL中只要调用ClsTest这个类中的Change()
      而体中ClsTest_Change()的代码即会执行!