Public Class frm1202
' Liste der Fragen
Dim frage As New List(Of String)
' Liste der Antworten
Dim antwort As New List(Of String)
' Zufallszahl für ein Element der beiden Listen
Dim zufallszahl As Integer
' Richtung der Vokabel-Abfrage
Dim richtung As Integer
Private Sub frm1202_Load( ... ) Handles MyBase.Load
' Initialisierung des Zufallsgenerators
Randomize()
' Startrichtung Englisch - Deutsch
richtung = 2
End Sub
[ ... ]
End Class
Public Class frm1202
[ ... ]
Private Sub cmdStart_Click( ... ) Handles ...
Dim con As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
Dim reader As OleDb.OleDbDataReader
con.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Temp\lernen.mdb"
cmd.Connection = con
cmd.CommandText = "select * from vokabel"
Try
con.Open()
reader = cmd.ExecuteReader()
' Speicherung in den Listen gemäß
' ausgewählter Richtung
Do While reader.Read()
If richtung = 1 Or richtung = 3 Then
frage.Add(reader("deutsch"))
ElseIf richtung = 2 Then
frage.Add(reader("englisch"))
Else
frage.Add(reader("französisch"))
End If
If richtung = 2 Or richtung = 4 Then
antwort.Add(reader("deutsch"))
ElseIf richtung = 1 Then
antwort.Add(reader("englisch"))
Else
antwort.Add(reader("französisch"))
End If
Loop
reader.Close()
con.Close()
' Buttons und Menü (de)aktivieren
cmdStart.Enabled = False
cmdPrüfen.Enabled = True
mnuRichtung.Enabled = False
' Erste Vokabel erscheint
Nächste_Vokabel()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
[ ... ]
End Class
Public Class frm1202
[ ... ]
Sub Nächste_Vokabel()
' Falls keine Vokabel mehr in der Liste: Ende
If frage.Count < 1 Then
MsgBox("Gratuliere! Alle Vokabeln geschafft")
Test_Init()
' Falls noch Vokabeln in der Liste: Nächste
Else
zufallszahl = Rnd() * (frage.Count - 1)
lblFrage.Text = frage(zufallszahl)
txtAntwort.Text = ""
End If
End Sub
Sub Test_Init()
' Buttons und Menü (de)aktivieren
cmdStart.Enabled = True
cmdPrüfen.Enabled = False
mnuRichtung.Enabled = True
' Felder leeren
lblFrage.Text = ""
txtAntwort.Text = ""
End Sub
[ ... ]
End Class
Public Class frm1202
[ ... ]
Private Sub cmdPrüfen_Click( ... ) Handles ...
' Falls richtig beantwortet:
' Vokabel aus Liste nehmen
If txtAntwort.Text = antwort(zufallszahl) Then
MsgBox("Richtig", , "Vokabel")
frage.RemoveAt(zufallszahl)
antwort.RemoveAt(zufallszahl)
' Falls falsch beantwortet: richtige Antwort nennen
Else
MsgBox("Falsch, die richtige Antwort ist " & _
vbCrLf & "'" & antwort(zufallszahl) & _
"'", , "Vokabel")
End If
' Nächste Vokabel erscheint
Nächste_Vokabel()
End Sub
[ ... ]
End Class
Public Class frm1202
[ ... ]
Private Sub mnuEndeTest_Click() Handles ...
' Abbruch mit Rückfrage
If MsgBox("Wollen Sie den Text wirklich " _
& "abbrechen?", MsgBoxStyle.YesNo, _
& "Vokabel") = MsgBoxResult.Yes Then
Test_Init()
End If
End Sub
Private Sub mnuEndeProgramm_Click( ... ) Handles ...
' Beenden mit Rückfrage
If MsgBox("Wollen Sie das Programm wirklich " _
& "beenden?", MsgBoxStyle.YesNo, _
"Vokabel") = MsgBoxResult.Yes Then
Me.Close()
End If
End Sub
Private Sub mnuDE_Click( ... ) Handles ...
' Richtung wird geändert
richtung = 1
Check_False()
mnuDE.Checked = True
End Sub
Private Sub mnuED_Click( ... ) Handles ...
richtung = 2
Check_False()
mnuED.Checked = True
End Sub
Private Sub mnuDF_Click( ... ) Handles ...
richtung = 3
Check_False()
mnuDF.Checked = True
End Sub
Private Sub mnuFD_Click( ... ) Handles ...
richtung = 4
Check_False()
mnuFD.Checked = True
End Sub
Sub Check_False()
mnuDE.Checked = False
mnuED.Checked = False
mnuDF.Checked = False
mnuFD.Checked = False
End Sub
Private Sub mnuAnleitung_Click( ... ) Handles ...
MsgBox("Bestimmen Sie die Richtung von Frage " _
& "und Antwort." & vbCrLf & "Starten Sie " _
& "den Test." & vbCrLf & "Sie werden nach " _
& "den Übersetzungen der Vokabeln so lange " _
& "gefragt, bis Sie alle richtig übersetzt " _
& "haben." & vbCrLf & "Bei einer falschen " _
& "Antwort wird Ihnen die richtige Antwort " _
& "genannt." , , "Vokabel")
End Sub
End Class