Les 1 Objecten, Eigenschappen en Gebeurtenissen Programmeren met Visual Basic Karl Moens
Overzicht Oplossing van de vorige oefening Hoe werkt een VB-programma? Gebeurtenis-gestuurd Object-georiënteerd Objecten, eigenschappen en gebeurtenissen Oefening
Oplossing van de oefening Voeg volgende lijn toe in de procedures Sub cmdBericht_Click() en Sub cmdWissen_Click() frmHello.BackColor = RGB(Int(256 * Rnd), Int(256 * Rnd), Int(256 * Rnd)) Willekeurig getal tussen 0 en 1 Formulier Eigenschap Functie die getalwaarden omzet in kleurwaarden Geheel getal functie
Hoe werkt een VB-programma? Een VB-programma is gebeurtenis-gestuurd ("event driven"). Het wacht op gebeurtenissen en reageert daar dan op. Gebeurtenissen kunnen worden uitgelokt: extern (door de gebruiker of hardware); intern (door het programma zelf).
Hoe werkt een VB-programma? Externe gebeurtenissen Interactie van de gebruiker met de visuele (grafische) interface van het programma. Interactie van (interne of externe) hardware (bijv. Printer-poort, seriële interface, …). Interne gebeurtenissen Het VB-programma zelf genereert gebeurtenissen waarop dan andere onderdelen van het programma kunnen reageren.
Hoe werkt een VB-programma? Interactie van de gebruiker gaat via de diverse controls op de formulieren. Controls zijn een bijzondere vorm van objecten, nl. objecten die op een formulier kunnen worden geplaatst. Meestal hebben controls een visuele component (niet altijd: zie timer-control) VB is een object-georiënteerde programmeertaal.
Hoe werkt een VB-programma? Het programma wacht tot wanneer een object een gebeurtenis uitlokt Is er code voor deze event? neen ja Voer code voor deze gebeurtenis uit
Objecten, eigenschappen en gebeurtenissen De objecten worden bepaald door de waarde van hun eigenschappen. De gebeurteniscode zal zich moeten bezighouden met het uitlezen en aanpassen van deze eigenschappen.
Objecten, eigenschappen en gebeurtenissen Het programma moet via de schuifbalken de basiskleuren "mengen" en laten zien als achtergrondkleur van het formulier. De waarde van de basiskleuren wordt apart getoond in een label-veld, hetzij als absolute waarde, hetzij als percentage.
Objecten, eigenschappen en gebeurtenissen Open een nieuw project (Les1) Plaats op het formulier (frmLes1): drie horizontale scrollbalken (hsbRood, hsbGroen, hsbBlauw) Max=255; LargeChange=10 twee option buttons (optWaarde, optPercentage) optWaarde: Caption=Waarde; Value=True optPercentage: Caption=Percentage; Value=False een commandbutton (cmdSluiten) Caption=Sluiten drie labels (lblRood, lblGroen, lblBlauw) Caption=0; alignment=center Eigenschap frmLes1.Backcolor=0 (zwart)
Objecten, eigenschappen en gebeurtenissen Gouden Regel 1: Initialiseer het programma zoveel mogelijk via de eigenschappen van de objecten reeds bij het aanmaken van de objecten.
Objecten, eigenschappen en gebeurtenissen Het is eenvoudiger het uitzicht van de grafische interface te bepalen via de editor dan via het programma. VB neemt de initialisatie van de interface voor zijn rekening. Aanpassingen kunnen achteraf eenvoudig via de editor worden aangebracht, i.p.v. alle programmacode te moeten doorlopen.
Objecten, eigenschappen en gebeurtenissen Analyse van de werking: Een sluitknop om het programma te stoppen (click) Twee optieknoppen om te kiezen tussen absolute waarden en percentages: bij het klikken op deze knoppen moeten de waarden onmiddellijk aanpassen (click) Drie schuifregelaars om de kleurwaarden in te stellen: de waarden/percentages in de labelvakken moeten de wijzigingen volgen (change; scroll)
Objecten, eigenschappen en gebeurtenissen Voeg de 'End'-instructie toe aan de cmdSluiten_Click event Voor elk van de drie schuifbalken In de Change-event frmLes1.BackColor = RGB(hsbRood.Value, hsbGroen.Value, hsbBlauw.Value) lblBlauw.Caption = hsbBlauw Test het programma door op de pijltjes van de schuifbalk te klikken; door naast het schuifblokje te klikken; door het blokje te verschuiven.
Objecten, eigenschappen en gebeurtenissen De Change-event reageert niet op het verschuiven van het blokje. Pas als het blokje wordt losgelaten wordt de Change-event uitgelokt. Pas dan is de waardeverandering definitief. Om continu de waarde aan te passen: Scroll-event. Voor elke (tussentijdse) aanpassing van de waarde wordt deze event uitgelokt. Het eenvoudigste is voor elke Scroll-event de Change-event uit te lokken (interne gebeurtenis!)
Objecten, eigenschappen en gebeurtenissen Voeg toe in de Scroll-event van alle schuifbalken (aangepast aan de kleur) hsbBlauw_Change Test het programma opnieuw. Omschakelen tussen waarden en percentages: Waarden: 0 tot 255 Percentages: 0 tot 100 Percentage=waarde/2.55 De omschakelfactor wordt in een variabele (sngFactor) bewaard: deze is gelijk aan 1 als waarden worden getoond en 2.55 als percentages worden getoond.
Objecten, eigenschappen en gebeurtenissen Definieer de variabele: Dim sngFactor as Single (enkele precisie decimale waarde) Initialiseer sngFactor in de Form_load-event sngFactor = 1 Pas de Change-events van de schuifbalken aan zodat rekening wordt gehouden met deze factor lblBlauw.Caption = Int(hsbBlauw / sngFactor) Click-event van de optieknoppen optPercentage: sngFactor = 2.55 optWaarde: sngFactor = 1
Objecten, eigenschappen en gebeurtenissen De labelvakken moeten onmiddellijk opnieuw worden aangepast aan de nieuwe situatie: In de Click-events van de optieknoppen: lblBlauw.Caption = Int(hsbBlauw / sngFactor) lblGroen.Caption = Int(hsbGroen / sngFactor) lblRood.Caption = Int(hsbRood / sngFactor)
Objecten, eigenschappen en gebeurtenissen Gouden Regel 2: I.p.v. aparte variabelen te gebruiken, gebruik zoveel mogelijk rechtstreeks de eigenschappen van de objecten. Op deze wijze blijft de waarde van de eigenschap en het uitzicht of status van het object altijd synchroon in het ganse programma.
Nomenclatuur Om de leesbaarheid van de programmatekst te verhogen worden de namen van objecten en controls voorzien van een "prefix" van drie letters, zodat het duidelijk is om wat voor type control het gaat. De prefix wordt in kleine letters geschreven en de naam van het object of de controil begint met een hoofdletter.
Nomenclatuur frm Form chk Checkbox cbo Combobox cmd Command-button fra Frame hsb Horizontal Scrollbar vsb Vertical Scrollbar img Image lbl Label lst Listbox mnu Menu opt Optionbutton pic Picturebox txt Textbox tmr Timer obj Object
Oefening Pas het voorbeeldprogramma zo aan dat een klik op de scroll-pijltjes de waarde met 1, resp. 1% (afhankelijk van de gekozen optie) wordt aangepast. Idem (maar dan 10, resp. 10%) indien er naast het schuifblokje wordt geklikt.