Viele PC-Mäuse verfügen neben der linken und rechten Maustaste auch über ein Mausrad. Dieses Mausrad lässt sich nach vorn oder zurück drehen. Außerdem kann man auch auf das Mausrad drücken, so dass das Mausrad als (mittlere) Maustaste fungiert. Das Mausrad wird bei vielen Programmen zum Scrollen durch die Inhalte von scrollbaren Komponenten oder für das Auslösen einer Zoom-Funktion für eine bestimmte Komponente benutzt.
In Gambas existiert für ausgewählte Komponenten das Ereignis 'Control_MouseWheel()'. Dieses Ereignis wird ausgelöst, wenn das Mausrad bewegt wird oder das Mausrad gedrückt wird, solange sich der Maus-Cursor über der Komponente befindet. Das Ereignis gibt den Wert Mouse.Delta vom Typ Float zurück. Der Wert ist +1, wenn das Mausrad vorwärts gedreht wurde und -1, wenn das Mausrad rückwärts gedreht wurde. Über die Eigenschaft Mouse.Middle können Sie feststellen, ob die mittlere Maustaste – das Mausrad – über einer Komponente gedrückt worden war.
Das vorgestellte Projekt realisiert einen Funktionsplotter, bei dem man den angezeigten Ausschnitt des Graphen einer Funktion über drei Button vergrößern [+], verkleinern [-] und wieder auf die Normalauflösung [1] zurückstellen kann.
Abbildung 14.2.3.1.1: Funktionsplotter
Zusätzlich sollte die Möglichkeit geschaffen werden, den Zoom-Faktor über das Mausrad in einem vorgegebenen Zoom-Bereich zu ändern.
Es wird hier nur die benutze Prozedur zur Realisierung der Zoom-Funktion angegeben, weil das vollständige Projekt Funktions-Plotter im Kapitel 23.4.6 besprochen wird:
[1] Public Sub dwgKS1_MouseWheel() [2] If Mouse.Delta = 1 Then ' Mausrad nach vorn → Bild vergrößern – vom Programmierer festgelegt [3] If fZoom < 300 Then [4] fZoom = fZoom + 5 [5] KS_RP_G_Zeichnen() ' Zeichnen von Koordinatensystem, Rasterpunkten und Graph der Funktion [6] Endif [7] Else [8] If fZoom > 20 Then [9] fZoom = fZoom - 5 [10] KS_RP_G_Zeichnen() [11] Endif [12] Endif [13] End ' dwgKS1_MouseWheel()
Kommentare:
Das vorgestellte Projekt realisiert einen WebBrowser, für den die Komponente WebView eingesetzt wird. Da diese Komponente bereits das Mausrad nutzt, um durch die Webseite vertikal zu scrollen, musste die Zoom-Funktion mit einem Schalter zu- oder abgeschaltet werden, um mit dem Ereignis MouseWheel() arbeiten zu können. Als Schalter wird als eine Möglichkeit hier die Steuerungstaste (Strg, Ctrl) benutzt.
Abbildung 14.2.3.2.1: Demonstrationsprogramm WebBrowser mit Zoom-Funktion (Mausrad)
Im folgenden Abschnitt wird der vollständige Quelltext für das Projekt angegeben und anschließend kommentiert:
[1] ' Gambas class file [2] [3] Public Sub Form_Open() [4] FMain.Center [5] WebView1.Url = "http://gambasdoc.org/help/comp/gb.qt4.webkit/webview?v3" [6] End ' Form_Open() [7] [8] Public Sub WebView1_MouseWheel() [9] If Mouse.Control Then [10] Select Case Mouse.Delta [11] Case -1 [12] If WebView1.Zoom < 2.26 Then [13] WebView1.Zoom = Round(WebView1.Zoom - Mouse.Delta / 4, -2) [14] Endif [15] Case +1 [16] If WebView1.Zoom > 0.61 [17] WebView1.Zoom = Round(WebView1.Zoom - Mouse.Delta / 10, -2) [18] Endif [19] End Select [20] Endif ' Mouse.Control = True? [21] End ' WebView1_MouseWheel() [22] [23] Public Sub WebView1_MouseDown() [24] If Mouse.Middle Then WebView1.Zoom = 1 [25] End ' WebView1_MouseDown() [26] [27] Public Sub btnHelpMe_Click() [28] Message.Info("Zoom-Funktion:\nTaste 'Steuerung' gedrückt halten und Mausrad drehen!") [29] End ' btnHelpMe_Click() [30] [31] Public Sub btnClose_Click() [32] FMain.Close [33] End ' btnClose_Click() [34]
Kommentare: