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.