フォームが閉じられるのをキャンセルさせるには?

解決


Uga  2004-09-10 06:07:23  No: 10894

質問させて頂きます。

実行中、フォームを閉じる×ボタンクリックした時、「本当に閉じますか?」と確認のメッセージを表示させて、もしキャンセルを押されたら閉じるのをキャンセルする、という風にしたいのですが、やり方が今一分かりません。
FormのOnCloseでMessageBoxを使っても、キャンセルを押しても閉じられてしまうので駄目でした。

どうすればよいのでしょうか?ご教授お願いします。


TtPIPICH  URL  2004-09-10 06:23:36  No: 10895

CanCloseをFalseにします


TtPIPICH  URL  2004-09-10 06:29:35  No: 10896

ちなみにこれはテキストエディタGoopadのソースの一部を少し変えたものです。
だいぶ昔に書いたので汚くてわかりにくいですが。
procedure TMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
stop:boolean;
begin
stop:=false;
canclose:=true;
if MainEdit.Modified then
//MainEditというのはメモコンポです
begin
while stop=false do begin
 case MessageDlg('編集中のファイルを保存しますか?',
 mtConfirmation,[mbYes,mbNo,mbCancel],0) of
 id_Yes: stop:=Filesave;
//FileSaveってのは保存に成功するとTrueを返す関数
 id_No: stop:=True;
 id_Cancel: begin canclose:=false;stop:=True; end;
 end;
end;
end;
if CanClose and Application.Active then
begin
{設定の保存}
end;
end;


Uga  2004-09-10 09:16:45  No: 10897

わざわざサンプルまでありがとう御座います。おかげ様で思い通りの動作になりました。
TtPIPICHさん、ご教授ありがとう御座いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加