vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Printing - Problem - Nach erster Zeile ist ein Abstand, aber der Rest stimmt :-O 
Autor: Seek1
Datum: 30.06.21 17:37

Hallo Leute,

Ich will einfach einen Text ausdrucken, der via vbnewline getrennte ist.
Dazu habe ich mal ein Kleines Programm zum Testen erstellt:

    Public PrintString As String
    Public linecount As Integer
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
      Handles Button1.Click
        If PrintDialog.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
            Exit Sub
        End If
 
        Dim prnt As New Printing.PrintDocument
        prnt.PrinterSettings = PrintDialog.PrinterSettings
        prnt.DocumentName = "TestPrint " & My.Computer.Clock.LocalTime.ToString
 
        PrintString = ""
        For i = 1 To 185
            PrintString = PrintString & " " & i & vbNewLine
        Next i
 
        linecount = 0
        AddHandler prnt.PrintPage, AddressOf PrintPageHandler
        prnt.Print()
        RemoveHandler prnt.PrintPage, AddressOf PrintPageHandler
    End Sub
 
    Public Sub PrintPageHandler(ByVal sender As Object, ByVal args As _
      Printing.PrintPageEventArgs)
        Dim Lines() As String = PrintString.Split(vbNewLine)
        Dim Fontt As New Font("Arial", 10, FontStyle.Regular, _
          GraphicsUnit.Pixel)
        Dim Actline As String
 
        Dim VerticalPos As Integer = 20
 
        Do
            Actline = Lines(linecount)
            args.Graphics.DrawString(Actline, Fontt, Brushes.Black, 20, _
              VerticalPos)
            VerticalPos = VerticalPos + Fontt.Height
 
            If linecount < UBound(Lines) Then
                linecount = linecount + 1
            End If
 
            If VerticalPos + (4 * Fontt.Height) >= args.PageBounds.Bottom Then
                args.HasMorePages = True
                Return
            End If
 
        Loop Until linecount >= UBound(Lines)
    End Sub
Nun da Problem:

Es wird folgendes auf der ersten Seite ausgedruckt:

1

2
3
4
5
6

Woher kommt der Abstand bei der ersten Zeile?
Auf den nächsten Seiten scheint es zu stimmen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Printing - Problem - Nach erster Zeile ist ein Abstand, aber der Rest stimmt :-O 
Autor: Seek1
Datum: 30.06.21 18:01

Und jetzt haltet euch fest:

Actline = VerticalPos.ToString
args.Graphics.DrawString(Actline, Fontt, Brushes.Black, 20, VerticalPos)
ergibt:
20
32
44
56
...

Kein Abstand nach der ersten Zeile !

An was liegt das?

Das Array Actlines wird schön von 1 bix X befüllt.
Da ist keine Leerzeile drinnen.
Wenn ich das Programm durchsteppe, bekomme ich für VerticalPos auch immer die 20, 32, 44, 56, ....

Habe auch schon versucht, ob ein Steuerzeichen mitübergeben wird.
 Actline = CStr(Lines(linecount).ToString.Replace(vbNewLine, "N"))
Leider ohne Erfolg
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Printing - Problem - Nach erster Zeile ist ein Abstand, aber der Rest stimmt :-O 
Autor: Seek1
Datum: 30.06.21 18:19

Actline = Lines(linecount).TrimStart(CChar(vbCr), CChar(vbLf))

Problem gelöst.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel