vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 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 - Fortgeschrittene
Druckvorschau 
Autor: ERBRU
Datum: 22.03.18 18:28

Heute komm ich mit einer mir unerklärliches phänomän

mit dem Code drucke ich ein Chart und darunter soll wird eine DGV gelegt

https://picload.org/view/dacpwowa/22-03-_2018_17-58-03.png.html

soweit so Gut funktioniert auch leider nur teilweise, und das ist mir unerklärlich warum es so ist.

https://picload.org/view/dacpwlri/22-03-_2018_18-00-03.png.html

Wenn ich meine Daten so zusammen getragen habe das ich die Auswertung drucken möchte, macht der Code auch was ersoll nur mit dem effekt beim ersten Aufruf wird die DGV - Headerzeile gedruckt aber die erste Zeile nicht? wenn ich es ein zweites mal Aufrufe dann druckvorschau ohne die DGV-Header aber alle Zeilen, auch die , die vorher fehlte? das ist mir ein Rätzel.

leider ist der Code im Nachrichtentext zu lang, wei' im Moment nicht wie ich den hier hoch laden könnte.

Beitrag wurde zuletzt am 22.03.18 um 18:32:40 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Druckvorschau 
Autor: ERBRU
Datum: 22.03.18 18:43

ich probiers mal so erster Teil vom Code:

 Private Sub PP_PrintPage(ByVal sender As Object, ByVal e As _
   PrintPageEventArgs) Handles PD.PrintPage
        Static PrintChart As Boolean = True
        Static Allpages As Integer = 1
        Static CurrenctPage As Integer = 1
 
 
 
        Dim strDokumentname As String = String.Concat( _
          tbx_SZ_Datumsbereich.Text) & " Stördauer: " & lbl_Minuten.Text
 
 
        Dim myDatum As String = "Druckdatum: " & Format(Now, "dd.MM.yyyy" & _
          "HH:mm:ss")
        Dim strErsteller As String = tbx_Anlage_ausgewaehlt.Text
        Dim BMPs() As Bitmap = {New Bitmap(Chart2.Width, Chart2.Height)}
        Dim max_Y As Integer = DGV1.Rows.Count - 1
 
 
        Dim y As Single
        If PrintChart Then
            Chart2.DrawToBitmap(BMPs(0), Chart2.ClientRectangle)
            'Liste Starthöhe mit Chart Seite 1    ------>
            y = Chart2.Height + 105
            With e.Graphics
                .DrawImage(BMPs(0), 85, 50)
                .DrawString(myDatum, New Font("Times New Roman", 10, _
                  FontStyle.Regular), Brushes.Black, _
                 New Point(30, PD.DefaultPageSettings.Bounds.Height - 70))
                .DrawString(strErsteller, New Font("Times New Roman", 10, _
                  FontStyle.Regular), Brushes.Black, _
                New Point(30, PD.DefaultPageSettings.Bounds.Height - 40))
                .DrawString(strDokumentname, New Font("Times New Roman", 10, _
                  FontStyle.Regular), Brushes.Black, _
                New Point(300, PD.DefaultPageSettings.Bounds.Height - 70))
            End With
 
        Else
            'Liste Starthöhe ohne Chart ab Seite 2 ----->
 
            y = 50
            With e.Graphics
                .DrawString(myDatum, New Font("Times New Roman", 10, _
                  FontStyle.Regular), Brushes.Black, _
                New Point(30, PD.DefaultPageSettings.Bounds.Height - 70))
                .DrawString(strErsteller, New Font("Times New Roman", 10, _
                  FontStyle.Regular), Brushes.Black, _
                New Point(30, PD.DefaultPageSettings.Bounds.Height - 40))
                .DrawString(strDokumentname, New Font("Times New Roman", 10, _
                  FontStyle.Regular), Brushes.Black, _
                New Point(300, PD.DefaultPageSettings.Bounds.Height - 70))
 
            End With
        End If
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Druckvorschau 
Autor: ERBRU
Datum: 22.03.18 18:44

2 ter Teil

 '-------------------------
        'Datagridview print ------
        '-------------------------
        With DGV1
 
            Dim fmt As StringFormat = New StringFormat( _
              StringFormatFlags.LineLimit)
            fmt.LineAlignment = StringAlignment.Center
            fmt.Trimming = StringTrimming.EllipsisCharacter
 
 
            Do While mRow < .RowCount
 
                Dim row As DataGridViewRow = .Rows(mRow)
                Dim x As Single = e.MarginBounds.Left
                Dim h As Single = 0
                'Allpages += 1
                For Each cell As DataGridViewCell In row.Cells
 
                    Dim rc As RectangleF = New RectangleF(x, y, _
                      cell.Size.Width, cell.Size.Height)
 
                    If mRow Mod 2 = 0 Then
                        e.Graphics.FillRectangle(New SolidBrush(RowColor), rc)
                    Else
                        e.Graphics.FillRectangle(New SolidBrush( _
                          RowColorAlternate), rc)
                    End If
                    e.Graphics.DrawRectangle(Pens.Black, rc.Left, rc.Top, _
                      rc.Width, rc.Height + 5)
                    '----->
 
                    If (newpage) Then
                        e.Graphics.FillRectangle(New SolidBrush(HeaderColor), _
                          rc)
 
                        e.Graphics.DrawString(DGV1.Columns( _
                          cell.ColumnIndex).HeaderText, .Font, Brushes.Black, _
                          rc, fmt)
                    Else
 
 
                        e.Graphics.DrawString(DGV1.Rows(cell.RowIndex).Cells( _
                          cell.ColumnIndex).FormattedValue.ToString(), .Font, _
                          Brushes.Black, rc, fmt)
 
                    End If
 
 
                    If cell.ColumnIndex = 0 Or cell.ColumnIndex = 1 Or _
                      cell.ColumnIndex = 2 Then
                        fmt.Alignment = StringAlignment.Center
                    Else
                        fmt.Alignment = StringAlignment.Near
                    End If
 
                    x += rc.Width
                    h = Math.Max(h, rc.Height + 2)
                Next
 
                newpage = False
 
                y += h
                mRow += 1
 
 
 
                If y + h > e.MarginBounds.Bottom Then
 
                    e.Graphics.DrawString("Seite " & CurrenctPage.ToString, _
                    New Font("Times New Roman", 12), Brushes.Black, New Point( _
                    300, PD.DefaultPageSettings.Bounds.Height - 40))
 
                    CurrenctPage += 1
 
                    e.HasMorePages = True
                    PrintChart = False
                    mRow -= 1
                    newpage = True
                    Exit Sub
                End If
 
            Loop
 
            mRow = 0
        End With
 
        e.Graphics.DrawString("Seite " & CurrenctPage.ToString, _
                              New Font("Times New Roman", 12), Brushes.Black, _
                              New Point(300, _
                              PD.DefaultPageSettings.Bounds.Height - 40))
 
        PrintChart = True
        CurrenctPage = 1
        Allpages = 1
 
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Druckvorschau 
Autor: Manfred X
Datum: 22.03.18 23:03

Hallo "Fortgeschrittener" Anfänger!

Programmier-Foren sind nicht für die Fehlersuche in Code eingerichtet,
sondern es werden Themen diskutiert, Argumente ausgetauscht und Informationen
weitergegeben.

Sollte ein "rätselhaftes" Phänomen auftreten, ist es erforderlich,
ein Beispielprojekt zu erstellen, das anhand möglichst weniger
Code-Zeilen diesen Effekt demonstriert und somit für andere nachvollziehbar
macht.

Aufgrund meiner Erfahrung kann ich mitteilen, daß die einschlägigen
Druck-Klassen im Net-Framework keine substantiellen Fehler enthalten.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Druckvorschau 
Autor: ERBRU
Datum: 23.03.18 11:56

Hallo Manfred X,

"Fortgeschrittener" Anfänger hat Problem gelöst, meine Druck Routine läuft jetzt einwandfrei

Seite wird gedruckt wie es soll.

Oben ein Chart und drunter eine DGV.

Danke für deine Anmerkungen.
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