Wir wollen unserem Programm eine neue Funktion hinzufügen: Wenn der Anwender es wünscht, sollen alle richtig gelösten Aufgaben auf dem Drucker ausgegeben werden, als kleiner Beweis für den Fleiß unseres Probanden .
Dazu fügen wir unter dem Menüpunkt "Programm" einen weiteren Untermenüpunkt "Aufgaben drucken" mit dem Namen "mnuDrucken" ein. Da diese Funktion nach Belieben ein-/ausschaltbar sein soll, nutzen wir hier den Status "checked" zur Anzeige. Immer wenn der Benutzer diesen menüpunkt anklickt, wird der Status ins jeweilige Gegenteil gekehrt, der Zustand wird durch ein Häkchen für eingeschaltet (checked) im Menü angezeigt.
Private Sub mnuDrucken_Click() mnuDrucken.Checked = Not mnuDrucken.Checked End Sub
"Not" kehrt den logischen Wert um, von "False" auf "True" und umgekehrt.
Jetzt müssen wir noch unser Programm veranlassen, daß es auch druckt. Wir nutzen dazu das Printer-Objekt (was sonst ) mit der Print-Methode und ergänzen die Abfrage in unserem KeyPress-Ereignis:
If Val(txtErgebnis.Text) = x Then Sound App.Path & "\richtig.wav" If aktiveUebung <> "Zählen" And aktiveUebung <> _ "SymbAddition" And mnuDrucken.Checked Then Printer.Print vbTab & vbTab & lblAufgabe.Caption; x End If Else Sound App.Path & "\falsch.wav" End If
Da wir nur reine Rechenaufgaben drucken wollen (keine Kugeln), schließen wir das Drucken aus, wenn eine unserer symbolischen Übungen aktiv ist und natürlich soll auch nur gedruckt werden, wenn die Option eingeschaltet ist. Nur wenn alle drei Bedingungen erfüllt sind (Verknüpfung der Bedingungen mit "And"), wird der nachfolgende Befehl ausgeführt.
Damit unser Druck auch einen Titel hat, initialisieren wir den Drucker beim Anklicken des Menüpunktes und geben auch gleich eine Kopfzeile aus:
Private Sub mnuDrucken_Click() mnuDrucken.Checked = Not mnuDrucken.Checked If mnuDrucken.Checked Then Printer.FontSize = 20 'setzt die Schriftgröße auf 20 Printer.Print vbTab & "Mathe-Max" Printer.Print vbTab & "Richtig gelöste Rechenaufgaben:" & vbCrLf Else Printer.EndDoc End If End Sub
Wenn das Drucken ausgeschaltet wird, soll alles, was noch im Druckpuffer steht ausgegeben werden. Doch warum druckt unser Drucker nicht, wenn wir die ersten richtigen Aufgaben gelöst haben (eingeschaltet muß er natürlich sein )? Es ist ganz einfach: Der Druckpuffer sammelt erstmal soviel bis eine Seite voll ist und erst dann legt der Drucker los. Wollen wir eine Seite vorzeitig ausgeben, machen wir das mit "Printer.EndDoc".
Auch beim Beenden des Programms sollte die letzte noch im Druckpuffer befindliche Seite ausgegeben werden, wenn die Option eingeschaltet ist:
Private Sub mnuEnde_Click() If aktiveUebung <> "Zählen" And aktiveUebung <> _ "SymbAddition" And mnuDrucken.Checked Then Printer.EndDoc End End Sub
Damit ist unser Programm samt Druck schon lauffähig, aber sonderlich schön sieht der Druck noch nicht aus. Wie wir das noch verschönern können, sehen wir uns in der nächsten Lektion etwas genauer an.
© Copyright 1998-2000 J.Behling
Weitergabe und Druck (auch in Teilen, mit Ausnahme von Privatgebrauch) ohne ausdrückliche Genehmigung der Autorin untersagt.