Wenn ein Benutzer ein dbgrid doppelklickt, zeige ich ein nicht-modales Formular.Delphi benutzerdefinierte Nachrichtenhandler
Wenn sie dieses Formular schließen, möchte ich das Raster aktualisieren.
Um das zu erreichen, ich habe folgendes versucht:
1 - Definieren Sie eine benutzerdefinierte Nachricht Konstante:
const
WM_REFRESH_MSG = WM_USER + 1; //defined in a globally available unit
2 - Im OnClose Ereignis meiner nicht-modale Form, ich habe dies:
procedure TMyNonModalForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
PostMessage(Self.Handle,WM_REFRESH_MSG,0,0);
end;
3 - In den privaten Erklärungen der Form, die die dbGrid hält, ich habe dies:
procedure OnRefreshRequest(var Msg: TMessage); message WM_REFRESH_MSG;
...
procedure TMyFormWithADBGrid.OnRefreshRequest(var Msg: TMessage);
begin
RefreshGrid;
end;
Nach diesen Schritten wird die PostMessage ordnungsgemäß ausgeführt, aber die OnRefreshRequest-Prozedur wird nie ausgeführt. Was mache ich falsch?
1 - modifiziert, um den Konstruktor der modalen Form eines THandle 2 zu übernehmen lassen - die Nachricht an diesen neuen Griff 4 - - es 3 mit dem neuen Konstruktor aufrufen großen Werke! – JosephStyons