ユーザがdbgridをダブルクリックすると、非モーダルフォームが表示されます。Delphiカスタムメッセージハンドラ
そのフォームを閉じると、グリッドを更新したいと思います。
それを達成するために、私は次のことを試してみました:
1 - カスタムメッセージ定数を定義します。
const
WM_REFRESH_MSG = WM_USER + 1; //defined in a globally available unit
2 - 私の非モーダルフォームのOnCloseのイベントでは、私はこれを持っています:
procedure TMyNonModalForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
PostMessage(Self.Handle,WM_REFRESH_MSG,0,0);
end;
3 - のDBGridを保持しているフォームのプライベート宣言では、私はこれを持っている:
procedure OnRefreshRequest(var Msg: TMessage); message WM_REFRESH_MSG;
...
procedure TMyFormWithADBGrid.OnRefreshRequest(var Msg: TMessage);
begin
RefreshGrid;
end;
これらの処理を行った後、PostMessageは正常に起動しますが、OnRefreshRequestプロシージャは決して実行されません。私は間違って何をしていますか?
1 - THandle 2を受け入れるようにモードレスフォームのコンストラクタを修正 - その新しいコンストラクタ 3でそれを呼び出す - その新しいハンドル 4にメッセージを投稿する - 素晴らしい作品! – JosephStyons