ユーザーが dbgrid をダブルクリックすると、非モーダル フォームが表示されます。
彼らがそのフォームを閉じたら、グリッドを更新したいと思います。
それを達成するために、私は次のことを試しました:
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 プロシージャは実行されません。私は何を間違っていますか?