Ich wäre jetzt sehr an Deiner Drucken-Funktion interessiert. Wie hast Du die eingebaut?
Teil 3, so wenn das hier alles reinpasst und du es umgesetzt hast sollte es funktioniern. Bei mir klappt das.
der Rest folgt das ist ein langer code, den letzten Post setzt du unter diesem.
'Spalten Zeilen einrichten
Private Sub PD_OB_Zeilen_Spalten_Ermitteln()
Dim ImageWall As Bitmap
ImageWall = New Bitmap(CInt(rect_Druckbereich.Width), CInt( _
rect_Druckbereich.Height))
Using g As Graphics = Graphics.FromImage(ImageWall)
g.PageUnit = GraphicsUnit.Display
DruckSeite = 1
Dim DGV_Font As Font = New System.Drawing.Font("Tahoma", 10.25!, _
System.Drawing.FontStyle.Regular, _
System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Dim Status_Font As Font = New System.Drawing.Font("Wingdings", _
12.25!, System.Drawing.FontStyle.Regular, _
System.Drawing.GraphicsUnit.Point, CType(2, Byte))
Dim CellColor As System.Drawing.Color = Color.DarkRed
Dim ZellInhalt As String
Dim Höhe As Integer = 0
Dim maxHöhe As Integer = 0
Dim Breite As Single = rect_Druckbereich.Width
ZeilenHoehen.Clear()
SpaltenBreiten.Clear()
'relativ feste Breiten
Dim w1 As Single = g.MeasureString("-9.999.999-", DGV_Font).Width _
'ID
Dim w2 As Single = g.MeasureString("-Seriennummer-", _
DGV_Font).Width 'Seriennummer
Dim w3 As Single = g.MeasureString("-9.999.999,99--9.999.999,99-", _
DGV_Font).Width 'Bauteil
Dim w4 As Single = g.MeasureString("-9.999.999,99--9.999.999,99-", _
DGV_Font).Width 'Fertigungsdatum-Bauteil
Dim w5 As Single = g.MeasureString("-Mehrfachkiste Links-", _
DGV_Font).Width 'Status
Dim wG As Single = w1 + w2 + w3 + w4 + w5
Dim PrzSatz As Single = (wG / Breite) * 100
'Spaltenbreiten dritteln wenn erforderlich
Dim halberPrzSatz As Single = (100 - PrzSatz) / 2
Dim halbeBreite As Single = (halberPrzSatz * Breite) / 100
SpaltenBreiten.Add(w1) 'ID
SpaltenBreiten.Add(w2) 'Seriennummer
SpaltenBreiten.Add(w3) 'Bauteil
SpaltenBreiten.Add(w4) 'Fertigungsdatum
SpaltenBreiten.Add(w5) 'Status
Dim curr_Zelle As DataGridViewCell = Nothing
Dim ZellBox As New RectangleF
Dim sfmt As New StringFormat
sfmt = StringFormat.GenericDefault
sfmt.Alignment = StringAlignment.Center
sfmt.LineAlignment = StringAlignment.Center
Dim ZeilenHöhe As Single = g.MeasureString("[Wü gq*µ']", _
DGV_Font).Height
Dim ZeilenHöheB As Single = g.MeasureString("ü", Status_Font).Height
Dim charactersFitted, linesFilled As Integer
Dim tmp_size As New SizeF
Dim gsize As New SizeF
Dim aktHöhe As Integer
For DGVZeile As Integer = 0 To (DGV.Rows.Count - 1)
maxHöhe = 0
Höhe = 0
For DGVSpalte As Integer = 0 To (DGV.Columns.Count - 1)
curr_Zelle = DGV.Rows(DGVZeile).Cells(DGVSpalte)
ZellInhalt = curr_Zelle.FormattedValue.ToString
'Höhenmessung
tmp_size.Width = SpaltenBreiten(DGVSpalte) - 1
tmp_size.Height = rect_Druckbereich.Height
'Anzahl benötigter Zeilen ermitteln (linesFilled)
gsize = g.MeasureString(ZellInhalt, DGV_Font, tmp_size, _
sfmt, charactersFitted, linesFilled)
aktHöhe = CInt(Math.Ceiling((ZeilenHöhe * linesFilled)))
Höhe = Math.Max(Höhe, aktHöhe)
maxHöhe = Math.Max(Höhe, maxHöhe)
Next
ZeilenHoehen.Add(maxHöhe + 2)
Next
DGV_Font.Dispose()
Status_Font.Dispose()
sfmt.Dispose()
curr_Zelle.Dispose()
End Using
End Sub |