在frm-xx.showmodal后,我在frm-xx里定义了一个全局变量,我想在其他窗口中访问这个变量,不过好象一旦按下mrok后,好象这个窗口就被free掉了,
出现访问错误了,我换成show的话,然后hide 就可以访问。不过我要的是
showmodal这种效果啊,该怎么解决呢

解决方案 »

  1.   

    在一个单独的unit文件中定义全局变量,然后分别在Form1和form2中引用该文件就行了。
      

  2.   

    1我这个变量是要在frm-xx中产生的,不能放在一个单独的unit文件中
    2如果这个变量的值在form1中改变了,在form2中还引用这个unit文件吗
    (本问题与原来的问题无关)
      

  3.   

    在主窗体中引用该Unit不就行了。
      

  4.   

    没有理由的,检查一下是不是调用了frm-xx.free,或者在frm-xx的
    OnClose里面写了Action=cafree.
      

  5.   

    呵呵;
    不会有你这种情况吧;
    你看一看,你是不是
    try
    finally
     free了;
    还是onclose...你这个窗口是动态建立的还是在程序初始化时建立的?
      

  6.   

    建议这样写MainForm.DoXXX;
    begin
       frm-xx.Create;
       try
         frm-xx.DoSomething(Parm);
       finally
         frm-xx.Free;
       end;
    end;
    frm-xx.DoSomething(var Parm :YourParmType);
    begin
      InitYourParm;
      if ShowModal = mrOK then 
      begin
        ProcYourParm;
      end;
      ...
    end;让全局变量见鬼去吧。