20. Apr 2024, 04:36
VB-fun.de - Beitragsübersicht zum VB-/VBA-Forum-Archiv 0410
  VB6: Textboxinhalt + eine Kopfzeile drucken
 Von Flipidus
 eMail
 Am 24. Juli 2008 um 19:14:28
 Frage Hallo

Ich arbeite immer noch an meinem Notizprogramm und habe von einem
Chat-Kontakt einen Drucken-Code bekommen, der sich in einem Modul
befindet und über
Drucken.Drucken
aufgerufen wird

Er Sieht so aus:
    

Option Explicit

'definiert den Abstand vom Blattkopf In cm
Const AbstandOben = 1

'definiert den Abstand vom Blattfuss In cm
Const AbstandUnten = 1

'definiert den Abstand von der linken Seite In cm
Const AbstandLinks = 1

'definiert den Abstand von der rechten Seite In cm
Const AbstandRechts = 1

'definiert den Abstand zwischen den einzelnen Objekten
Const TextAbstand = 0.1

'definiert die Rahmenart
Const RahmenOben = True
Const RahmenUnten = True
Const RahmenLinks = True
Const RahmenRechts = True

'legt fest, ob die Seiten gezählt werden
Const SeitenZaehlen = True

'setzt den Zaehler für die Seitenzahlen
Dim Seiten As Integer

Public Sub Drucken()
Dim i As Integer
Dim DruckString As String

Seiten = 0

'mit cm skalieren
Printer.ScaleMode = 7

'Schriftart wählen
Printer.Font = "Arial"

'Schriftgröße wählen
Printer.FontSize = "12"

Call NeueSeite(False)


Call Links(Printer.CurrentY, frmNote.Text1.Text)

Printer.EndDoc
End Sub

Private Sub NeueSeite(Newpage As Boolean)
If Newpage = True Then
Printer.Newpage
End If

Seiten = Seiten + 1

If RahmenOben = True Then Printer.Line _
(0 + AbstandLinks - TextAbstand, 0 + AbstandOben - _
TextAbstand)-(Printer.ScaleWidth - AbstandRechts + _
TextAbstand, 0 + AbstandOben - TextAbstand)

If RahmenUnten = True Then Printer.Line _
(0 + AbstandLinks - TextAbstand, Printer.ScaleHeight - _
AbstandUnten + TextAbstand)-(Printer.ScaleWidth - _
AbstandRechts + TextAbstand, Printer.ScaleHeight - _
AbstandUnten + TextAbstand)

If RahmenLinks = True Then Printer.Line _
(0 + AbstandLinks - TextAbstand, 0 + AbstandOben - _
TextAbstand)-(0 + AbstandLinks - TextAbstand, _
Printer.ScaleHeight - AbstandUnten + TextAbstand)

If RahmenRechts = True Then Printer.Line _
(Printer.ScaleWidth - AbstandLinks + TextAbstand, 0 + _
AbstandOben - TextAbstand)-(Printer.ScaleWidth - _
AbstandLinks + TextAbstand, Printer.ScaleHeight - _
AbstandUnten + TextAbstand)

If SeitenZaehlen = True Then
If RahmenUnten = False Then
Printer.CurrentY = (Printer.ScaleHeight - AbstandUnten + _
TextAbstand)

Printer.CurrentX = (Printer.ScaleWidth - Printer.TextWidth("Flipidus
Note 2.1 Ausdruck" + " - Seite " + Str(Seiten))) / 2

Printer.Print "- Seite " + Str(Seiten) + " -"
Else
Printer.CurrentY = (Printer.ScaleHeight - AbstandUnten + _
TextAbstand + 0.1)

Printer.CurrentX = (Printer.ScaleWidth - _
Printer.TextWidth("- Seite " + Str(Seiten) + " -")) / 2

Printer.Print "- Seite " + Str(Seiten) + " -"
End If
End If

Printer.CurrentY = AbstandOben
Printer.CurrentX = AbstandLinks
End Sub

Private Sub Zentriert(Height As Single, strText As String)
If Printer.CurrentY + Printer.TextHeight(strText) >= _
Printer.ScaleHeight - AbstandUnten Then
Call NeueSeite(True)
Height = Printer.CurrentY
End If

'hiermit wird der Text auf der X-Kooradinate zentriert
'Schema: Seitenbreite - Textbreite / 2
Printer.CurrentX = (Printer.ScaleWidth - _
Printer.TextWidth(strText)) / 2

Printer.CurrentY = Height
Printer.Print strText
End Sub

Private Sub Rechts(Height As Single, strText As String)
If Printer.CurrentY + Printer.TextHeight(strText) >= _
Printer.ScaleHeight - AbstandUnten Then
Call NeueSeite(True)
Height = Printer.CurrentY
End If

'hiermit wird der Text auf der X-Kooradinate zentriert
'Schema: Seitenbreite - Textbreite - AbstandvonRechts
Printer.CurrentX = (Printer.ScaleWidth - _
Printer.TextWidth(strText) - AbstandRechts)
Printer.CurrentY = Height
Printer.Print strText
End Sub

Private Sub Links(Height As Single, strText As String)
If Printer.CurrentY + Printer.TextHeight(strText) >= _
Printer.ScaleHeight - AbstandUnten Then
Call NeueSeite(True)
Height = Printer.CurrentY
End If

'hiermit wird der Text auf der X-Kooradinate zentriert
'Schema: 0 + AbstandvonLinks
Printer.CurrentX = (0 + AbstandLinks)
Printer.CurrentY = Height
Printer.Print strText
End Sub
Das Problem ist, das sich vom Text immer nur die erste Zeile in den
Rahmen anpasst, der Rest beginnt immer ganz links.

Eigentlich würde ich oben drüber auch eine feste Kopfzeile einringen
würden, aber dies könnte ich unten beim seitenzähler ebenso einbinden.

MFG: Philipp Kiric
[ VB-/VBA-Forum | Archiv 0410 | Archiv-Übersicht ]
 Antworten
VB6: Textboxinhalt + eine Kopfzeile drucken - Flipidus 24. Juli 2008 um 19:14:28
Re: Textboxinhalt + eine Kopfzeile drucken - Detlev Schubert 25. Juli 2008 um 08:57:25

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB-/VBA-Forum | DirectX | DirectX-Forum | VB.Net | VB.Net-Forum | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum