Hallo leute ^^
Ich mal wieder 
Also soweit sind ALLE probleme meines Projektes gelöst. Nun will ich das FlexGrid drucken was auch wunderbar Funktioniert. So wies aussieht wirds gedruckt.
Ich will aber noch etwas mehr ^^
Ich habe ein Feld namens Dimensionstext in dem Umbrüche stehen.
Diese Umbrüche sind Identisch mit dem „vbCrLf“ aber auch wenn ich „WordWrap“ auf True stelle oder auf False macht er das nicht.
Wie kann ich diese umbrüche nun einblenden also das er diese übernimmt damit auch die langen zeilen lesbar bleiben.
Es soll keine neue Zeile angelegt werden. Ledeglich umbruch und die zeile vergrößert sich.
Gibts da ne lösung oder muss ich damit leben?! ^^
Grüße vom digi 
Hallo,
Gibts da ne lösung oder muss ich damit leben?! ^^
das geht … im Prinzip, aber 
Der zeilenumbruch funktioniert, nur wird die Zeilenhöhe nicht automatisch angepasst. Das wirst Du selbst machen müssen.
Ich würde den String der Zeile mit Split in ein Array übernehmen und UBaound(Array) ‚mißbrauchen‘ um …
MshFlexgrid.Rowhight(Index) = MshFlexgrid.Rowhight(0) * UBound(Array)
… schreiben zu können.
Du kannst natürlich auch in einer Schleife mit ‚Instr()‘ zählen, wie viele Chr(13) in dem String vorkommen, das spart Speicherplatz. Split ist aber vermutlich schneller und wenn Du eine längere Tabelle damit bearbeiten willst …
Gruß, Rainer
Danke für den Denkanstoß
es funktioniert (weil ich weiss wie nervig das ist wenns jmd schreibt und keine lösung hinschreibt) so sieht mein Source aus:
Private Sub PrepareToPrint()
Dim pDimTextSplit As String
With DGV
.WordWrap = True 'WICHTIG! MUSS AN SEIN! GoTo Weiter
.GridColor = None
.GridLines = flexGridDots
.ColWidth(0) = 0
.ColWidth(1) = 0
.ColWidth(2) = 0
.ColWidth(3) = 0
.ColWidth(4) = 0
.ColWidth(5) = 0
.ColWidth(6) = 0
.ColWidth(7) = 0
.ColWidth(8) = 0
.ColWidth(9) = 1150
.ColWidth(10) = 0
.ColWidth(11) = 0
.ColWidth(12) = 3000
.ColWidth(13) = 3000
.ColWidth(14) = 500
.TextArray(14) = "AB 1"
.ColWidth(15) = 750
.ColWidth(16) = 750
.TextArray(16) = "AB 2"
.ColWidth(17) = 750
.TextArray(17) = "AB 3"
.ColWidth(18) = 750
.TextArray(18) = "AB 4"
.ColWidth(19) = 0
.ColWidth(20) = 0
.ColWidth(21) = 0
.ColWidth(22) = 0
.ColWidth(23) = 0
.ColWidth(24) = 4500
.ColWidth(25) = 0
.ColWidth(26) = 0
.ColWidth(27) = 0
.ColWidth(28) = 0
.ColWidth(29) = 0
.AllowBigSelection = False
.SelectionMode = flexSelectionByRow
End With
Dim i As Integer
Dim pTextSplit() As String
Dim pZeileHoehe As Long
Dim pSubStringCount As Integer
For i = 0 To DGV.Rows - 1
pDimTextSplit = DGV.TextMatrix(i, 24)
pSubStringCount = UBound(Split(pDimTextSplit, vbCrLf))
If pSubStringCount \> 0 Then
pTextSplit = Split(pDimTextSplit, vbCrLf)
pZeileHoehe = DGV.RowHeight(0) \* UBound(pTextSplit)
DGV.RowHeight(i) = pZeileHoehe + 240
End If
Next
End Sub
Weiter:
WordWrap muss auf True sein. Alternativ dazu kann man glaube auch DGV.ColWordWrapOption(i) für nur diese Spalte festlegen. Bin mir da aber nicht so sicher. Habs nich ausprobiert weils bei mir so wunderbar klappt 
Grüße vom digi …
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi Digi,
danke für den Code! So war’s gemeint. 
Gruß, Rainer
vbNewLine
Statt vbCrLf versuche 'mal vbLf oder am, besten gleich vbNewLine