Hoofdstuk 3: 'Select Case'-instructie, berichtenvenster, toetsactivering, gebeurtenissen form, opstartprocedures form 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 .net 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 'Message Box' (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 ziet de 'Message Box' eruit zoals op het volgende blad. 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: 'Exclamation' (uitroepteken))

Berichtenvenster

Berichtenvenster 1

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

Nieuw in VB.net
MSGBOX ("EINDE" , MsgBoxStyle.Critical, "AFSLUITEN")
'' MsgBoxStyle. Exclamation, "
'' MsgBoxStyle.Information, ''
Bij een volledige weergave van de 'Message Box' hebben we 3 elementen.

Het middelste element nl. de VB-code is gewijzigd:

Vroeger: vbCritical Nu: MsgBoxStyle.Critical

Vroeger: vbExclamation Nu: MsgBoxStyle. Exclamation

Vroeger: vbInformation Nu: MsgBoxStyle. Information

Ander concreet voorbeeld: in een spelletje geven we onderstaande code weer.
dim vs_Antwoord as Integer

vs_Antwoord=MSGBOX("Wil je opnieuw spelen?", MsgBoxStyle.Question + vbYesNo, "EINDE SPEL")

if vs_Antwoord=vbyes then
else
end if

We analyseren de belangrijkse regel uit dit spelletje:

vs_Antwoord=MsgBox("Wil je opnieuw spelen?", vbQuestion + vbYesNo, "EINDE SPEL")

hand met Wijsvinger Aan de linker kant van het gelijkheidsteken staat de variabele vs_Antwoord.
hand met Wijsvinger Rechts ziet u MsgBox, die staat voor berichtenvenster of 'Message Box'. Bovenaan het berichtenvenster komt "EINDE SPEL". In het midden van dit berichtenvenster krijgt de gebruiker de vraag "Wil je opnieuw spelen?". Hij kan vervolgens kiezen voor 'Yes' of 'No'.

Iets verder in dit hoofdstuk zullen we het spel hoger/lager samen programmeren.

3. Toetsactivering

Wat gebeurt er bij het indrukken van een toets ?
- KeyDown (=Key-code)
- KeyPress (=Key-code)
- KeyUp (=Key-code)

4. Opstartmogelijkheden van het formulier

- Met een zelf gekozen formulier (form) opstarten

Klik met de rechter muisknop op het VB project (Hier: 'WindowsApplication11') in 'Solution Explorer' (zie afbeelding 6)

Solution Explorer

Afbeelding 6

Kies nu voor eigenschappen (Properties) die u onderaan de lijst vindt.

U krijgt nu onderstaand scherm te zien:

WindowsApplication Property Pages

Afbeelding 7

Onder 'Startup object' (afbeelding 7) kan u door te klikken op het pijltje, kiezen met welk formulier u wil opstarten. Klik vervolgens op OK.

- Een scherm sluiten en een ander opstarten.

LOAD

Form1.Show 0

1 = vbModal -->Als de gebruiker beslist moet antwoorden.

Form1.Show

LOAD --> Form1.Show 0 1 = vbModal ---> Als de gebruiker beslist moet antwoorden.

'Form1.Show' (doet: LOAD Form1 & Form1.Show)

Schrijfwijzen - in de code - voor de form:
Form1.Show.vbModal
Form1.Show

Methodes forms en verklaring:
Form1.Show: tonen van Form1
Form1.Hide: verbergen van Form1
Form1.Visible : zichtbaar maken van Form1

Gebruik instructie ME:

hand met Wijsvinger De VB-instructie ME kunnen we enkel gebruiken als we een handeling willen verrichten met het formulier waarmee we op dit ogenblik bezig zijn. Als u in de code van dit formulier aan het programmeren bent, gebruikt u bij voorkeur 'ME'.

Hieronder voorbeelden:

Me.Show : tonen huidig formulier
Me.Hide : verbergen huidig formulier
Me.Close : sluit het huidige formulier (gebruikt geen geheugenruimte meer)
Me.Visible : maakt het huidig formulier zichtbaar

5. Enkele belangrijke programmeerinzichten

Bij 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 intikt, 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'. Het voorbeeld ziet u op "Codevenster 3".

Codevenster

Codevenster 3

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 paatsen. 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!

6. 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 icoontjes om te tonen of we hoger of lager moeten raden. Deze iconen kan u volledig vrijblijvend bestellen door onderaan deze site te klikken op Marc Vandenbussche. 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 dit geraden hebben.

Formulier

Enkele zaken worden gegeven:

- 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("e:\d\vb_net\up.ico")
= Image.FromFile("e:\d\vb_net\down.ico")
= Image.FromFile("e:\d\vb_net\ok.ico")
= Image.FromFile("e:\d\vb_net\question.ico")

hand met Wijsvinger Alle ico-bestanden bevinden zich in de code in de submap: e:\d\vb_net\ Deze submap heet vb_net en bevindt zich onder de map d. De map d staat op de schijf e. Natuurlijk kan u verwijzen naar een zelf gekozen map op uw c-schijf !!!
   
hand met Wijsvinger Indien u verwijst naar een andere map of naar een andere schijf (bv. uw c-schijf) dan zal u dit in de code moeten aanpassen. Doet u dit niet dan zal het programma niet werken.

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

Dim sho_Getal As Short
Dim sho_Beurten As Short
' sho is de naamconventie van short vb'n: sho_Getal,sho_Beurten

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txtGetal.Text = ""
lblGo.Text = ""
PictGo.Image = Image.FromFile("e:\d\vb_net\question.ico")
Call Op_Random_Getal()
End Sub

Private Sub BtnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGo.Click
sho_Beurten = sho_Beurten + 1
Select Case Val(txtGetal.Text)
Case Is < sho_Getal
PictGo.Image = Image.FromFile("e:\d\vb_net\up.ico")
Case Is > sho_Getal
PictGo.Image = Image.FromFile("e:\d\vb_net\down.ico")
Case Else
PictGo.Image = Image.FromFile("e:\d\vb_net\ok.ico")
lblGo.Text = "Aantal beurten : " & sho_Beurten
If MsgBox("Nog", vbYesNo, "SPEEL") = vbYes Then
PictGo.Image = Image.FromFile("e:\d\vb_net\question.ico")
lblGo.Text = ""
Call Op_Random_Getal()
Else
End
End If
End Select
txtGetal.Text = ""
End Sub

Private Sub Op_Random_Getal()
Randomize()
sho_Getal = Int((100 * Rnd()) + 1)
sho_Beurten = 0
Me.Text = sho_Getal
'Onderstaande regel zorgt voor de schermverversing.
Me.Refresh()
End Sub

Probeer deze code zo goed mogelijk te begrijpen. De instructie 'Call Op_Random_Getal' 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.

Ik gebruik in de laatste procedure de code 'Me.Refresh'. Dit is niet verplicht maar kan nuttig zijn om het scherm te vernieuwen. Meestal gebeurt dit automatisch.

7. Oefening

Deze oefening is niet opgenomen in deze website. U kan echter de volledige cursus, die bestaat uit 10 hoofdstukken (incl. 2 appendices) en 114 pagina's, bestellen. Meer info vindt u onder de link "Bestellen cursus" (linker kolom).

======================================
© Marc Vandenbussche d.d. 20 december 2002