Ereignissteuerung 3

Die Aufgabe, den Doppelklick einzubauen, führt teilweise zu erheblichen Problemen. Aber auch schon das Bemerken eines einfachen Anklickens gelingt nur mit besonderen 'Tricks'. Zur Erinnerung: Ein Knopf ist angeklickt worden, wenn auf ihm zuerst die Maus gedrückt und dann wieder losgelassen wurde. (So reagieren Knöpfe in allen Windows-Anwendungen)

Das heißt aber, dass die Abfrage 'angeklickt' der Knöpfe in der Ereignisschleife der Anwendung nicht nur dann aufgerufen werden darf, wenn die Maus gerade losgelassen wird. Denn: So kann ein Knopf gar nicht merken, ob bei Ihm vorher die Maus gedrückt wurde. Also muss die Abfrage 'angeklickt' auch beim gedrücktem Mauszustand aufgerufen werden, wobei aber diese Anfrage in diesem Moment eigentlich gar nicht sinnvoll ist, da der Knopf ja erst beim Loslassen als gedrückt gilt. 

Die Probleme haben ihre Ursachen im Wesentlichen in zwei Gründen: 

Aus der Beschreibung der Problemursachen ergeben sich auch mögliche Lösungsansätze:

Diese Überlegungen führen zuerst einmal zu folgender Klassenstruktur und Aufgabenverteilung:

Noch nicht geklärt ist zu diesem Zeitpunkt unserer Überlegungen, wer für die entsprechenden Reaktionen auf das Drücken, Anklicken, Doppelklicken der Knöpfe zuständig sein soll. Deswegen gibt es auch (noch ?) keine Methoden für Anfragen an die Knöpfe.  Wie nun auf Knopf-Ereignisse reagiert wird, folgt auf einer der nächsten Seiten.

Es empfiehlt sich hier aber zuerst einmal ein Blick auf ein entsprechendes Projekt. 
Das Projekt Knopf_Muehle_10_Knoepfe_melden_Ereignisse  kann hier heruntergeladen werden.

In diesem Projekt werden noch keine Mühlen-Reaktionen auf Knopfereignisse durchgeführt. Mit Hilfe der privaten Methode 'anzeigen' können die Knöpfe allerdings die entsprechenden Knopf-Ereignisse auf dem Bildschirm anzeigen.
Nicht ganz einfach ist die Programmierung der Maus-Ereignis-Bearbeitungs-Methoden der Knöpfe. Hier empfiehlt sich ein Blick in den Quellcode. Vielleicht wird er später an dieser Stelle noch weiter erläutert.