Hoofdstuk 3: 'Select Case'-instructie, berichtenvenster, gebeurtenissen formulier, opstartprocedures formulier en programmeerinzichten

Eindelijk, in dit hoofdstuk beginnen we met het echte programmeerwerk. De 2 vorige hoofdstukken waren nodig om dit hoofdstuk met succes te kunnen afhandelen. Nu bent u reeds aardig op weg om Visual Basic programmeur te worden.

1. Het gebruik van Select Case

Stel, u wil de gebruiker in een formulier laten kiezen uit 3 talen. De uitleg over de Message Box (MsgBox) vindt u in het volgende puntje (2. Syntax van Message Box).

Met onderstaande Select Case-instructie roept u het gewenste bericht op:

Select Case vs_taal  
Case Is "N"        
MsgBox "Nu verlaten ?"
Case Is "F"        
MsgBox "Quittez maintenant ?"
Case Is "E"        
MsgBox "End now ?"
Case Else          
MsgBox "Onbekende taal ?"
End Select

In het begin van hoofdstuk 4 gaan we de Select Case-instructie verduidelijken.

2. Syntax van berichtenvenster (MsgBox)

Een berichtenvenster of Message Box (MsgBox) is een formulier die de gebruiker d.m.v. een kort bericht op iets wijst. Dit venster wordt vaak gebruikt om de gebruiker op een foutieve invoer te wijzen bv. de gebruiker typte letters in een tekstvak uitsluitend bestemd voor getallen.

In ons algemeen voorbeeld  heeft de Message Box 3 elementen. Het eerste woord (hier: EINDE) komt in het midden van de Message Box. Het laatste woord (hier: AFSLUITEN) komt steeds bovenaan. Het soort Message Box bepalen we in het midden (hier: MsgBoxStyle.Information) Zie berichtenvenster hieronder:

Berichtenvenster

MSGBOX "EINDE"   --> Elementair (eenvoudigste notatie)

Opbouw van een berichtenvenster met een volledige notatie

MSGBOX ("EINDE" , MsgBoxStyle.Critical, "AFSLUITEN")                           
MSGBOX ("EINDE" , MsgBoxStyle. Exclamation,   " )                                            
MSGBOX ("EINDE" , MsgBoxStyle.Information,   "  )

Bij een volledige weergave van de Message Box hebben we 3 elementen.

Opmerkingen:

Ander concreet voorbeeld: in een spelletje geven we onderstaande code weer:

Dim vs_Antwoord As Integer
vs_Antwoord = (MsgBox("Wil je opnieuw spelen?", MsgBoxStyle.YesNo, "EINDE SPEL"))
If vs_Antwoord = vbYes Then
MsgBox("NIEUW SPEL")
Else
End If

Met dit berichtenvenster kunnen we dus meerdere kanten uit. De gebruiker dient immers te kiezen tussen yes of No (hier: ja of nee)

3. Opstartmogelijkheden formulier

Met een zelf gekozen formulier (form) opstarten

Klik met de rechter muisknop op het VB project (bv: WindowsApplication1) in Solution Explorer

U klikt nu op Properties (of dubbelklik op My Project)

Methodes formulieren en uitleg:

Form1.Show: tonen van Form1
Form1.Hide: verbergen van Form1
Form1.Close: sluit en van Form1

Gebruik instructie ME:

Deze VB instructie kunnen we enkel gebruiken als we een handeling willen verrichten met het formulier waarmee we op dit ogenblik bezig zijn.

Hieronder voorbeelden:
Me.Show(): tonen huidig formulier
Me.Hide(): verbergen huidig formulier
Me.Close(): sluit het huidig formulier (gebruikt geen geheugenruimte meer)

4. Enkele belangrijke programmeerinzichten

Voor VB instructies mag u kiezen tussen grote en kleine letters, u mag zelfs mengen. VB herkent deze instructies en plaatst ze in een kleurtje. Als u in de code de naam van een besturingselement (Control) of een formulier (Form) ingeeft en vervolgens een punt plaatst, krijgt u automatisch een scherm met mogelijkheden. Dit zijn de mogelijkheden die deze Control of Form heeft. Als u de verkeerde naam tijpt, krijgt u dit venster niet! Zo ziet u onmiddellijk dat u fout bezig bent.

Als u in een tekstvak (TekstBox) de eigenschap (Property) scrollbars gebruikt (bv. vertical) moet u Multiline op True plaatsen. Indien u dit niet doet, ziet de gebruiker deze schuifbalk niet.

Als u een controle wil uitvoeren op de gegevens die een gebruiker invoerde dan gebruikt u het Event genaamd Validating.

Toen u dubbelklikte op het tekstvak kreeg u automatisch TextBox1_TextChanged in het rechter vak - waar nu TextBox1_Validating staat, stond dan TextBox1_TextChanged.

De naam van de variabele kiezen we in onze voorbeelden willekeurig; u mag dus gerust een andere naam kiezen. 

Naam van de control. Focus Deze instructie plaatst de cursor in het betreffende besturingselement. Dit bevel kan u bijvoorbeeld gebruiken om de gebruiker - na een voorheen foute ingave - onmiddellijk in het juiste vak te plaatsen. Dat hij/zij een foutieve invoer deed, kan u duidelijk maken met een Message Box.

Als u iets programmeert mag u het uiteraard niet te vlug opgeven. Indien u het echt niet vindt, zoek dan geen uren maar laat het eens één of enkele dagen liggen. De oplossing schiet u dan vaak vanzelf binnen. 

Belangrijke tip: Vergeet niet om waar nuttig commentaartekst in de code te plaatsen. U dient dan wel in het begin van elke regel die commentaar bevat een accent te plaatsen. Bouw deze gewoonte nu reeds in want dit is heel belangrijk bij grote projecten en dit zowel voor uzelf als voor uw collega's.

Nog een uiterst belangrijke tip : weet dat er voor één opgave (oefening) steeds meerdere oplossingen zijn. Als het programma doet wat gevraagd werd, hebt u dit goed geprogrammeerd!

5. Gezamenlijke oefening

Met deze oefening verwerft u enkele bijkomende inzichten. We zullen een spelletje hoger/lager programmeren en gebruiken hierbij een Random-getal. Een Random-getal is een willekeurig getal, die de computer blindelings uit een trommel met getallen haalt. Dit Random-getal komt bovenaan in het formulier vooraleer we beginnen spelen; dus wordt het gelezen bij het laden van het formulier (form1_load).

We gebruiken de iconen, die u per e-mail ontving, om te tonen of we hoger of lager moeten raden. Het icoontje "vinkje" betekent dat we juist geraden hebben.

Bovendien wordt bijgehouden hoeveel keer we geraden hebben. Als we juist geraden hebben, krijgen we te zien in hoeveel keer we geraden hebben.

Enkele zaken worden gegeven (zie Form1 hierboven):

Knop (button) met Go: BtnGo (naam)
Het vierkante vakje links van BtnGo is een PictureBox: PictGo (naam)
Het vakje boven BtnGo is een tekstbak: txtGetal (naam)
Het vakje onder BtnGo is een label (geen LinkLabel): lblGo (naam)

Belangrijk : Het pad naar uw iconen

De regels waarin staat:

= Image.FromFile("c:\d\vb_net\up.ico") *
= Image.FromFile("c:\d\vb_net\down.ico") *
= Image.FromFile("c:\d\vb_net\ok.ico") *
= Image.FromFile("c:\d\vb_net\question.ico")*

Alle ico-bestanden bevinden zich in de code in de submap: c:\d\vb_net\ Deze submap heet vb_net en bevindt zich onder de map d. De map d staat op de schijf C Natuurlijk kan u verwijzen naar een zelf gekozen map op uw c-schijf !!!

Indien u verwijst naar een andere map of naar een andere schijf (bv. uw e-schijf) dan zal u dit in de code moeten aanpassen. Doet u dit niet dan zal het programma niet werken.

* De extensie ico betekent dat we een grafisch formaat hebben (toont een afbeelding).

De code correct overnemen is belangrijk. U dient bovendien zeer goed rekening te houden met voorgaande opmerkingen!

Als u een hekel hebt aan tijpwerk mag u ook de code kopiëren. Door in onderstaande code te klikken krijgt u een bestand waarin u code kan selecteren en vervolgens kopiëren naar het codevenster binnen Visual Basic.

KLIK HIER OM HET BESTAND TE OPENEN !

Probeer deze code zo goed mogelijk te begrijpen. De instructie Call berekenen die u vindt in de procedure "(Private Sub) Form1_Load" roept de procedure "(Private Sub)Op_Random_Getal" aan. Daar Private Sub betekent dat er een procedure is, mogen we deze woorden weglaten en er Call voor zetten. Hij roept dan - zoals in bovenstaande oefening - deze procedure aan.

Indien er in deze code toch nog een foutje zou staan, zoek dan even zelf. U bent programmeur in wording en programmeren is vooral DOEN !

Op het einde van de procedure BtnGo_Click gebruik ik Me.Refresh. Dit is niet verplicht maar kan nuttig zijn om het scherm te vernieuwen. Meestal gebeurt dit automatisch.

6. Oefening

U maakt een formulier dat een label, een tekstvak en een knop (button) bevat. Het ziet eruit zoals hieronder.

We verbeteren de werking van dit formulier door te controleren of het tekstvak bij het aanklikken (Click-gebeurtenis) leeg is. Maak tevens een berichtenvenster (Message Box), dat enkel verschijnt als het tekstvak leeg is. Dit bericht dient te verschijnen als de gebruiker klikt op de OK-knop. Om het iets makkelijker te maken geven we de code - zonder toevoeging van de instructie van de Message Box - mee. Zie onderdstaande code:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim var1 As String
var1 = TextBox1.Text
If var1 = "" Then
TextBox1.Focus()
'Met TextBox1.Focus() plaatst hij de cursor terug in het tekstvak!
End If
End Sub

If var1="" Then uit bovenstaande code betekent: Als var1 leeg is dan. Var gebruiken we als afkorting van variabele.

U programmeert nu een regel binnen deze voorwaardenstructuur. Deze regel toont - indien de gebruiker niets invoerde in het tekstvak en hij klikt op de OK-knop - een berichtenvenster. Bericht: Getal invoeren a.u.b.!

Controleer op gebruikersniveau (Debug --> Start Debugging) of alles perfect werkt. We zagen reeds eerder dat het controleren van een programma heel belangrijk is.


© Marc Vandenbussche d.d. 04 oktober 2006