请教:
问题1:
procedure TForm1.Button1Click(Sender: TObject);
begin
      form1.Close;
end;我需要在 Button1Click 弹出一个对话框
问我是否真的关闭窗体
问题2:
当我单击窗体右上角的那个 x ,
也需要询问是否真的关闭窗体,那要怎么写啊?
这个语句是写在 
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
beginend;里,是吗?谢谢!

解决方案 »

  1.   

    close时就会调用CloseQuery是否要执行。
    所以。。
    if xxx then CanClose:=True;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if Application.messagebox('确定要关闭吗?','提示',MB_YesNo)=ID_Yes then    
        form1.Close
      else
        exit;
    end;
      

  3.   

    楼上两位的代码合并比较好,呵呵,写在CloseQuery事件里。
    if Application.messagebox('确定要关闭吗?','提示',MB_YesNo)=ID_Yes then    
     CanClose:=True;
      

  4.   

    谢谢楼上各位大哥!
    在CloseQuery事件里。
    if Application.messagebox('确定要关闭吗?','提示',MB_YesNo)=ID_Yes then    
     CanClose:=True;单击 否 照样关闭啊?谢谢!
      

  5.   

    加上这就可以了:
      if Application.messagebox('确定要关闭吗?','提示',MB_YesNo)=ID_Yes then
         CanClose:=True
      ELSE
         CanClose:=False;
      

  6.   

    if Application.messagebox('确定要关闭吗?','提示',MB_YesNo)=ID_Yes then
         CanClose:=True
      ELSE
         CanClose:=False;
      

  7.   

    呵呵,还不如看看help里面的例子。
      

  8.   

    最简单的代码是在onclosequery中写如下的代码: 
    if Application.messagebox('确定要关闭吗?','提示',MB_YesNo)=ID_no then
         CanClose:=False;没有必要这样写if Application.messagebox('确定要关闭吗?','提示',MB_YesNo)=ID_Yes then
         CanClose:=True
      ELSE
         CanClose:=False;
    那是多此一举
      

  9.   

    写在OnClose里
    if Application.messagebox('确定要关闭吗?','提示',MB_YesNo) <> ID_YES then
         Action := caNone;也可以写在OnCloseQuery里
    if Application.messagebox('确定要关闭吗?','提示',MB_YesNo) <> ID_YES then
         CanClose := False;一般我习惯用 <> 来判断要判断的按钮,可以防止按钮用错的情况
      

  10.   

    if application.messagebox('確定關閉嗎?','信息提示',mb_yesno+mb_iconinformation)=mryes then
       close;
      

  11.   

    那是有个默认值的问题,所以还是要加else的
      

  12.   

    TO:xieyong1985()
    if application.messagebox('確定關閉嗎?','信息提示',mb_yesno+mb_iconinformation)=mryes then
       close;要负责任啦,不要乱讲,看来你水平有限啊,别出丑了。
      

  13.   

    TO:winxkm(蹩脚的程序员)默认值就是关闭啊 ,除按了“否”键不关闭canclose:=false外,其它都是关闭
    所以最简单的代码是在onclosequery中写如下的代码: 
    if Application.messagebox('确定要关闭吗?','提示',MB_YesNo)=ID_no then
         CanClose:=False;
      

  14.   

    呵呵,看你的对话框是怎么写的了。其实最好最完善的写法就是加else
      

  15.   

    CanClose:=Application.messagebox('确定要关闭吗?','提示',MB_YesNo)=ID_Yes;