|
Antwoorden hoofdstuk 8
|
|
|
1a. |
Bij de properties (= eigenschappen) van de command-button (klik eerst op de command-button, en ga dan naar het propertiesvenster)
voer je bij Caption Geef het antwoord in.
|
b. |
Bij de properties van het formulier (klik eerst op een leeg gedeelte van het formulier, en ga dan naar het propertiesvenster)
ga je naar BackColor. Als je daar achter klikt verschijnt er een pijltje. Daar klik je op, en klik dan op het tabblad Palette
en kies de kleur zwart uit.
|
c. |
Dubbelklik op de command-button. Dan krijg je de bijbehorende code (de event-handler) in beeld.
Verander de regel:
If g2<>0 then Text6.text=Str(q) else Text6.text = " "
in:
If g2<>0 then Text6.text=Str(q) else Text6.text = "Sukkel, delen door nul is flauwe kul !"
|
d. |
Zet een command-button op het formulier, en vul in het propertiesvenster bij Caption Reset in.
Dubbelklik op de nieuwe command-button. Dan kun je de bijbehorende code (de event-handler) invoeren.
Voer in:
text1.text=""
text2.text=""
text3.text=""
text4.text=""
text5.text=""
text6.text=""
|
e. |
Bij de properties van het label (klik eerst op het label, en ga dan naar het propertiesvenster)
voer je bij Caption Kleinste in.
Dubbelklik op de Bereken-button. Dan krijg je de bijbehorende code (de event-handler) in beeld.
Verwijder de regel met:
if g2<>0 then q = g1 / g2
En verander de regel:
If g2<>0 then Text6.text=Str(q) else Text6.text = " "
in:
If g1 < g2 then Text6.text=Str(g1) else Text6.text = Str(g2)
|
|
|
2a. |
Maak eerst de interface.
Zet 5 tekstvenstertjes naast elkaar. Noem het eerste txtGetal1, zet in het tweede een x, noem het derde txtGetal2,
zet in het vierde een =, en noem het vijfde txtUitkomst.
Zet daaronder een label, noem dat lblGoedzo, en maak dat bij de start onzichtbaar (zet in het propertiesvenster visible op false).
Dubbelklik op een leeg gedeelte van het formulier. Dan kun je de code invoeren, die bij de start van het formulier wordt
uitgevoerd. Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub Form_Load( )
dim g1, g2 As Integer
Randomize
g1 = Int (Rnd * 6) + 5
txtGetal1.Text = Str(g1)
g2 = Int (Rnd * 6) + 5
txtGetal2.Text = Str(g2)
txtUitkomst=""
End Sub
Dubbelklik dan het vijfde tekstvenster. Dan kun je de code invoeren, die wordt wordt
uitgevoerd als je iets aan dat tekstvenster verandert.
Rechtsboven is automatisch Change verschenen, maar dat moeten we niet hebben: kies Keypress uit.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub txtUitkomst_KeyPress(KeyAscii As Integer)
dim g1,g2,u As Integer
If KeyAscii = 13 Then
g1 = Val(txtGetal1.Text)
g2 = Val(txtGetal2.Text)
u = Val(txtUitkomst.Text)
lblGoedzo.Visible = True
If u = g1 * g2 Then
lblGoedzo.Caption = "Goed zo !"
Else
lblGoedzo.Caption="Nee, het goede antwoord is "+Str(g1*g2)
End If
End If
End Sub
|
b. |
Maak eerst de interface.
Zet een command-button op het formulier, en zorg er voor dat het opschrift Geef een som wordt.
Zet daaronder 5 tekstvenstertjes naast elkaar. Noem het eerste txtGetal1, zet in het tweede een +, noem het derde txtGetal2,
zet in het vierde een =, en noem het vijfde txtUitkomst.
Maak die 5 tekstvenstertjes bij de start onzichtbaar (zet in het propertiesvenster visible op false).
Zet daaronder een label, noem dat lblGoedzo, en maak dat bij de start onzichtbaar (zet in het propertiesvenster visible op false).
Dubbelklik dan op de command-button. Dan kun je de code invoeren, die bij het klikken op die knop wordt
uitgevoerd. Voer dan het volgende in (de eerste en de laatste regel staan er al):
dim g1, g2 As Integer
Randomize
g1 = Int (Rnd * 11) + 20
txtGetal1.Text = Str(g1)
g2 = Int (Rnd * 11) + 20
txtGetal2.Text = Str(g2)
txtUitkomst=""
Dubbelklik dan het vijfde tekstvenster. Dan kun je de code invoeren, die wordt wordt
uitgevoerd als je iets aan dat tekstvenster verandert.
Rechtsboven is automatisch Change verschenen, maar dat moeten we niet hebben: kies Keypress uit.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub txtUitkomst_KeyPress(KeyAscii As Integer)
dim g1,g2,u As Integer
If KeyAscii = 13 Then
g1 = Val(txtGetal1.Text)
g2 = Val(txtGetal2.Text)
u = Val(txtUitkomst.Text)
lblGoedzo.Visible = True
If u = g1 + g2 Then
lblGoedzo.Caption = "Goed zo !"
txtGetal1.visible = false
txtGetal2.visible = false
Text1.visible = false
Text2.visible = false
txtUitkomst.visible = false
Else
lblGoedzo.Caption="Fout, nog eens"
txtUitkomst.Text=""
End If
End If
End Sub
|
c. |
Maak eerst de interface, zoals beschreven bij de opgave.
Noem het tekstvenster, waarin het antwoord moet worden ingevoerd, txtAntwoord.
En noem het label, waar Goed of Fout op komt lblGoedzo,
en maak dat bij de start onzichtbaar (zet in het propertiesvenster visible op false).
Dubbelklik dan op het antwoordvenster. Dan kun je de code invoeren, die wordt wordt
uitgevoerd als je iets aan dat tekstvenster verandert.
Rechtsboven is automatisch Change verschenen, maar dat moeten we niet hebben: kies Keypress uit.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub txtAntwoord_KeyPress(KeyAscii As Integer)
dim a as string As String
If KeyAscii = 13 Then
a = txtAntwoord.Text
lblGoedzo.Visible = True
If a = "table" Then
lblGoedzo.Caption = "Goed zo !"
Else
lblGoedzo.Caption="Fout, het goede antwoord is table"
End If
End If
End Sub
|
d. |
Maak eerst de interface.
Zet 5 tekstvenstertjes naast elkaar. Noem het eerste txtGetal1, zet in het tweede een x, noem het derde txtGetal2,
zet in het vierde een =, en noem het vijfde txtUitkomst.
Zet daaronder een label, noem dat lblGoedzo, en maak dat bij de start onzichtbaar (zet in het propertiesvenster visible op false).
Dubbelklik op een leeg gedeelte van het formulier. Dan kun je de code invoeren, die bij de start van het formulier wordt
uitgevoerd. Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub Form_Load( )
dim g1, g2 As Integer
Randomize
g1 = Int (Rnd * 6) + 5
txtGetal1.Text = Str(g1)
g2 = Int (Rnd * 6) + 5
txtGetal2.Text = Str(g2)
txtUitkomst = ""
t1 = timer
End Sub
De variabele t1 moet nog gedeclareerd worden, maar dat moet niet de event-handler voor Form_Load want dan is het programma
de begintijd weer vergeten zodra die event-handler is uitgevoerd.
Het moet een globale variabele zijn.
Klik daarom in het programmavenster linksboven op het pijltje, en kies dan de bovenste mogelijkheid uit: General.
Rechtsboven staat dan "declarations" als het goed is.
In dat programmagedeelte typ je in:
Dim t1 As Single
Dubbelklik dan het vijfde tekstvenster. Dan kun je de code invoeren, die wordt wordt
uitgevoerd als je iets aan dat tekstvenster verandert.
Rechtsboven is automatisch Change verschenen, maar dat moeten we niet hebben: kies Keypress uit.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub txtUitkomst_KeyPress(KeyAscii As Integer)
dim g1,g2,u As Integer
dim t2, t As Single
If KeyAscii = 13 Then
g1 = Val(txtGetal1.Text)
g2 = Val(txtGetal2.Text)
u = Val(txtUitkomst.Text)
lblGoedzo.Visible = True
t2 = timer
t = t2 - t1
If u = g1 * g2 Then
lblGoedzo.Caption = "Goed zo, je tijd was " + str(t)
Else
lblGoedzo.Caption="Nee, nog eens"
txtUitkomst.Text=""
End If
End If
End Sub
|
|
|
3a. |
Maak de interface zoals beschreven.
Noem de lisbox lstNamen, noem de textbox txtNaam, noem de voegtoe-button cmdVoegtoe, noem de wijzig-button cmdWijzig en
noem de verwijder-button cmdVerwijder.
|
b. |
Dubbelklik op de listbox. Dan kun je de code invoeren, die wordt uitgevoerd als je op een item in de listbox klikt.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub lisNamen_Click()
Dim n As Integer
Dim h As String
n = lstNamen.ListIndex
If n > = 0 Then
h = lstNamen.List(n)
txtNaam.text = h
Else
MsgBox ("Je moet eerst een naam selecteren!")
End If
End Sub
|
c. |
Dubbelklik op de voegtoe-button. Dan kun je de code invoeren, die wordt uitgevoerd als je op de de voegtoe-button klikt.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub cmdVoegtoe_Click()
Dim n As Integer
Dim h As String
n = lstNamen.ListIndex
If n > = 0 Then
h = txtNaam.text
lstNamen.AddItem (h, n+1)
Else
lstNamen.AddItem (h)
End If
End Sub
|
d. |
Dubbelklik op de wijzig-button. Dan kun je de code invoeren, die wordt uitgevoerd als je op de de wijzig-button klikt.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub cmdWijzig_Click()
Dim n As Integer
Dim h As String
n = lstNamen.ListIndex
If n > = 0 Then
h = txtNaam.text
lstNamen.RemoveItem(n)
lstNamen.AddItem (h, n)
Else
MsgBox ("Je moet eerst een naam selecteren!")
End If
End Sub
|
e. |
Dubbelklik op de verwijder-button. Dan kun je de code invoeren, die wordt uitgevoerd als je op de de verwijder-button klikt.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub cmdVerwijder_Click()
Dim n As Integer
n = lstNamen.ListIndex
If n > = 0 Then
lstNamen.RemoveItem(n)
Else
MsgBox ("Je moet eerst een naam selecteren!")
End If
End Sub
|
f. |
Dubbelklik op het tekstvenster. Dan kun je de code invoeren, die wordt wordt
uitgevoerd als je iets aan dat tekstvenster verandert.
Rechtsboven is automatisch Change verschenen, maar dat moeten we niet hebben: kies Keypress uit.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub txtNaam_KeyPress(KeyAscii As Integer)
dim h as string
If KeyAscii = 13 Then
h = txtNaam.text
lstNamen.AddItem (h)
End If
End Sub
|
|
|
4a. |
Maak de interface zoals beschreven.
We gaan er van uit dat het bestand PROEF.TXT in de map TESTMAP van de C-drive staat.
Noem de tekstvensters txtRegel1, txtRegel2 en txtRegel3, en noem de button cmdLees.
Dubbelklik op de button. Dan kun je de code invoeren, die wordt uitgevoerd als je op de button klikt.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub cmdLees_Click()
Open "C:\TESTMAP\PROEF.TXT" for input as #1
line input #1, regel
txtRegel1.text = regel
line input #1, regel
txtRegel2.text = regel
line input #1, regel
txtRegel2.text = regel
close #1
End Sub
|
b. |
Maak de interface zoals beschreven.
We gaan er van uit dat het bestand PROEF.TXT in de map TESTMAP van de C-drive staat.
Noem de listbox lstRegels, en noem de button cmdLees.
Dubbelklik op de button. Dan kun je de code invoeren, die wordt uitgevoerd als je op de button klikt.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub cmdLees_Click()
Open "C:\TESTMAP\PROEF.TXT" for input as #1
line input #1, regel
lstRegels.AddItem (regel)
line input #1, regel
lstRegels.AddItem (regel)
line input #1, regel
lstRegels.AddItem (regel)
close #1
End Sub
|
c. |
Maak de interface zoals beschreven.
We gaan er van uit dat het bestand PROEF.TXT in de map TESTMAP van de C-drive staat.
Noem de listbox lstRegels, en noem de button cmdLees.
Noem de DriveListBox drive1, noem de DirListBox dir1 en noem de FileListBox file1.
Dubbelklik op de DriveListBox. Dan kun je de code invoeren, die wordt uitgevoerd als je op de DriveListBox klikt.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub Drive1_Change( )
Dir1.Path = Drive1.Drive
File1.Path = Drive1.Drive
End Sub
Dubbelklik op de DirListBox. Dan kun je de code invoeren, die wordt uitgevoerd als je op de DirListBox klikt.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub Dir1_Change( )
File1.Path = Dir1.Path
End Sub
Dubbelklik op de button. Dan kun je de code invoeren, die wordt uitgevoerd als je op de button klikt.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub cmdLees_Click()
Dim naambestand As String
naambestand = File1.Path + "\" + File1.Filename
Open naambestand for input as #1
While not eof(1)
line input #1, regel
lstRegels.AddItem (regel)
wend
close #1
End Sub
|
d. |
Gewoon even doen.
|
|
|
5a. |
Maak eerst de interface.
Zet twee pictureboxen onder elkaar. Noem de bovenste Picture1 en de onderste Picture2.
Zet verder een timer op het formulier, noem die Timer1. En zet in het propertiesvenster Interval op 500
Dubbelklik op de timer. Dan kun je de code invoeren, die wordt uitgevoerd als de timer afloopt, dus steeds na 500 milliseconden.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub Timer1_Timer()
picture1.left = picture1.left + 100
picture2.left = picture2.left + 200
End Sub
|
b. |
Maak eerst de interface.
Zet een picturebox op het formulier, en noem die Picture1.
Zet verder een timer op het formulier, noem die Timer1. En zet in het propertiesvenster Interval op 100
Dubbelklik op de timer. Dan kun je de code invoeren, die wordt uitgevoerd als de timer afloopt, dus steeds na 100 milliseconden.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub Timer1_Timer()
picture1.top = picture1.top + 10
End Sub
|
c. |
Maak eerst de interface.
Zet een picturebox op het formulier, en noem die Picture1.
Zet verder een timer op het formulier, noem die Timer1. En zet in het propertiesvenster Interval op 500
Dubbelklik op de timer. Dan kun je de code invoeren, die wordt uitgevoerd als de timer afloopt, dus steeds na 500 milliseconden.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub Timer1_Timer()
If picture1.visible = true Then
picture1.visible = false
Else
picture1.visible = true
Endif
End Sub
|
d. |
Maak eerst de interface.
Zet een picturebox op het formulier, en noem die Picture1.
Zet verder een timer op het formulier, noem die Timer1. En zet in het propertiesvenster Interval op 100
Dubbelklik op de timer. Dan kun je de code invoeren, die wordt uitgevoerd als de timer afloopt, dus steeds na 100 milliseconden.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub Timer1_Timer()
h=h+0.1
picture1.left = 2000 + 1000 * cos(h)
picture1.top = 2000 + 1000 * sin(h)
End Sub
Declareer h als een globale variabele, dus onder General.
Zet daar: Dim h As Single
|
|
|
6a. |
Plaats eerst een extra button op het formulier, en noem die cmdSave.
Dubbelklik op de save-button. Dan kun je de code invoeren, die wordt uitgevoerd als je op de de save-button klikt.
Voer dan het volgende in (de eerste en de laatste regel staan er al):
Private Sub cmdSave_Click()
Dim n, i As Integer
Open "C:\PROEF.TXT" for output as #1
n = lstNamen.listcount
for i=0 to n-1
print #1, lstNamen.List(i)
next i
close #1
End Sub
|
|
|
7a. | Text1.text = "" Text2.text = ""
De programmaregels worden samen de event handler genoemd.
|
b. |
dim g1, g2 as integer (of dim g1, g2 as single bij kommagetallen)
g1 = val (txtGetal1.text)
g2 = val (txtGetal2.text)
if (g1 > g2) then txtGrootste.text = str(g1) else txtGrootste.text = str(g2)
|
c. |
lblHallo.visible = false
|
d. |
Text1.enabled = false
|
e. |
dim g1, g2, a as integer (of dim g1, g2, a as single bij kommagetallen)
g1 = val (txtGetal1.text)
g2 = val (txtGetal2.text)
a = val(txtAntwoord.text)
if (a = g1 + g2) then msgbox("Goed zo") else msgbox("Fout!")
|
f. |
Dim i As Integer
for i=1 to 100
lstGetallen.AddItem Str(i)
Next i
|
g. |
Dim i As Integer
for i=1 to 26
lstLetters.AddItem Chr(i+96)
Next i
|
h. |
Je moet een timer (= wekker) op het formulier plaatsen.
Bij de properties (= eigenschappen) van die timer moet je interval op bijvoorbeeld 100 zetten.
Dan voert hij de opdracht (die hieronder staat) om de 100 milliseconden uit.
Als opdracht voer je bijvoorbeeld in: lHallo.left = lHallo.left + 10
(Dubbelklik op de timer, dan krijg je het programmeervenster in beeld, en daar tik je het in)
|
i. |
dim w as string
Open "TEST.TXT" for output as #1
w = Text1.text
print #1, w
close #1
|
j. |
dim g as integer (of dim g as single bij kommagetallen)
g = val (tGetal.text)
som = som + g
aantal = aantal + 1
txtSom.text = str(som)
txtAantal.text = str(aantal)
(Denk er om: som en aantal zijn globale variabelen. Die moet je niet in de procedure declareren, maar
op de eerste regel van het programmavenster; zie vraag 7k).
|
k. |
Globale variabelen zijn variabelen, waarvan de waarde onthouden moet worden nadat de procedure is afgelopen.
Die moet je niet in de procedure declareren, maar op de eerste regel van het programmavenster. (klik op General)
|
|
|