DoppelClick soll Vorrang vor Click haben
Andreas Lindig
- javascript
Hallo Forum,
kann man eigentlich Klick und Doppelklick gegeneinander abgrenzen? Also mir schwebt dieser Vorgang vor:
if(Doppelklick)
{
tu dies
}
else if(Click)
{
tu jenes
}
wie aus dem Listing schon hervorgeht, soll der Doppelklick Vorrang haben und in seinem Fall der einfache Klick-Handler gar nicht ausgeführt werden. Ich habe also zwei Aufrufe in meinem Objekt: onClick und onDblClick.
Im Moment wird aber bei onDblClick auch die onClick-Funktion ausgeführt, das würde ich gern unterbinden. Das einzige was mir einfällt ist, das Click-Event in eine Warteschleife zu schieben - mind. so lange, wie ein Doppelklick dauert - und dann zu prüfen, ob ein Doppelklick stattgefunden hat. Aber da muß ich ja alles überwachen. Das kommt mir sehr kompliziert vor.
Gruß, Andreas
Hallo Andreas,
kann man eigentlich Klick und Doppelklick gegeneinander abgrenzen?
Nein. Schlicht und ergreifend: Nein.
In einem ereignisgesteuerten GUI mit Mausbedienung, ganz gleich, ob das nun Windows, KDE, OS-X oder was auch immer ist, wird immer beim ersten Mausklick schon mal das Ereignis "Einzelklick" signalisiert. Normalerweise wird das Programm daraufhin sofort die zugeordnete Funktion ausführen. Kurze Zeit später folgt dann ein zweiter Klick, und anhand der seit dem letzten Klick verstrichenen Zeit entscheidet das GUI nun, ob es ein weiteres "Einzelklick"-Ereignis an die Applikation übermittelt oder ein "Doppelklick".
Daraus folgt:
Mit einem Einzelklick darfst du nur Funktionen ausführen, die als Vorbereitung für den Doppelklick dienen könnten.
Beispiel aus dem Windows-Explorer: Mit einem Einzelklick wird eine Datei markiert, mit dem Doppelklick geöffnet. Das vorherige Markieren fügt sich harmonisch in diese Ereigniskette ein. Ein Widerspruch wäre nun z.B., wenn man mit dem Einzelklick das Eigenschaften-Fenster öffnen wollte, mit einem Doppelklick aber die entsprechende Datei öffnen. Denn dann hätte das Explorer-Fenster beim zweiten Klick schon längst den Focus verloren, weil der Eigenschaften-Dialog hochkam.
Klar was ich sagen möchte?
wie aus dem Listing schon hervorgeht, soll der Doppelklick Vorrang haben und in seinem Fall der einfache Klick-Handler gar nicht ausgeführt werden. Ich habe also zwei Aufrufe in meinem Objekt: onClick und onDblClick.
Das geht nicht, oder nur mit einem Umweg, den du selbst schon umrissen hast.
So long,
Martin
Hallo Martin,
Klar was ich sagen möchte?
ja, eigentlich sehr einleutend das. Da war mein Konzept wohl scheiße. Vielen Dank.
Gruß, Andreas
Hallo.
Im Moment wird aber bei onDblClick auch die onClick-Funktion ausgeführt, das würde ich gern unterbinden. Das einzige was mir einfällt ist, das Click-Event in eine Warteschleife zu schieben - mind. so lange, wie ein Doppelklick dauert - und dann zu prüfen, ob ein Doppelklick stattgefunden hat. Aber da muß ich ja alles überwachen. Das kommt mir sehr kompliziert vor.
Weshalb? Wenn ein einfacher Klick einen Zähler hochsetzt, der nach einer kurzen Zeit automatisch wieder auf Null gesetzt wird, du aber bei jedem Klick zunächst den Zählerstand abfragst und entsprechend verzweigst, sollte doch ein n-fach-Klick möglich sein.
MfG, at