各位大哥,在MDI主窗口中有一个 tw_customer的child窗口,
现在:
     var
       custwin:tw_customer;
     begin
       custwin:=tw_customer.create(self);
     end;
显示出来了,可是要写什么才能把他关闭啊,我要用在主窗口的一个按钮把这个CHILD关闭怎么写啊。

解决方案 »

  1.   

    tw_Customer 的onclose事件写action := cafree;主窗口关闭他就直接custwin.close就可以了
      

  2.   

    不行啊,写代码时就写不下去了。[Pascal Error] Unable to invoke Code Completion due to errors in source code
      

  3.   

    closewindowEX这个API(好像是这么写的)
      

  4.   

    在子窗口的onclose事件中写
    Action := caFree;在主窗口关闭它的时候,就可以关闭了。
      

  5.   

    在子窗口的onclose事件中写Action := caFree;
    Form1 := Nil; //最好再加这句。
      

  6.   

    大哥们说的这些我都知道,问题是在写代码的时候,系统识别不出custwin这个实例名称,不能自动弹出相应的过程与属性,并且在错误栏里显示出错。是不是我在哪里没有定义什么相关的变量?完整代码如下:
    procedure Tw_main.Button1Click(Sender: TObject);
    var
      custwin:tw_customer;
    begin
      custwin:=tw_customer.Create(self);
    end;procedure Tw_main.Button7Click(Sender: TObject);
    var
      custwin:tw_customer;
    begin
      custwin.Close;
    end;
               想法:button1打开子窗口,button7关闭这个子窗口.
      

  7.   

    你设置主窗体和子窗体的formstyle属性了吗
    应该在主窗体中引用子窗体的单元文件
      

  8.   

    把主窗体的formstyle属性设置为fsMDIForm
    把子窗体的formstyle属性设置为fsMDIChild
    如果你不想用mdi窗体可以在主窗体的uses子句中引用子窗体的单元文件
      

  9.   

    都设置好了啊,要不然怎么能打开?上面列出的代码BUTTON1部分可正常执行,只是写BUTTON7的时候系统不能识别CUSTWIN这个变量。
      

  10.   

    刚才看了你的代码,当然不行了
    你声明的custwin变量都是在函数中,在别的地方当然不可以用了
    你把在Tw_main.Button1Click和Tw_main.Button7Click中声明的变量custwin
    放到公共声明中,然后把Tw_main.Button1Click和Tw_main.Button7Click中的声明去掉就好了
      

  11.   

    另外注意一点
    要把对子窗体单元文件的引用放到主窗体interface后面的那个uses子句中