本来可以直接给调用窗口的变量赋值,但是问题是我的这个模态窗口是公用的,也就是不能use其它单元,直接给不属于该窗口的变量赋值。
我的目的是直接返回两个字符串,再由调用窗口进行处理,请教各位高手该如何处理?

解决方案 »

  1.   

    那就在模态窗口的单元里声明两个变量(在implementation之前),
    或者在模态窗口的public里声明,其它窗口调用时要在模态窗口Free之前引用。
      

  2.   

    试试,顺便请教一下模态窗口在什么时候Free?
      

  3.   

    如果是自动创建(是不是在Project->Options的Auto-create forms里)的就不用管了,程序退出时会Free的;
    如果是动态创建的,就在ShowModal完后Free,比如
    Form2 := TForm2.Create(nil);
    Form2.ShowModal;
    ShowMessage(Form2.str1); // 这里可以引用变量
    Form2.Free;
      

  4.   

    可以用一个单元,在其中定义全局变量或函数,uses这个单元onclose中
      

  5.   

    对啊,动态创建的窗口要free的,我怎么忘掉了。sysu老兄你的办法是对的,多谢了!最后一个小问题:怎样判断一个窗口是否已经释放?
    用nil和Assigned好像都不行啊。搞清楚了,马上结帖。
      

  6.   

    Form2.Free释放后并不会把Form2设为nil,如果要判断的话只能在Free后再手动赋值为nil,
    Form2.Free;
    Form2 := nil;
    或者用
    FreeAndNil(Form2);