AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Zweiten Klick von Doubleklick verhindern / ignorieren

Zweiten Klick von Doubleklick verhindern / ignorieren

Offene Frage von "himitsu"
Ein Thema von Getox · begonnen am 8. Jan 2020 · letzter Beitrag vom 22. Sep 2021
Antwort Antwort
Seite 3 von 4     123 4   
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
903 Beiträge
 
Delphi 6 Professional
 
#21

AW: Zweiten Klick von Doubleklick verhindern / ignorieren

  Alt 9. Jan 2020, 13:41
Hmm..

eine Alternative:

Das neue Formular NICHT im OnClick des Buttons erzeugen und Anzeigen!

Im OnClick ein PostMessage mit einer eigenen Message-ID an das aktuelle Form-Handle schicken. Und dann erst im MessageHandler-Funktion das neue Formular erzeugen und anzeigen.

Da die Message des PostMessage ans Ende der Messages gepackt wird und mit der Abarbeitung der vorherigen Messages weiter gemacht wird, werden zunächst noch alle anderen Messages (u.a. DblClick) abgearbeitet und dann erst deine Form-Message für das neue Formular.
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
259 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: Zweiten Klick von Doubleklick verhindern / ignorieren

  Alt 9. Jan 2020, 13:58
Das ändert so ziemlich gar nichts.

Es geht sich ja nicht direkt um den Doppelklick ansich.
Mit einer eigenen Windows-Nachricht verlagert sich das Problem nur. Trotzdem wird der zweite Klick auf dem neuen Formular ausgeführt.
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#23

AW: Zweiten Klick von Doubleklick verhindern / ignorieren

  Alt 9. Jan 2020, 14:23
Also einfach die Checkbox etwas anders platzieren im zweiten Formular, halte ich auch für die einfachste und beste Lösung. Besser als das Gefrickel mit Timern, Sleep und dem verbiegen von irgendwelchen Nachricht. Warum einfach, wenn es kompliziert geht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
1.650 Beiträge
 
Delphi 10.3 Rio
 
#24

AW: Zweiten Klick von Doubleklick verhindern / ignorieren

  Alt 9. Jan 2020, 21:38
[QUOTE=himitsu;1454748]
Es gibt auch die Möglichkeit die Maus zu verschieben.

z.B. kann man im Windows eine Funktion aktivieren, wo bei Dialogen die Maus direkt auf den Default-Button verschoben wird. (aber schnell wieder aus, denn das machte mich voll wuschig).
Und es gibt SetMousePos. Evtl. einfach temporär damit den Mauscursor irgendwo hin schicken.

Ich nutze das immer mit der aktuellen Mausposition wenn ich die Zeigerform ändern will, Windows das aber nicht gleich übernimmt.
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
576 Beiträge
 
Delphi 10.4 Sydney
 
#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
klaudina

Registriert seit: 18. Sep 2021
Ort: Fürth - Landkreis
4 Beiträge
 
#26

AW: Zweiten Klick von Doubleklick verhindern / ignorieren

  Alt 18. Sep 2021, 18:52
Hallo in die Runde!
Ich habe dieses Thema aufmerksam gelesen, -hochinteressant - aber richtig anwenden kann ich das bei meinem Problem dennoch nicht.

Ich habe beginnendes Parkinson, ich kann es oftmals nicht verhindern, daß statt eines Klicks mit der linken Maustaste immer gleich zweie -manchmal auch dreie - generiert werden. das nervt inzwischen gewaltig.
Ich hab es mit der Software "ClickFixSettings" versucht, aber damit werde ich auch nicht glücklich.
gibt es denn nicht eine Einstellung im System, der diese Mehrfachklicks, wenn sie kurz hintereinander kommen, einfach ignoruieren ? Bei der Tastatur geht das doch auch. Da erscheint bei der Eingabe von uund nur und etc. ( in Schreibprogrammen macht das ja hervorragend die Autokorrektur)

Gebt mir bitte mal einen Tipp, wo ich den Lötkolben an die Holzkiste ansetzen soll.

beste Grüße noch auch dem Frankenland

Klaus-Dieter
Klaus-Dieter
  Mit Zitat antworten Zitat
klaudina

Registriert seit: 18. Sep 2021
Ort: Fürth - Landkreis
4 Beiträge
 
#27

AW: Zweiten Klick von Doubleklick verhindern / ignorieren

  Alt 18. Sep 2021, 18:57
Hallo in die Runde!
Ich habe dieses Thema aufmerksam gelesen, -hochinteressant - aber richtig anwenden kann ich das bei meinem Problem dennoch nicht.

Ich habe beginnendes Parkinson, ich kann es oftmals nicht verhindern, daß statt eines Klicks mit der linken Maustaste immer gleich zweie -manchmal auch dreie - generiert werden. das nervt inzwischen gewaltig.
Ich hab es mit der Software "ClickFixSettings" versucht, aber damit werde ich auch nicht glücklich.
gibt es denn nicht eine Einstellung im System, der diese Mehrfachklicks, wenn sie kurz hintereinander kommen, einfach ignoruieren ? Bei der Tastatur geht das doch auch. Da erscheint bei der Eingabe von uund nur und etc. ( in Schreibprogrammen macht das ja hervorragend die Autokorrektur)

Gebt mir bitte mal einen Tipp, wo ich den Lötkolben an die Holzkiste ansetzen soll.

beste Grüße noch auch dem Frankenland

Klaus-Dieter

P.S. gerade eben wieder passiert beim klicken auf "Antworten"
Entschuldigung, aber du kannst nur alle 30 Sekunden einen Beitrag erstellen. Du musst noch 30 Sekunden warten, bevor du einen neuen Beitrag erstellen kannst.
Klaus-Dieter
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
505 Beiträge
 
Delphi 10.4 Sydney
 
#28

AW: Zweiten Klick von Doubleklick verhindern / ignorieren

  Alt 19. Sep 2021, 10:39
Hallo Klaus-Dieter

Reicht es nicht, wenn Du in den Mausoptionen die Doppelklickgeschwindigkeit anpasst?
Je nach Maus kannst Du auch die Tasten beliebig definieren/programmieren, so könntest Du allenfalls den Doppelklick allenfalls auf eine Taste legen, welche nur bewusst gedrückt werden kann.

Gruss
Roland
Roland
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.649 Beiträge
 
Delphi 10.4 Sydney
 
#29

AW: Zweiten Klick von Doubleklick verhindern / ignorieren

  Alt 19. Sep 2021, 11:14
Reicht es nicht, wenn Du in den Mausoptionen die Doppelklickgeschwindigkeit anpasst?
Das verlängert nur die Zeit, in der zwei Klicks als Doppelklick interpretiert werden, verhindert aber keinen schnellen Doppelklick.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Aviator
Online

Registriert seit: 3. Jun 2010
1.588 Beiträge
 
Delphi 10.3 Rio
 
#30

AW: Zweiten Klick von Doubleklick verhindern / ignorieren

  Alt 19. Sep 2021, 12:25
Reicht es nicht, wenn Du in den Mausoptionen die Doppelklickgeschwindigkeit anpasst?
Das verlängert nur die Zeit, in der zwei Klicks als Doppelklick interpretiert werden, verhindert aber keinen schnellen Doppelklick.
Verhindern nicht. Aber das war ja auch nicht das Ziel. Es soll nur nicht so "schnell" passieren wenn er mal gerade "nicht die Kontrolle darüber hat". Und wenn man die Doppelklickgeschwindigkeit so schnell macht wie das System es zulässt, dann schafft man es so schon fast nicht mehr den Doppelklick auszuführen. Also sollte ihm das schon helfen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 22:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf