如题  一个窗口的HIDE和CLOSE有什么区别呢?

解决方案 »

  1.   

    截取Windows的消息,然后进行处理
      

  2.   

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      self.Hide;
      abort;
    end;
      

  3.   

    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
        CanClose := false;
        Form1.Hide; 
    end;
      

  4.   

    action:=canone;
      hide;
      

  5.   

    建立一个全局变量:CloseTrue:Boolean;在程序中设一个真正的关闭按钮,事件代码为
    procedure TForm1.btnCloseClick(sender:TObject);
    begin
     CloseTrue:=True;
     Close;
    end;
    在窗体的关闭询问事件中
    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
        CanClose := CloseTrue;
        Form1.Hide; 
    end;
      

  6.   

    正常情况下,程序主窗体的close意味着程序的终止
    而其它的窗体的close只是hide了
    如果要主窗体关闭时隐藏,可以使用上面提到的那个
        CanClose := CloseTrue;
        Form1.Hide; 
    如果其它窗体想关闭时释放则使用
        action := caFree;
        freeAndNil(Form1);
      

  7.   

    close是event,hide是method 后者无法加入自己的设置功能,其实两者的差别不大,就像楼上所说,主窗体的close就是关闭窗口,如果是其它窗口hide,close则是差不多的,当然,close中的参数Action也可以为MDI子窗口来服务的,