D6でMDIのエディタアプリケーションを作成しています。
MDIChildのOnCloseQueryイベントで編集中の場合は保存するかどうか問い合わ
せるダイアログを表示しています。
MainForm(MDIForm)のOnCloseQueryイベントではMDIChildが複数ある場合、
編集中のMDIChildを全部保存するか全部破棄するかのダイアログを表示したい
のですが、実際にアプリケーションを終了させると、MIDChildのOnCloseQuery
イベントが先に発生してしまい困っています。
MainFormの右上の×をクリックされた後で、MDIChildのOnCloseQueryイベント
が発生する前のタイミングで処理をしたい場合、どうすれば良いでしょうか?
MainFormのOnCloseQueryイベントで問い合わせするのをやめて、
MainFormのWndProcをオーバーライドして、WM_CLOSEメッセージを
処理すればいいでしょう。
※MDIChildCountが0でなければ問い合わせのダイアログを出す。
WIZARD of OZさん、お返事ありがとうございます。
WndProcのオーバーライドは良く分からないので、MainFormにWM_CLOSE
メッセージを処理する手続き
procedure WindowClose(var Msg: TMessage); message WM_CLOSE;
を追加する事で目的のタイミングを捕まえることができました。
アドバイスありがとうございました。
ツイート | ![]() |