Ihr habt es sicher schon bemerkt: Manchmal sind unsere Code-Zeilen so lang, daß wir mit dem Scrollbalken hin und her müssen um die ganze Zeile zu bearbeiten. Wenn das zu mühsam ist, können wir auch ein Fortsetzungszeichen setzen und lange Statements in der nächsten Zeile fortführen. Als Fortsetzungszeichen dient unter VB das Unterstreichungszeichen "_" am Zeilenende. Nehmen wir unsere "Declare"-Anweisung für die Sound-API-Funktion und teilen sie etwas auf:
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
VB weiß jetzt, daß der Befehl in der nächsten Zeile fortgesetzt wird und hängt diese bei der Ausführung automatisch aneinander. So können wir uns stets bei längeren Zeilen helfen. Auch mehrere Zeilenumbrüche sind möglich, z.B.:
Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName _
As String, ByVal uFlags As Long) As Long
Machen wir nun mit den nächsten Übungen weiter, der Multiplikation und der Division. Dazu füllen wir zunächst unser KeyPress-Ereignis auf:
Case "Multiplikation"
Multiplikation 'nächste Multplikation
Case "Division"
Division 'nächste Division
End Select
Die Menü-Click-Ereignisse sehen unseren bisherigen Übungen wieder sehr ähnlich:
Private Sub munMultiplikation_Click(Index As Integer)
Unsichtbar 'evtl. sichtbare Kugeln unsichtbar machen
MaxFaktorSuchen (Index) 'Zahlenbereich aus Menü-Index bestimmen
Multiplikation 'Aufruf unserer Subtraktion
aktiveUebung = "Multiplikation" 'Uebung merken
End Sub
Private Sub mnuDivision_Click(Index As Integer)
Unsichtbar 'evtl. sichtbare Kugeln unsichtbar machen
MaxFaktorSuchen (Index) 'Zahlenbereich aus Menü-Index bestimmen
Division 'Aufruf unserer Subtraktion
aktiveUebung = "Division" 'Uebung merken
End Sub
Anstelle eines Min- und Max-Ergebniswerts müssen wir nun den jeweils größten Faktor suchen (bzw. Nenner, denn auch unsere Division ist ja nichts anderes als eine umgekehrte Multiplikation). Das lagern wir wieder in ein kleines Unterprogramm aus:
Private Sub MaxFaktorSuchen(Index)
Select Case Index 'Zahlenbereich aus Menü-Index bestimmen
Case 0
MaxFaktor = 10
Case Else
MaxFaktor = 20
End Select
End Sub
Der Einfachheit halber habe ich unser Menü etwas geändert und die Division von ursprünglich max 500 auf max 400 begrenzt
.
MaxFaktor machen wir wieder modulweit bekannt:
Dim MaxFaktor As Integer 'aktueller Max-Faktor modulweit bekanntmachen
Jetzt fehlt noch der Code zum Suchen der Zufallszahl und zum Schreiben der Aufgabe:
Private Sub Multiplikation()
Dim faktor1 As Integer, faktor2 As Integer
faktor1 = Zufallszahl(1, MaxFaktor) 'Faktor1
faktor2 = Zufallszahl(2, MaxFaktor) 'Faktor2
x = faktor1 * faktor2
lblAufgabe.Caption = Str$(faktor1) & " x" & Str$(faktor2) & " ="
'Aufgabe in Label schreiben
lblAufgabe.Visible = True 'Aufgabe anzeigen
txtErgebnis.Text = "" 'Textfeld löschen
txtErgebnis.Visible = True 'Antwortfeld anzeigen
Me.KeyPreview = True 'Tastencodes abfragen
txtErgebnis.SetFocus 'Cursor ins Textfeld setzen
End Sub
Private Sub Division()
Dim faktor1 As Integer, faktor2 As Integer
faktor1 = Zufallszahl(2, MaxFaktor) 'Faktor1
faktor2 = Zufallszahl(3, MaxFaktor) 'Faktor2
x = faktor1 * faktor2
lblAufgabe.Caption = x & " :" & Str$(faktor1) & " ="
'Aufgabe in Label schreiben
x = faktor2 'Ergebnis und Faktor vertauschen für Division
lblAufgabe.Visible = True 'Aufgabe anzeigen
txtErgebnis.Text = "" 'Textfeld löschen
txtErgebnis.Visible = True 'Antwortfeld anzeigen
Me.KeyPreview = True 'Tastencodes abfragen
txtErgebnis.SetFocus 'Cursor ins Textfeld setzen
End Sub
Fertig! Alle Rechenaufgaben können jetzt fleißig geübt werden.
© Copyright 1998-2000 J.Behling
Weitergabe und Druck (auch in Teilen, mit Ausnahme von Privatgebrauch) ohne ausdrückliche Genehmigung der Autorin untersagt.