| |
VB.NET - FortgeschritteneDruckvorschau | | | 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. | |
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 | |
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 | |
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. | |
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. | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|