当用户双击 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 过程永远不会运行。我究竟做错了什么?