@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;