RichEdit->PlainText
-
Mißverständnis.
Ich möchte den RichEdit-Quelltext haben.
Also sowas{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil MS Sans Serif;}}
Und das gegebenenfalls nur von selectiertem Text
-
Dann verwende die Clipboard-Funktionen des RichEdit. Solange PlainText auf false steht, bleibt die Formatierung erhalten.
-
Ja siehe oben in meinem Codebeispiel.
Oder meinst Du es geht unkomplizierter?
-
Was machst Du denn mit dem AnsiString, in dem die RTF-Anweisungen enthalten sind? Wozu soll es gut sein, die RTF-Anweisungen in dem AnsiString zu haben?
-
Wie gesagt, ich bastele an einer UNDO-REDO Funktion.
Die Aktionen werden in einer Liste Documentiert ,um sie Schritt für Schritt
Vor und Rückwärts zu durchlaufen.Wenn ich aber buntgefärbten(nicht einfarbig gefärbten) Text ausschneide, und ihn woanders wieder hinsetze, kann ich die RTF-Formatieung in ,einer Liste nicht nur über den reinen Text nachvollziehen, sondern speicher den RTF-Quelltext in die Liste usw...
Funktioniert jetzt auf jeden Fall.
-
Tja, weiß nicht. Die Lösung gefällt mir zwar nicht wirklich, aber mir fällt auch nichts besseres ein. Müßte ich mich mal mit auseinander setzen. Dazu fehlt mir aber die Zeit.
-
Mir gefällt die Lösung auch nich richtich
-
Hallo, ich habe das mal vor einiger Zeit so gemacht:
//============================================================================== /*! \brief set formated text (RichText) to RTF control \param AnsiString RtfCode - formated text (RichText) \retval none \return void */ //============================================================================== void __fastcall TfrmCommentDialog::SetText(AnsiString RtfCode) { TStringStream *pStream = new TStringStream(RtfCode); rtfText->Lines->LoadFromStream(pStream); delete pStream; } //============================================================================== /*! \brief get formated text (RichText) from RTF control \param void \retval none \return AnsiString - formated text (RichText) */ //============================================================================== AnsiString __fastcall TfrmCommentDialog::GetText() { TStringStream *pStream = new TStringStream(""); AnsiString saRtfCode; rtfText->Lines->SaveToStream(pStream); saRtfCode = pStream->DataString; delete pStream; return saRtfCode; }Gruß Nighthero
-
Ja aber,
So hast Du das ganze RichEdit im TMemoryStream.
Wenn Du vorher ins Clipboard kopierst kannst Du eben auch nur die selektierte Auswahl holen
-
du solltest statt richedit 1.0 mind. die richedit 2.0 verwenden, dort gibts dann multilevel undo/redo
siehe MDSN:
EM_GETTEXTMODE, EM_GETUNDONAME, EM_GETREDONAME, EM_SETUNDOLIMIT
-
Danke für den Tip.
Verstehe aber nur ein Viertel.
z.B CreateWindowEx? geht gar nich rein.
-
http://home.att.net/~robertdunn/Yacs.html
http://home.att.net/~robertdunn/CodeSamples/RichEdit20.zip
-
Probiere gerade den Code aus und werde mit Fehlern bombardiert.
Erst fing es an in der Funktion
bool TRichEdit20::FindTextEx(AnsiString text, int startPos,
TFindOptions findOptions, int& foundPos, int& foundLength)in class richedit20
Da kam es zu Zweideutigkeiten mit
FINDTEXTEX.
Ich habe dann daraus Richedit::FINDTEXTEX gemacht.Das wurde zwar akzeptiert, aber jetzt hagelt es andere Fehler
Alles voll mit "......Typname erwartet"
-
fang doch erstmal klein an und nimm nur den teil der die richedit20.dll laedt und das entspr. steuerelement auf deinem formular erzeugt. damit du erst einmal sichre sein kannst, dass es ueberhaupt funktioniert.
-
Jetzt funktioniert alles,
Weiß auch nicht so genau warum.Danke erst mal.