Vokabeltrainer Translator programmieren mit Visual Basic VBA
Excel Access
Author D.Selzer-McKenzie
Video: http://youtu.be/1YmHbVEYp7M
Hier zeige ich Ihnen, wie Sie mit ganz wenig Code einen
Vokaltrainer oder eine Übersetzungssoftware programmieren können. Auf eine
Datenbank mit den entsprechenden Wörtern muss die Software natürlich zugreifen
können, und da kann man z.B. eine Datenbank selbst erstellen kurzerhand von
einem anderen kommerziellen Programm die Datenbank verwenden.
Den SourceCode, der hier wegen der Steuerzeichen nicht
eingeschrieben werden kann, finden Sie zum kostenlosen Download im Forum
Hier nun der SourceCode:
Imports System.IO
Public Class Form1
' Liste der Fragen
Dim frage As New
ArrayList
' Liste der
Antworten
Dim antwort As New
ArrayList
' Zufallszahl für
ein Element der beiden Listen
Dim zufallszahl As
Integer
' Richtung der
Vokabel-Abfrage
Dim richtung As
Integer
Private Sub
Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
'
Initialisierung des Zufallsgenerators
Randomize()
'
Startrichtung Englisch - Deutsch
richtung = 2
End Sub
Private Sub
ButtonTestStarten_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonTestStarten.Click
Dim con As New
OleDb.OleDbConnection
Dim cmd As New
OleDb.OleDbCommand
Dim reader As
OleDb.OleDbDataReader
'es muss eine
Datenbank erstellt werden!
con.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;" &
"Data
Source=C:\Temp\lernen.mdb"
cmd.Connection
= con
cmd.CommandText = "select * from vokabel"
frage.Clear()
antwort.Clear()
Try
con.Open()
reader =
cmd.ExecuteReader()
' Speicherung in den Listen gemäß
' der
ausgewählten 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
ButtonTestStarten.Enabled = False
ButtonPrüfen.Enabled = True
mnuRichtung.Enabled = False
TextBoxAusgabe.Enabled = True
' Erste Vokabel
erscheint
Nächste_Vokabel()
Catch ex As
Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Sub
Nächste_Vokabel()
' Falls keine
Vokabel mehr in der Liste: Ende
' Falls noch
Vokabeln in der Liste: Nächste
If frage.Count
< 1 Then
MessageBox.Show(
"Gratuliere! Alles geschafft")
Test_Init()
Else
zufallszahl = Rnd() * (frage.Count - 1)
lblFrage.Text = frage(zufallszahl)
TextBoxAusgabe.Text = ""
End If
End Sub
Sub Test_Init()
' Buttons und
Menü (de)aktivieren
ButtonTestStarten.Enabled = True
ButtonPrüfen.Enabled = False
mnuRichtung.Enabled
= True
TextBoxAusgabe.Enabled = False
' Felder
leeren
lblFrage.Text
= ""
TextBoxAusgabe.Text = ""
End Sub
Private Sub
ButtonPrüfenPrüfen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles ButtonPrüfen.Click
' Falls
richtig beantwortet:
' Vokabel aus
Liste nehmen
If
TextBoxAusgabe.Text = antwort(zufallszahl) Then
MessageBox.Show("Richtig")
frage.RemoveAt(zufallszahl)
antwort.RemoveAt(zufallszahl)
' Falls
falsch beantwortet:
' richtige
Antwort nennen
Else
MessageBox.Show(
"Falsch, richtige Antwort ist " &
vbCrLf
& "'" &
antwort(zufallszahl) & "'")
End If
' Nächste
Vokabel erscheint
Nächste_Vokabel()
End Sub
Private Sub
MenüEndeTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MenüEndeTest.Click
' Abbruch mit
Rückfrage
If
MessageBox.Show(
"Test
wirklich abbrechen?",
"Vokabel", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) =
DialogResult.Yes Then
Test_Init()
End If
End Sub
Private Sub
MenüEndeProgramm_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MenüEndeProgramm.Click
' Beenden mit
Rückfrage
If
MessageBox.Show(
"Programm wirklich beenden?",
"Vokabel", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) =
DialogResult.Yes Then
Me.Close()
End If
End Sub
Private Sub
MenüDeutschEnglish_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MenüDeutschEnglish.Click
' Richtung
wird geändert
richtung = 1
Check_False()
MenüDeutschEnglish.Checked = True
LabelSprachRichtung.Text = "deutsch/englisch"
End Sub
Private Sub
MenüEnglishDeutsch_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MenüEnglishDeutsch.Click
richtung = 2
Check_False()
MenüEnglishDeutsch.Checked = True
LabelSprachRichtung.Text = "englisch/deutsch"
End Sub
Private Sub
MenüDeutschFranzösisch_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MenüDeutschFranzösisch.Click
richtung = 3
Check_False()
MenüDeutschFranzösisch.Checked = True
LabelSprachRichtung.Text = "deutsch/französisch"
End Sub
Private Sub
MenüFranzösischDeutsch_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MenüFranzösischDeutsch.Click
richtung = 4
Check_False()
MenüFranzösischDeutsch.Checked = True
LabelSprachRichtung.Text = "französisch/deutsch"
End Sub
Sub Check_False()
MenüDeutschEnglish.Checked = False
MenüEnglishDeutsch.Checked = False
MenüDeutschFranzösisch.Checked = False
MenüFranzösischDeutsch.Checked
= False
End Sub
Private Sub
MenüAnleitung_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MenüAnleitung.Click
Dim fs As
FileStream
Dim sr As
StreamReader
Dim dateiname
As String = "hilfe.txt"
Dim ausgabe As
String
If Not
File.Exists(dateiname) Then
MessageBox.Show("Die Datei " &
dateiname & " existiert nicht")
Exit Sub
End If
fs = New
FileStream(dateiname,
FileMode.Open)
sr = New
StreamReader(fs)
ausgabe =
""
Do Until
sr.Peek() = -1
ausgabe
&= sr.ReadLine() & vbCrLf
Loop
sr.Close()
MessageBox.Show(ausgabe)
End Sub
End Class
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Keine Kommentare:
Kommentar veröffentlichen
Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.