RTF Formatierungen {Wichtig}

hugamann

Mitglied
Ich habe ein Richtextbox feld und habe den text da eingefärbt.
Aber jedes mal wenn ich einen neuen text hinzufüge gehen die Farbformatierungen verloren.

Ich adde den text wie folgt:

RTF.Text = RTF.Text & Text1.Text & vbCrLf

und dann ist die zeile die ich vorher eingefärbt habe wieder schwarz und die neue zeile eingefärbt.

Bitte dringend um Hife
 
Wie färbst Du den Text ?
Habe den Text gefärbt mit:
Code:
RTF.SelStart = 0
RTF.SelLength = Len(RTF.Text)
RTF.SelColor = vbRed
Text anfügen:
Code:
RTF.Text = RTF.Text & vbCrLf & Text1.Text
Nach dem Anfügen ist der gesamte Text rot.
 
das kommt weil die letzte stelle rot eingefärbt ist.
Wenn du das mit "Len(text) - 1 " machst ist alles was danach kommt wieder schwarz
 
Also das Problem ist wie folgt:

Ich habe einen Text im RTF

"{System} Hallo"

wenn ich jetzt mit einem Textfeld eine neue zeile hinzufüge

Code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then

     RTF.Text = RTF.Text & Text1

End if
End Sub

dann ist der Text im RTF wieder

"{System} Hallo"
"{System} Neue eingabe"

D.h. das "{System}" in der letzten Zeile wird immer eingefärbt

soll aber am Ende so aussehen:

"{System} Hallo"
"{System} Neue eingabe"
 
Zuletzt bearbeitet:
Versuch´s mal hiermit:
Code:
Private Sub TextFärben_Click()
RTF.SelStart = 0
RTF.SelLength = Len(RTF.Text)
RTF.SelColor = vbRed
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
 RTF.Text = RTF.Text & vbCrLf & Text1.Text
 RTF.SelStart = Len(RTF.Text) - Len(Text1)
 RTF.SelLength = Len(Text1)
 RTF.SelColor = vbBlack
End If
End Sub
Ich weiß allerdings immer noch nicht was Du erreichen möchtest.
Soll nach dem Hinzufügen der gesamte Text gefärbt sein.
Bei mir geht die Formatierung nicht verloren.
 
Also das ist so:

Ich möchte immer nur ein wort einfärben.

Eben das "{System}".
Das steht immer am anfang jeder Zeile und soll dann da Rot sein

-> "{System} Text1"

Der rest soll dann wieder schwarz sein.
Das geht ja schon soweit.

nur wenn ich noch eine Zeile einfüge dann ist die formatierung bei der ersten Zeile wieder schwarz und die zweite zeile ist dann Rot

-> "{System} Text1"
-> "{System} Text2"

ich möchte eben das beide Zeilen so aussehen...

-> "{System} Text1"
-> "{System} Text2"
 
Also ich habe das ganze so gemacht:

Code:
Dim pos1 As Integer
Dim pos2 As Integer


Private Sub Form_Load()
 pos1 = 1
 pos2 = 1
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then

RTF.Text = RTF.Text & "{System}" & Text1.Text & vbCrLf
pos1 = InStr(pos1, RTF.Text, "{")
pos2 = InStr(pos1 + 1, RTF.Text, "}")

RTF.SelStart = pos1
RTF.SelLength = 6
RTF.SelColor = vbRed



pos1 = pos1 + 1

End If
End Sub
 
Hab auch mal ein bisschen rumprobiert.
Code:
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim Gefunden As Long

If KeyAscii = 13 Then
 
RTF.Text = RTF.Text & vbCrLf & "{System} " & Text1.Text
 
While Not Gefunden = -1
 Gefunden = RTF.Find("{System}", RTF.SelStart + RTF.SelLength + 1)
 RTF.SelColor = vbRed
Wend

End If
End Sub
 
Es geht auch noch einfacher:
Code:
Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then
 RTF.SelText = "{"
 RTF.SelColor = vbRed
 RTF.SelText = "System"
 RTF.SelColor = vbBlack
 RTF.SelText = "} " & Text1 & vbCrLf
End If

End Sub
 
Zuletzt bearbeitet:
Zurück