Event form 1:
procedure TForm1.Panel1DblClick(Sender: TObject);
begin
TForm2.Create(Self).ShowModal;
end;
Event form 2:
procedure TForm2.DBGrid1CellClick(Column: TColumn);
begin
ShowMessage('Test');
end;
What should I do to avoid fom2's onCellClick event?
@Schokohase I see. Yes its windows. I don't know why does it fire MouseUp after DblClick... Your version could be also strange if someone does not releases the button after the second click.
I'd still go with something like this, if there are no other side effects:
(Well, actually a modal window overtakes the message loop, so no effect beyond modal forms.)
var
WasDblClick: boolean;
procedure TForm1.MyOnMessage(var Msg: TMsg; var Handled: boolean);
begin
case Msg.Message of
WM_LBUTTONDBLCLK:
WasDblClick := True;
WM_LBUTTONUP:
if WasDblClick then
begin
// v0.2
Msg.Message := WM_CANCELMODE;
WasDblClick := False;
{
// v0.1
PostMessage(Msg.hwnd, WM_CANCELMODE, 0, 0);
WasDblClick := False;
Handled := True;
}
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := MyOnMessage;
end;