Textformatierung in TRichEdit
-
Hallo Leute,
folgendes Problem: Mit Delphi kann ich Farb-Formatierungen der Schrift in einem RichEdit Feld wie folgt vornehmen:
Messages.SelText := '{\rtf1\ansi\deff0{\colortbl;\red0\green0\blue0;}\cf1\i '+Nickname+ ' ist der Sitzung beigetreten.\i0\line}';Nun meine Frage: Ist die prinzipiell auf diesem Wege auch unter C++ mit dem BCB möglich?
RichEdit2->Lines->Add('{\rtf1\ansi\deff0{\colortbl;\red0\green0\blue0;}\cf1\i ' + Socket->RemoteAddress + ' ist der Sitzung beigetreten.\i0\line}');Dies scheint nicht zu laufen.
[C++ Warnung] main.cpp(149): W8098 Ungültige mehrstellige Zeichenkonstante
[C++ Fehler] main.cpp(149): E2129 char-Konstanten dürfen ein oder zwei Zeichen lang seinDanke für jede Anregung!
MfG
Tippo
-
Einfache Hochkommas repräsentieren einen einzelnen Charakter. Tausche also die ' gegen " und sollte funktionieren.
Ich sehe aber ehrlich gesagt keinen Grund die normalen Funktionen zu verwenden, um Farbe Schriftgröße etc zu setzen.
-
Strings werden bei C++ in Anführungsstriche gepackt ""
-
Also weiß nicht genau ob das so geht, aber du hast auf jeden fall einen fehler in deinem string.
wenn dann musst du das so schreiben:
RichEdit2->Lines->Add("{\rtf1\ansi\deff0{\colortbl;\red0\green0\blue0;}\cf1\i " + Socket->RemoteAddress + " ist der Sitzung beigetreten.\i0\line}");D
-
Danke für die schnellen Antworten,
nur wenn ich diesen weg weiter verfolge bekomme ich folgenden Output im RichEdit2{
tf1nsideff0{colortbl;
ed0green0lue0;}cf1i 127.0.0.1 ist der Sitzung beigetreten.i0line}genau mit den Sonderzeichen und den Zeilennumbrüchen.
Kann man das korrigieren, wenn ja, wie?Danke!
Tippo
-
Du mußt einfach alle vorkommenden Backslashs maskieren (verdoppeln) sonst interpretiert der Compiler das nachfolgende Zeichen als Steuerzeichen.
-
Braunstein schrieb:
Du mußt einfach alle vorkommenden Backslashs maskieren (verdoppeln) sonst interpretiert der Compiler das nachfolgende Zeichen als Steuerzeichen.
Wirklich alle?
RichEdit1->Lines->Add(AnsiString("{\\rtf1\\ansi\\deff0{\\colortbl;\\red0\\green0\\blue0;}\\cf1\\i" + astrText + " ist der Sitzung beigetreten.\\i0}"));Da schmiert mir das ganze Programm ab. Frierte einfach komplett ein. CPU Load steigt aber nicht auf 100%, es ist dann einfach weg und lässt sich nichtmal über den Builder Shortcut [Strg] + [F2] abbrechen.
Ich weiss nicht weiter.

MfG
Tippo
-
Hallo
Arbeite doch besser mit den Eigenschaften von TRichEdit als mit direktem RTF-Formatierungen. Schau dir TRichEdit in der Builder-Hilfe mal genau an, da gibt es eine Eigenschaft die den Stil des Textes selektiv beeinflußen kann.
bis bald
akari
-
EDIT:
folgendes funktioniert:
AnsiString astrText = AnsiString("{\\rtf1\\ansi\\deff0{\\colortbl; \\red255\\green0\\blue0;}\\cf1 roter text\\cf0 noch ein text"); RichEdit1->Text = astrText;wenn ich jetzt aber nicht RichEdit1->Tex = astrText mache, da ich ja eine Zeile anfügen möchte
RichEdit1->Lines->Add(astrText);lautet der Fehler
EOutOfReources
gehen tut auch
RichEdit1->Lines->Strings[RichEdit1->Lines->Count] = astrText;Sicher mache ich wieder einen dilettantischen Fehler...
MfG
Tippo