VB -34: Drucken

Schwarz auf Weiß...

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.

Beispielprojekt laden

zurück Index weiter


© Copyright 1998-2000 J.Behling EMail schreiben ABC-Ware's Homepage
Weitergabe und Druck (auch in Teilen, mit Ausnahme von Privatgebrauch) ohne ausdrückliche Genehmigung der Autorin untersagt.