有两个窗口,一个是MDI主窗口,里面放置了一个按扭,用来打个后一个窗口的.还有一个是MDI子窗口.
  问题是:  为什么我每点一次按扭,Mdi子窗口打开了,,但是不会关闭.  点关闭按扭都关不了呢....是不是要在哪里设置设置呀??

解决方案 »

  1.   


    要在子窗体的onclose事件中写:Action:=caFree;
      

  2.   

      就是
         var   
            form2:Tform2;
           begin
              form2:=Tform2.create(self);
              form2.show;
           end;
            
      

  3.   


    unit Unit18;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm18 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form18: TForm18;implementation{$R *.dfm}uses Unit17;procedure TForm18.Button1Click(Sender: TObject);
    var
      Form17: TForm17;
    begin
      Form17 := TForm17.Create(Self);
      Form17.Show;
    end;end.没有问题啊。Form17都没有加入FormClose事件也没有出现你前面说的无法关闭的问题。
      

  4.   

    啊...不可能吧...你确定你设置他们为MDI了...   和我一样..我的会..你的不会....晕倒...
      

  5.   

    你说的是不是想要点击按钮时打开一个新的child窗口并且关闭之前打开的Child窗口?
      

  6.   

      那为什么我不把它弄成MDI的窗口就不会发生这样的事呢.
      

  7.   


    uses Unit17;procedure TForm18.Button1Click(Sender: TObject);
    begin
      if Self.ActiveMDIChild = Form17 then
      Self.ActiveMDIChild.Close;
      Form17 := TForm17.Create(Self);
      Form17.Show;
    end;
      

  8.   

    这个和MDI不MDI无关,请理解类、对象实例的区别
      

  9.   

    我前面有个地方说错了,子窗口需要Close事件,要不就是最小化了。
      

  10.   

    unit example4;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        btn1: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      open:Boolean=False;
    implementation
     uses Unit2;
    {$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
    var
        form2:Tform2;
    begin
      if open=true then
      self.ActiveMDIChild.close;
      form2:=Tform2.Create(Self);  Form2.Show;
      open:=True;
    end;end.
    可以了..呵..