VisualBasic Text Asudrucken

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)

gruß *ide
Ps: bin total unerfahren in VB

Hallo,

Brauch ich dazu eine Funktion oder gibt es einen Befehl der
die Form druckt. (VisualBasic 6)

Form1.PrintForm

mehr brauchst Du dafür nicht.

Gruß, Rainer

Hallo idefix145.

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.

Viele Grüße
Carsten

hmmm @Rainer
der Befehl funzt so einfach nicht.
Kannste bitte mal ein Beispiel Posten?

Und @Carsten… wie macht man sowas ? wenn man es chik haben will ?

greez* ide

Hallo,

der Befehl funzt so einfach nicht.
Kannste bitte mal ein Beispiel Posten?

??? Der funzt. … :smile:

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.

Gruß, Rainer

Hallo idefix45.

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.

Viele Grüße
Carsten

Hey
Danke - Danke - Danke
ihr beiden.
jetzt klappts…
menno, wenn man´s mal gesehn hat …sooo einfach *lach*

Ihr seid Spitze :smile:

gruß an rainer und carsten *ide