Beste Luuknl
Dit is mijn code die ik ook in andere programmas gebruik, en wel werkt.
Maar in deze samen stelling hangt hij vast bij debugging zowel als gecompileerd.
Dim aantalwoorden As Integer = 0
Dim vernieuwen As Integer = 4
Dim lijsten(100) As String
Dim woorden(100) As String
Dim vraag As String = ""
Dim plaatje As Integer = 0
Dim antwoorden As Integer = 0
Dim klikken As Integer = 0
Dim goed As Integer = 0
Dim begin As Integer = 1
Dim mode As Integer = 0
Dim strWoorden(4) As String
Dim aantalLijsten As Long = 0
Dim bijwerken As Boolean = False
Dim Connection As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\AlfaBeding\PlaatjesOefening\OefenData.mdb;Persist Security Info=True;Jet OLEDB

atabase Password=a2030b")
Dim WoordenAdapter As New OleDbDataAdapter
Dim WoordenTabel As New DataTable
Dim WoordenBindingSource As New BindingSource()
Dim LijstenAdapter As New OleDbDataAdapter
Dim LijstenTabel As New DataTable
Dim LijstenBindingSource As New BindingSource()
Private Sub frmOefenen_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
CreateInitialMenus()
VulLijsten()
If aantalLijsten < 1 Then
MsgBox("Geen lijsten", MsgBoxStyle.Critical)
Exit Sub
End If
VulWoordenLijst(lijsten(1))
start()
End Sub
#Region "Menu"
Private Sub MenuOption_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim selectedItem As ToolStripMenuItem = CType(sender, ToolStripMenuItem)
selectedItem.Checked = True
End Sub
Private Sub ToolStripMenuItemEinde_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItemEinde.Click
Me.Close()
End Sub
Private Sub ToolStripMenuItemOpniew_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItemOpniew.Click
start()
End Sub
Private Sub MenuItem_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles FileMenu.MouseEnter
Dim selected As ToolStripMenuItem = CType(sender, ToolStripMenuItem)
End Sub
Private Sub ComboBoxRegels_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim combo As ToolStripComboBox = CType(sender, ToolStripComboBox)
Select Case combo.SelectedIndex
Case 0
vernieuwen = 1
Case 1
vernieuwen = 2
Case 2
vernieuwen = 3
Case 3
vernieuwen = 4
End Select
End Sub
Private Sub ComboBoxMode_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim combo As ToolStripComboBox = CType(sender, ToolStripComboBox)
mode = combo.SelectedIndex
start()
End Sub
Private Sub ViewToolStripMenuItem1_Click(sender As System.Object, e As System.EventArgs) Handles ViewToolStripMenuItem1.Click
If DataGridViewLijsten.Visible = False Then
DataGridViewLijsten.Visible = True
DataGridViewWoorden.Visible = True
lAantalWoorden.Visible = True
VerbergAntwoorden()
verbergteksboxen()
verbergTeksten()
bijwerken = True
lAantalWoorden.Visible = True
Else
DataGridViewLijsten.Visible = False
DataGridViewWoorden.Visible = False
lAantalWoorden.Visible = False
lAantalWoorden.Visible = False
start()
End If
End Sub
Private Sub CreateInitialMenus()
Dim ComboBoxMode As New ToolStripComboBox()
With ComboBoxMode
.Items.Add("Woorden leren.")
.Items.Add("Woorden aanwijzen.")
.Items.Add("Woorden typen.")
.SelectedIndex = 0
.ToolTipText = "Kies de oefenmethode"
.Width = 155
.Visible = True
AddHandler .SelectedIndexChanged, AddressOf Me.ComboBoxMode_SelectedIndexChanged
MenuStrip.Items.Add(ComboBoxMode)
End With
Dim ComboBoxRegels As New ToolStripComboBox()
With ComboBoxRegels
.Width = 200
.Items.Add("1 woord vernieuwen")
.Items.Add("2 woorden venieuwen")
.Items.Add("3 woorden venieuwen")
.Items.Add("4 woorden venieuwen")
.SelectedIndex = 3
.ToolTipText = "Kies aantal plaatjes dat verniewd moet worden "
AddHandler .SelectedIndexChanged, AddressOf Me.ComboBoxRegels_SelectedIndexChanged
MenuStrip.Items.Add(ComboBoxRegels)
End With
End Sub
Private Sub lEinde_Click(sender As System.Object, e As System.EventArgs) Handles lEinde.Click
Me.Close()
End Sub
#End Region
#Region "Region Oefening"
Private Sub start()
bVolgendePlaatjes.Visible = False
lResultaat.Visible = False
lEinde.Visible = False
VerbergAntwoorden()
verbergTeksten()
begin = 1
klikken = 0
goed = 0
LaadWoorden(4)
End Sub
Private Sub volgendeplaatjes()
If begin = aantalwoorden Then
lEinde.Text = "Einde oefening"
lEinde.Visible = True
lResultaat.Visible = True
bVolgendePlaatjes.Visible = False
Exit Sub
End If
If begin + vernieuwen > aantalwoorden Then
vernieuwen = aantalwoorden - begin
End If
bVolgendePlaatjes.Visible = False
lResultaat.Visible = False
LaadWoorden(vernieuwen)
End Sub
Private Sub LaadWoorden(ByVal aantal As Integer)
On Error Resume Next
Me.bTekst1.Text = ""
Me.bTekst2.Text = ""
Me.bTekst3.Text = ""
Me.bTekst4.Text = ""
tbGetypt1.Text = ""
tbGetypt2.Text = ""
tbGetypt3.Text = ""
tbGetypt4.Text = ""
Dim x As Integer = 1
Dim t(4) As Integer
Dim y As Integer = 0
Dim plaatje As String
Dim woord As String
t(1) = 0
t(2) = 0
t(3) = 0
t(4) = 0
Do
Dim s As Integer = RandomSelect(4)
For y = 1 To 4
If t(y) = s Then s = 0
Next
If s > 0 And s < 5 Then
strWoorden(s) = woorden(begin - 1 + x)
plaatje = ("C:\AlfaBeding\PlaatjesOefening\Plaatjes\" & strWoorden(s) & ".jpg")
If My.Computer.FileSystem.FileExists(plaatje) = False Then
plaatje = ("C:\AlfaBeding\PlaatjesOefening\Plaatjes\Geenplaatje.jpg")
End If
Select Case s
Case 1 : Me.bAntwoord1.Text = strWoorden(s)
Me.bImage1.Image = Image.FromFile(plaatje)
Case 2 : Me.bAntwoord2.Text = strWoorden(s)
Me.bImage2.Image = Image.FromFile(plaatje)
Case 3 : Me.bAntwoord3.Text = strWoorden(s)
Me.bImage3.Image = Image.FromFile(plaatje)
Case 4 : Me.bAntwoord4.Text = strWoorden(s)
Me.bImage4.Image = Image.FromFile(plaatje)
End Select
t(s) = s
x = x + 1
End If
Loop Until x = aantal + 1
t(1) = 0
t(2) = 0
t(3) = 0
t(4) = 0
x = 1
Do
Randomize()
Dim s As Integer = RandomSelect(5)
If s > 0 And s < 5 Then
For y = 1 To 4
If t(y) = s Then s = 0
Next
If s > 0 And s <> x Then
woord = strWoorden(s)
Select Case x
Case (1) : Me.bTekst1.Text = woord
Case (2) : Me.bTekst2.Text = woord
Case (3) : Me.bTekst3.Text = woord
Case (4) : Me.bTekst4.Text = woord
End Select
t(x) = s
x = x + 1
End If
End If
Loop Until x = 5
Select Case mode
Case 0
ToonAntwoorden()
verbergteksboxen()
Case 1
Me.bTekst1.Visible = True
Me.bTekst2.Visible = True
Me.bTekst3.Visible = True
Me.bTekst4.Visible = True
VerbergAntwoorden()
verbergteksboxen()
Case 2
VerbergAntwoorden()
tbGetypt1.Visible = True
tbGetypt2.Visible = True
tbGetypt3.Visible = True
tbGetypt4.Visible = True
tbGetypt1.Focus()
End Select
antwoorden = 0
begin = begin + aantal
End Sub
Private Function RandomSelect(ByVal maxwaarde As Integer) As Integer
On Error Resume Next
Dim ng As Integer
Rnd(-6)
Randomize()
ng = CInt((maxwaarde + 1) * Rnd(4) + 1)
lTest.Text = Str(ng)
RandomSelect = ng
End Function
Private Sub ToonTeksten()
Me.bTekst1.Visible = True
Me.bTekst2.Visible = True
Me.bTekst3.Visible = True
Me.bTekst4.Visible = True
End Sub
Private Sub ToonAntwoorden()
Me.bAntwoord1.Visible = True
Me.bAntwoord2.Visible = True
Me.bAntwoord3.Visible = True
Me.bAntwoord4.Visible = True
End Sub
Private Sub VerbergAntwoorden()
Me.bAntwoord1.Visible = False
Me.bAntwoord2.Visible = False
Me.bAntwoord3.Visible = False
Me.bAntwoord4.Visible = False
End Sub
Private Sub verbergTeksten()
Me.bTekst1.Visible = False
Me.bTekst2.Visible = False
Me.bTekst3.Visible = False
Me.bTekst4.Visible = False
End Sub
Private Sub verbergteksboxen()
tbGetypt1.Visible = False
tbGetypt2.Visible = False
tbGetypt3.Visible = False
tbGetypt4.Visible = False
End Sub
Private Sub bVolgendePlaatjes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bVolgendePlaatjes.Click
volgendeplaatjes()
End Sub
Private Sub cbTypen_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
start()
End Sub
Private Sub bLijst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
If DataGridViewLijsten.Visible = True Then DataGridViewLijsten.Visible = False Else DataGridViewLijsten.Visible = True
End Sub
Private Sub bImage1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bImage1.Click
vraag = bAntwoord1.Text
plaatje = 1
If mode = 0 Then
ToonTeksten()
VerbergAntwoorden()
End If
End Sub
Private Sub bImage2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bImage2.Click
vraag = bAntwoord2.Text
plaatje = 2
If mode = 0 Then
ToonTeksten()
VerbergAntwoorden()
End If
End Sub
Private Sub bImage3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bImage3.Click
vraag = bAntwoord3.Text
plaatje = 3
If mode = 0 Then
ToonTeksten()
VerbergAntwoorden()
End If
End Sub
Private Sub bImage4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bImage4.Click
vraag = bAntwoord4.Text
plaatje = 4
If mode = 0 Then
ToonTeksten()
VerbergAntwoorden()
End If
End Sub
Private Sub bTekst1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bTekst1.Click
klikken = klikken + 1
If bTekst1.Text = vraag Then ToonAntwoord()
End Sub
Private Sub bTekst2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bTekst2.Click
klikken = klikken + 1
If bTekst2.Text = vraag Then ToonAntwoord()
End Sub
Private Sub bTekst3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bTekst3.Click
klikken = klikken + 1
If bTekst3.Text = vraag Then ToonAntwoord()
End Sub
Private Sub bTekst4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bTekst4.Click
klikken = klikken + 1
If bTekst4.Text = vraag Then ToonAntwoord()
End Sub
Private Sub ToonAntwoord()
goed = goed + 1
Select Case plaatje
Case 1
If (antwoorden And 1) = 0 Then
Me.bAntwoord1.Visible = True : antwoorden = antwoorden + 1
End If
Case 2
If (antwoorden And 2) = 0 Then
Me.bAntwoord2.Visible = True : antwoorden = antwoorden + 2
End If
Case 3
If (antwoorden And 4) = 0 Then
Me.bAntwoord3.Visible = True : antwoorden = antwoorden + 4
End If
Case 4
If (antwoorden And 8) = 0 Then
Me.bAntwoord4.Visible = True : antwoorden = antwoorden + 8
End If
End Select
If antwoorden = 15 Then
verbergTeksten()
bVolgendePlaatjes.Visible = True
lResultaat.Text = "RESULTAAT = " & Int(goed / (klikken / 100)) & " %"
lResultaat.Visible = True
End If
End Sub
Private Sub tbGetypt1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbGetypt1.TextChanged
If UCase(tbGetypt1.Text) = UCase(bAntwoord1.Text) Then
tbGetypt2.Focus()
If (antwoorden And 1) = 0 Then
goed = goed + Len(tbGetypt1.Text)
antwoorden = antwoorden + 1
End If
testEinde()
End If
klikken = klikken + 1
End Sub
Private Sub tbGetypt2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbGetypt2.TextChanged
If UCase(tbGetypt2.Text) = UCase(bAntwoord2.Text) Then
tbGetypt3.Focus()
If (antwoorden And 2) = 0 Then
goed = goed + Len(tbGetypt2.Text)
If (antwoorden And 2) = 0 Then antwoorden = antwoorden + 2
End If
testEinde()
End If
klikken = klikken + 1
End Sub
Private Sub tbGetypt3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbGetypt3.TextChanged
If UCase(tbGetypt3.Text) = UCase(bAntwoord3.Text) Then
tbGetypt4.Focus()
If (antwoorden And 4) = 0 Then
goed = goed + Len(tbGetypt4.Text)
If (antwoorden And 4) = 0 Then antwoorden = antwoorden + 4
End If
testEinde()
End If
klikken = klikken + 1
End Sub
Private Sub tbGetypt4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbGetypt4.TextChanged
If UCase(tbGetypt4.Text) = UCase(bAntwoord4.Text) Then
If (antwoorden And 8) = 0 Then
goed = goed + Len(tbGetypt4.Text)
If (antwoorden And 8) = 0 Then antwoorden = antwoorden + 8
End If
testEinde()
End If
klikken = klikken + 1
End Sub
Private Sub testEinde()
If antwoorden = 15 Then
bVolgendePlaatjes.Visible = True
verbergTeksten()
lResultaat.Text = "RESULTAAT = " & Int(goed / (klikken / 100)) & " %"
lResultaat.Visible = True
tbGetypt1.Focus()
End If
End Sub
#End Region
#Region "Region Lijsten"
Private Sub VulLijsten()
Dim x As Integer
ReDim woorden(100)
aantalLijsten = 0
LijstenTabel.AcceptChanges()
LijstenTabel.Clear()
LijstenAdapter.SelectCommand = New OleDbCommand("Select lijst,omschrijving from Lijsten", Connection)
Dim Lijstenbuilder As OleDbCommandBuilder = New OleDbCommandBuilder(LijstenAdapter)
LijstenAdapter.Fill(LijstenTabel)
aantalLijsten = LijstenTabel.Rows.Count
LijstenBindingSource.DataSource = LijstenTabel
DataGridViewLijsten.DataSource = LijstenBindingSource
DataGridViewLijsten.Columns.Item(0).Width = 100
DataGridViewLijsten.Columns.Item(1).Width = 250
x = 0
Dim row As DataRow
For Each row In LijstenTabel.Rows
x = x + 1
lijsten(x) = row.ItemArray(0).ToString
Next
End Sub
Private Sub DataGridViewLijsten_RowHeaderMouseClick(ByVal sender As Object, ByVal e As DataGridViewCellMouseEventArgs) Handles DataGridViewLijsten.RowHeaderMouseClick
aantalLijsten = DataGridViewLijsten.RowCount
If Not IsDBNull(DataGridViewLijsten.CurrentRow.Cells.Item(0).Value) Then
VulWoordenLijst(CStr(DataGridViewLijsten.CurrentRow.Cells.Item(0).Value))
start()
End If
End Sub
Private Sub DataGridViewLijsten_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridViewLijsten.Leave
LijstenAdapter.Update(LijstenTabel)
End Sub
Private Sub VulWoordenLijst(LijstNaam As String)
Dim x As Integer
ReDim woorden(100)
aantalwoorden = 0
WoordenTabel.Clear()
WoordenAdapter.SelectCommand = New OleDbCommand("Select Woord from " + LijstNaam, connection)
Dim Woordenbuilder As OleDbCommandBuilder = New OleDbCommandBuilder(WoordenAdapter)
Try
WoordenAdapter.Fill(WoordenTabel)
aantalwoorden = WoordenTabel.Rows.Count
Me.lAantalWoorden.Text = "Aantal woorden = " & aantalwoorden
WoordenBindingSource.DataSource = WoordenTabel
DataGridViewWoorden.DataSource = WoordenBindingSource
DataGridViewWoorden.Columns.Item(0).Width = 150
Catch ex As Exception
Dim command As String = "( [Woord] TEXT(15))"
Dim cmd As New OleDb.OleDbCommand("CREATE TABLE [" + LijstNaam + "] " + command, connection)
Me.connection.Open()
cmd.ExecuteNonQuery()
Me.connection.Close()
End Try
x = 0
Dim row As DataRow
For Each row In WoordenTabel.Rows
x = x + 1
woorden(x) = row.ItemArray(0).ToString
Next
End Sub
Private Sub DataGridViewWoorden_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridViewWoorden.Leave
WoordenAdapter.Update(WoordenTabel)
End Sub
#End Region