调用formcloseQuery,不能关闭窗口呀,应该怎么写
我的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
  canclose: boolean;
begin
  canclose := true;
  formcloseQuery(self,canclose);
end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  case messagebox(0,'改变,关闭么','提示',MB_OKCANCEL) of
  2: canclose := false;
  end;
end;

解决方案 »

  1.   

    直接self.close就行了,调用close时自然会触发onclosequery事件,费那么大劲干嘛。。
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    self.Close;
    end;
      

  3.   

    不关闭肯定是2: canclose := false;得到满足了
    if messagebox(0,'改变,关闭么','提示',MB_OKCANCEL) =mrOK then
    xxxx
      

  4.   

    formcloseQuery是关闭时自动调用的判断、善后处理
    关闭还是form1.close
      

  5.   

    不只是这个问题,CloseQuery调用起来是没有意义的
      

  6.   

    重点主要是closeQuery中可以有事件处理,只要是满足关闭条件的都会关闭,而我在上面button的调用却关闭不了窗口,这个调用有没有什么问题
      

  7.   

    你还是没有明白我们的意思。。你在button的onclick用form.close,那么closequery的代码自然得到了执行!它会弹出一个对话框问你是否关闭,只有满足条件才关,不是说调用close就一定得关闭!
      

  8.   

    closequery中canclose为true就关了呀,等于false的时候就不会关闭,你传参数true进去也没用,closequery都被你修改了,canclose已经为false还怎么关闭?!
      

  9.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      close;
    end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      canclose:=messagebox(0,'改变,关闭么','提示',MB_OKCANCEL)=1;
    end;