Les 4 De Muis (deel 1) Programmeren met Visual Basic Karl Moens
Overzicht Oplossing van de vorige oefeningen Geschiedenis Aansturen van de muis Oefening
Oplossing van de oefeningen Zie programma Les3F
De Muis De Muis werd uitgevonden door Douglas Engelbart in de jaren 60 en voor het eerst gedemonstreerd in 1968 in Californië (zie http://sloan.stanford.edu/MouseSite/Archive.html en http://www-2.cs.cmu.edu/~amulet/ papers/uihistory.tr.html ) en was bedoeld als vervanging van de reeds sedert 1954 in gebruik zijnde lightpen.
Aansturen van de muis De muis wordt beheerd door het Windows-systeem. Visual Basic heeft een aantal mogelijkheden om deze systeem-functies te gebruiken in een programma
Aansturen van de muis De belangrijkste parameters van de muis kunnen worden uitgelezen: positie (x en y) beweging van de muis (van en naar objecten) toestand van de muisknoppen indrukken en loslaten van de muisknoppen (zie programma Les4A.vbp)
Aansturen van de muis Algemene regel: Het object waarboven de muispointer zich bevindt zal de "mouse-events" beheren. Indien er geen specifiek object onder de muis is, zal het formulier de "mouse-events" afhandelen.
Aansturen van de muis De positie van de muis: De positie van de muis boven objecten of boven het formulier wordt automatisch door VB beheerd: het juiste object/formulier krijgt de gebeurtenissen te verwerken. De positie van de muis uitgedrukt in coordinaten (X en Y) worden continu bijgehouden in de MouseMove-event.
Aansturen van de muis Private Sub Form_MouseMove(button As Integer, shift As Integer, x As Single, y As Single) x is de x-coordinaat (horizontaal) y is de y-coordinaat (verticaal) De positie (0,0) is de linkerbovenhoek van het formulier (zonder de titelbalk) of object De standaard gebruikte maateenheid is de twip (1 inch = 1440 twips)
Aansturen van de muis Andere maateenheden: cm, mm en inch points (1 inch = 72 points) pixels (afhankelijk van de computer) character (een rechthoek van 120 twips breed en 240 twips hoog)
Aansturen van de muis Welke eenheden worden gebruikt hangt af van de ScaleMode-eigenschap van het formulier Twips 1 Point 2 Pixel 3 Character 4 Inch 5 mm 6 cm 7
Indien meerdere knoppen zijn ingedrukt worden de waarden opgeteld. Aansturen van de muis De MouseMove-event wordt uitgelokt telkens wanneer de X en/of Y coordinaat van de muis wijzigt. Op dat moment kan ook de toestand van de muisknoppen worden gecontroleerd via de waarde Button: Links 1 Rechts 2 Midden 4 Indien meerdere knoppen zijn ingedrukt worden de waarden opgeteld.
Aansturen van de muis Tegelijk worden ook de Shift-toetsen uitgelezen in de Shift-waarde: Ook hier zijn combinaties mogelijk door de waarden op te tellen! Shift 1 Ctrl 2 Alt 4
Aansturen van de muis Ook het indrukken of loslaten van een muisknop is een gebeurtenis: Private Sub Form_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) Private Sub Form_MouseUp(button As Integer, shift As Integer, x As Single, y As Single)
Aansturen van de muis Opgelet! De waarde van button is steeds maar de waarde van één muisknop (geen combinaties mogelijk zoals bij MouseMove). Deze events registreren iedere beweging van iedere muisknop apart! vb: een dubbelklik met de linkermuisknop is dus MouseDown; MouseUp; MouseDown; MouseUp met telkens button = 1
Aansturen van de muis Sommige objecten kennen ook een Click of DblClick-gebeurtenis. Deze gebeurtenissen kunnen echter geen onderscheid maken tussen linker/midden/rechter-muisknop. Indien er voor een object zowel een Click als een DblClick-event is gedefiniëerd, wordt de DBLClick nooit uitgevoerd omdat de Click-event voorrang krijgt.
Aansturen van de muis De volgorde van de events is verschillend voor verschillende types objecten: Form, Label, PictureBox: MouseDown, MouseUp, Click CommandButton MouseDown, Click, MouseUp
Oefening Maak een eenvoudig tekenprogramma. Het tekenen gebeurt uiteraard met de muis! Voorzie de mogelijkheid om in verschillende kleuren te werken en eventueel met verschillende "borstels".