Umbruch in FlexGrid

Hallo leute ^^
Ich mal wieder :smile:

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 :smile:

Hallo,

Gibts da ne lösung oder muss ich damit leben?! ^^

das geht … im Prinzip, aber :smile:

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ß :smile: 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 :smile:

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. :smile:

Gruß, Rainer

vbNewLine
Statt vbCrLf versuche 'mal vbLf oder am, besten gleich vbNewLine