Hallo @all
Ich möchte mit vb ein einfaches Programm machen mit Labels und Textfelder in die man was eingibt. Anschliesend will ich alles ausgedruckt haben. (z.B. die ganze Form)
Brauch ich dazu eine Funktion oder gibt es einen Befehl der die Form druckt. (VisualBasic 6)
Wenn Du es auch ein bisschen chic haben willst, solltest Du das Printer-Objekt verwenden. Die Programmierung einer Druck-Routine ist zwar sehr umfangreich, aber nicht schwer.
der Befehl funzt so einfach nicht.
Kannste bitte mal ein Beispiel Posten?
??? Der funzt. …
Option Explicit
Private Sub Command1\_Click()
Form1.PrintForm
End Sub
… hat gerade die Form gedruckt. Heißt Deine Form anders? Dann mußt Du natürlich den Namen eintragen.
Und @Carsten… wie macht man sowas ? wenn man es chik haben
will ?
Option Explicit
Private Sub Command1\_Click()
Printer.Orientation = 1 'Hochformat
Printer.ScaleMode = 3 'Angaben in Millimeter
Printer.Line (20, 20)-(100, 100), , BF
'Druckt ein ausgefülltes Quadrat von 80 X 80 Millimeter
Printer.EndDoc 'Ende der Eingaben, jetzt ausdrucken.
End Sub
Wenn Du Printer und den Punkt eingegeben hast, siehst Du auch die anderen Funktionen, wie Font, Fontsize, Bontbold … Das macht richtig Arbeit.
Und @Carsten… wie macht man sowas ? wenn man es chik haben will ?
Das generelle Grundprinzip sieht eigentlich so aus:
Festlegen der Eigenschaften (wenigstens 1x)
Festlegen der Koordinaten
Befehl zum Drucken mit Angabe des zu druckenden Textes
Dieses Prinzip muß für jeden zu druckenden Text einzeln festgelegt werden. Die festgelegten Eigenschaften brauchen aber nur dann erneut festgelegt werden, wenn sich etwas ändern soll, z.B. die Schriftgröße.
Hier mal ein Beispiel:
'Festlegen der Eigenschaften
Printer.PaperSize = vbPRPSA4 'Papiergröße = A4
Printer.PrintQuality = 600 'Auflösung = 600 dpi
Printer.ScaleMode = vbMillimeters 'Angabe der Koordinaten in Millimeter
Printer.Orientation = vbPRPOPortrait 'Papier hochkant
Printer.ColorMode = vbPRCMMonochrome 'Schwarzweiß
Printer.DrawWidth = 1 'Linienbreite
Printer.DrawMode = vbBlackness 'Schwarzintensität
Printer.DrawStyle = vbSolid 'Ausgefüllt
Printer.Font.Name = "Arial"
Printer.Font.Bold = False
Printer.Font.Italic = False
Printer.Font.Strikethrough = False
Printer.Font.Underline = False
Printer.Font.Size = 10
'Festlegen der Koordinaten
Printer.CurrentX = 20
Printer.CurrentY = 20
'Befehl zum Drucken mit Angabe des Textes
Printer.Print "Dies ist ein Text in Arial 10"
'Erneutes festlegen der Eigenschaften, die sich ändern
Printer.Font.Name = "Courier New"
Printer.Font.Size = 16
'Festlegen der Koordinaten
Printer.CurrentX = 50
Printer.CurrentY = 180
'Befehl zum Drucken mit Angabe des Textes
Printer.Print "Dies ist ein Text in Courier New 16"
Printer.EndDoc
Wenn Du nun das Blatt ausgedruckt hast, wirst Du feststellen, daß die Abstände zur linken oberen Ecke größer sind, wie sie sein sollten (20 und 50 mm) und auch die vertikalen Koordinaten stimmen nicht überein. Die Ursache dafür ist der Unterschied zwischen den Eigenschaften „Printer.Width“ und „Printer.ScaleWidth“, sowie „Printer.Height“ und „Printer.ScaleHeight“. Der Drucker muß ja das Papier irgendwie festhalten.
Kannst Du ja mal ausprobieren. Kann sein, daß der Text in Courier New 16 nicht ganz auf das Blatt raufpaßt, das habe ich jetzt nicht ausprobiert. Weiterhin ist es nicht möglich das Printer-Objekt in einen With-Block zu schreiben.