![]() |
TImage Doppelklick bei gesetzten OnClick Event
Hi, ich habe folgendes Problem: Ich habe einem Image ein OnClick Event zugewiesen und möchte jetzt dazu auch noch ein OnDblClick hinzufügen nur geht das nicht so wie ich mir das vorstelle. Denn wenn ich auf das Image doppelklicke dann nimmt das Programm es als zwei mal OnClick und nicht als OnDblClick an. Wie kann ich das ändern?
Danke Luki :spin: |
AW: TImage Doppelklick bei gesetzten OnClick Event
Du brauchst eine Zeitmessung, wo entschieden wird, ob es Doppel- oder Einfachklick ist. Damit du nicht dafür einen TTimer vergewaltigst, kannst du hier auch zB mit GetTickCount arbeiten. Du speicherst den TickCount beim OnClick und schaust beim nächsten OnClick, ob dieser innerhalb von zB 200ms liegt. Wenn ja, ist es ein Doppelklick.
Delphi-Quellcode:
var
StartTicks, CurTicks, PassedMs: Cardinal; begin StartTicks := GetTickCount; repeat CurTicks := GetTickCount; PassedMs := CurTicks - StartTicks; WriteLn(PassedMs, 'ms'); Sleep(100); until FALSE; end; |
AW: TImage Doppelklick bei gesetzten OnClick Event
Ich hätte ja gedacht, dass die Erkennung durch das Betriebssystem erfolgt:
http://de.wikipedia.org/wiki/Doppelklick#Mausaktionen der Doppelklick: das zweimalige Drücken der Maustaste kurz hintereinander, wobei die Maus nicht bewegt wird. Manche Programme unterstützen auch Drei- bis Fünffachklicks. Aufgrund der schwierigen Ausführung haben sich letztere aber nicht durchgesetzt. Bei den meisten Betriebssystemen ist der Zeitabstand einstellbar, in der die zweite Tastenbetätigung erfolgen muss, um als Doppelklick akzeptiert zu werden. Manchmal ist auch ein Schwellwert einstellbar, wie weit sich die Maus zwischen den beiden Klicks bewegen darf, da sich bei hochempfindlichen Mäusen ein vollkommener Stillstand kaum noch realisieren lässt. |
AW: TImage Doppelklick bei gesetzten OnClick Event
Wenn die Erkenneung durch das OS automatisch passieren würde, dann würden die Klickereignisse alle verzögert und das ist auch nicht so schön.
Das ist wie im FMX, wenn man schnell/kurz auf einen TButton klickt, dann sieht man das nicht, da der Button eben nicht kurz niederedrückt wird, so wie man das vom Windows und anderen OSen eigentlich kennt. |
AW: TImage Doppelklick bei gesetzten OnClick Event
Also die Erkennung erfolgt durch das Betriebssystem ... aber
bei jedem Doppel-Klick wird brav OnDblClick ausgelöst allerdings vorher wird OnClick noch ausgelöst. Es gibt damit also 2 Events die ausgelöst werden. |
AW: TImage Doppelklick bei gesetzten OnClick Event
Zitat:
Wenn man vor dem Auslösen des OnClick-Events noch warten würde, ob es nicht vielleicht doch ein OnDblClick wird, dann wäre das nicht ganz so praktischt. Wenn man wirklich OnClick und OnDblClick parallel haben will und dabei OnClick nicht mit ausgelöst werden soll, wenn das Andere, dann wird man das wohl selber behandeln müssen, da es sich allgemein/immer leider nicht umsetzen lässt. (vielleicht könnte man ins OS eine Option einbauen, welche bei Komponenten einzeln aktivierbar sind) Sellt mal die Behindertenoption ein ... Doppelklickerkennung auf 2,5 Sekunden :stupid: |
AW: TImage Doppelklick bei gesetzten OnClick Event
Zitat:
Zitat:
Wie geht das also dann? Im OnClick muss ich einen Timer starten, der kurze Zeit später das eigentliche OnClick startet. Im OnDblClick resette ich den Timer und schalte ihn aus. Das Interval des Timers setze ich auf GetDoubleClickTime+20, also etwas länger als die Doppelklickzeit. Allerdings würde ich mir die User Experience nochmal durch den Kopf gehen lassen: Vermutlich ist es keine gute Idee, bei einer Komponente sowohl Einfach- als auch Doppelklicks zu erlauben. Ziehen und Doppelklick kenne ich, aber 1x und 2x nicht. |
AW: TImage Doppelklick bei gesetzten OnClick Event
Der Benutzer ist durchaus mit Klick und Doppelklick vertraut.
Ein Klick im Explorer setzt die angeklickte Datei auf ausgewählt und ein Doppelklick öffnet die Datei. Aber es geht eben nur wenn die beiden Aktionen sich nicht gegenseitig behindern. Sonst benötigt man tatsächlich dieses Timer-Gedöns, was allerdings bei einem Doppelklick-Intervall von mehr als 1 Sekunde (ja, bestimmt ungewöhnlich) seltsam bis störend wirkt. |
AW: TImage Doppelklick bei gesetzten OnClick Event
Zitat:
Es ist auch beim Explorer manchmal blöd, das eine Datei ausgewählt wird, obwohl ich sie öffnen will. |
AW: TImage Doppelklick bei gesetzten OnClick Event
Ja, ein Doppelklick Event kommt eben immer mit einem vorhergehenden Klick Event daher (Vorgabe durch das Betriebssystem).
Ohne das Gefriemel (z.B. Timer) kann man die nicht isoliert behandeln. Besser wäre es wohl, das Konzept zu überdenken um den Benutzer nicht zu überraschen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz