zentral in der Mitte erkennen wir den Wertespeicher, wobei es sich nur um eine eigenständige Verwaltung der "Position" des Mauszeigers in der MausArea handelt. D.h. ich lasse die Mausposition (in diesem Fall nur in y-Richtung) nicht von dem Modul selbst verwalten, sondern nehme dies selbst vor, Warum? nun es liegt nur an den zusätzlichen Eigenschaften, die ich dem Regler zuweisen möchte: programmierbare Vorgabe-Werte, direktes Zurücksetzen auf den Vorgabe-Wert, verbunden mit einer Einteilung in Grob- und Feinregulirung und Vielfach-Messbereichen, kommt man nicht drumherum.
Das Modul MausArea ist sehr vielseitig einsetzbar, da es alle Mausereignisse berücksichtigt und auch sogar Cursortasten.
Ich stelle sie hier in einer Liste vor (ich habe die MausArea in y-Richtung mit einer Step-Weite 1 und 100 Schritten, Mausauflösung 101 und mit 100 Pixeln in y-Richtung gewählt):
- Maus-klick LINKS BL
Der Mausklick LINKS ergibt schon allein fünf Ereignisse:- Port 2: 54
Ausgabe der absoluten Positon auf der Area - Port 1: Wertausgabe, die sich aus dem eingestellten Range der MausArea und dem angeklickten Bereich errechnet. Wie in einem anderen Thread schon erwähnt und diskutiert, ist dies nicht unproblemtisch, da je nach Auflösung die relative Mausposition etwas kompliziert ausgewertet wird. Ich habe hier den Range 0..1 gewählt, so dass der Wert wie ein prozentualer Wert erscheint.
- Port 3: 1
erst jetzt wird der Maus-Klick LINKS ausgegeben - Port 2:
Ausgabe der absoluten Mausposition und - Port 3: 0
Abschluss beim Loslassen der Maus
Der Links-Klick ist ein Gate-Befehl; vor jeder Gate-Zustands-Änderung wird die absolute Mausposition ausgegeben.
Zieht man nun die Maus, so werden dazwischen relative (Y, hier Port 1) und absolute Koordinaten (PY, hier Port 2) ausgegeben. Das Ziehen mit der Maus ist nicht ganz unproblematisch, da die Mausposition nur mit DisplayClockRate abgefragt wird (also 25Hz), so dass beim schnellen Ziehen einige Werte überschritten werden: Das kann problematisch sein, da man ja nicht weiß, wie ein User seine ComputerMausbehandelt. Daher übernehme ich die Verwaltung der Werte immer selbst (sei es nun anhand der Werte Y oder PY). Was nämlich erhalten bleibt ist die Tatsache, dass die Maus nach oben oder unten gezogen wird, unabhängig davon, wie schnell diese Bewegung ist. Dies nutze ich aus, um selbst eine dekerement/inkrement-Funktion zu erstellen. Zu bemerken bleibt noch, dass nach dem Ziehen zuätzlich noch die letzte absolute Mausposition ausgegeben wird, so dass es zu einem zusätzlichen Event kommt; eine nicht unwesentliche Tatsache. Dies muss man unter Umständen durch einen Stepfilter unterbinden.
- Port 2: 54