VB6 Druckerroutine

  • Themenstarter Themenstarter Nichtwisser
  • Beginndatum Beginndatum
N

Nichtwisser

Hallo Leute,

besteht die Möglichkeit Folgendes zuändern und zwar ohne Tab() Angaben und das
die Beträge rechtsbündung ausgedruckt werden.
Wenn die Eingabe "e" geändert wird, verändern sich logischerweise die nachfolgenden
Beträge und das Druckbild sieht dann verzerrt aus.

Printer.Print "Eintragungen lt. Lohnsteuerkarte:"
Printer.Print "Einkommen"; Tab(46); e; ",00 €"
Printer.Print "Einkommensteuer"; Tab(46); est1; ",00 €"
Printer.Print "Erstattungsbeträge:"
Printer.Print "Einkommensteuer"; Tab(48); est2; ",00 €"
Printer.Print "Kirchensteuer"; Tab(49); kst2; " €"
Printer.Print "Solidaritätszuschlag"; Tab(49); so2; " €"
Printer.Print "Erstattungsbetrag"; Tab(48); gs; " €"

Vielleicht hat jemand einen Tipp........

MfG

Odje
 
Es gibt keine vorgefertigte Druckerroutine, um rechtsbündig zu drucken. Die meisten Steuerelemente haben aber die Funktion "TextWidth", damit kannst du herausfinden, wie breit ein Text ist. Beispielsweise hat jedes Formular diese Funktion, du könntest die Textbreite also so herausfinden:
Code:
Textbreite=Form1.TextWidth("Einkommen" & e & ",00 €")
Nun hast du die Textbreite und kannst mittels CurrentX die Position bestimmen, bei der gedruckt werden kann:
Code:
Printer.CurrentX=Seitenbreite-Textbreite
Printer.Print Einkommen" & e & ",00 €"
Allerdings musst du nun wissen, wie breit eine Seite ist.

Edit: Vorher muss bei Form1 noch die Schriftart so eingestellt werden, wie sie beim Drucker eingestellt sein wird, schließlich sind nicht alle Zeichen verschiedener Schriftarten gleich breit....also so:
Code:
Form1.Font=Printer.Font
 
Zuletzt bearbeitet:
Hallo Shakie,
muß die Nachfrage entschuldigen, denn ich bin ein Nichtwisser......
Wie muß ich verfahren um den Code
Textbreite=Form1.TextWidth("Einkommen" & e & ",00 €")
anzuwenden....?
Gruß

Odje
 
Ist eigentlich ganz einfach, vielleicht habe ich mich etwas zu umständlich ausgedrückt....
Außerdem habe ich gesehen, dass das Printer-Objekt auch eine TextWidth-Methode hat, deswegen braucht man Form1 gar nicht :-(...
Also probier es mal so:
Code:
Private Sub RechtsbündigDrucken(ByVal Text As String)
	
	Const RANDBREITE As Integer = 1000
	
	Dim sngSeitenbreite As Single
	Dim sngTextBreite As Single
	'Seitenbreite des Papiers ermitteln:
	sngSeitenbreite = Printer.ScaleWidth
	'Textbreite ermitteln:
	sngTextBreite = Printer.TextWidth(Text)
	'X-Position setzen, an der gedruckt werden soll:
	Printer.CurrentX = sngSeitenbreite - sngTextBreite - RANDBREITE
	'Text nun drucken:
	Printer.Print Text
End Sub
Wenn du nun einen Text rechtsbündig drucken willst, rufst du die Funktion mit dem entsprechenden Text auf:
Code:
RechtsbündigDrucken "Einkommen" & e & ",00 €"
Die Konstante RANDBREITE dient dazu, dass der letzte Buchstabe des rechtsbündigen Textes nicht beim Papierende steht sondern eben ein bisschen weiter innen. Probier einfach aus, was passiert, wenn du die Konstante auf Null stellst.
 
Hallo Shakie,
besten dank für deine Mühe.

Habe das Problem zwischenzeitlich gelöst.

Dim Ausgabe$, Rand$
Rand = 30
Printer.CurrentX = 15
Printer.Print "Einkommen";
Ausgabe = e & ",00 €"
Printer.CurrentX = Printer.ScaleWidth - Rand - Printer.TextWidth(Ausgabe)
Printer.Print Ausgabe

Gruß

Odje
 
Zurück