Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Zweiten Klick von Doubleklick verhindern / ignorieren

  Alt 10. Jan 2020, 09:37
Knall doch ein TApplicationEvents auf dein Hauptformular.

Dann kannst du die Zeit der Mausklicks auswerten:

Wenn du in deiner Applikation nach einem Mauslinks-Klick auf ein Element während einer gewissen Zeit (im Beispiel unten 500ms) einen zweiten Mauslinks-Klick auf ein anderes Element verhindern willst, dann könntest du dies so tun:

Delphi-Quellcode:
var lmt : Cardinal;
    lhwnd : HWND;

procedure TForm175.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.message = WM_LBUTTONDOWN then
  begin
    if Msg.hwnd <> lhwnd then
    begin
      if Msg.time - lmt <= 500 then handled := true;
    end;

    lmt := Msg.time;
    lhwnd := Msg.hwnd;
  end;
end;
Wenn du in deiner Applikation nur für deinen Spezialfall diese Klicks verhindern willst, dann verwende die Handles der beteiligten Elemente.

Und wenn du Mauslinks Klicks ignorieren willst, welche während der Verarbeitung von irgendwas getätigt worden sind, dann merkst du dir für dieses Intervall I die Start- und Endezeit (GetTickCount) und prüfst in ApplicationEvents1Message ob die Msg.time in I liegt.

Wenn du unter Umständen generell alle Mausevents ignorieren willst, dann prüfe ob ( Msg.message >= WM_MOUSEFIRST ) and ( Msg.message <= WM_MOUSELAST ).


Message Queues
Michael Gasser
  Mit Zitat antworten Zitat