====== RichEdit-Komponente ====== ==== Textattribute für gesamten Text setzen ==== if (FontDialog1->Execute()){ RichEdit1->Font->Assign(FontDialog1->Font); } ==== Drucken aus RichEdit ==== void RichEditToCanvas(TRichEdit* RichEdit,TCanvas* Canvas) {int y = 10; // y-Position der Zeile int ZA = 10; // Zeilenabstand int LR = 10; // linker Rand int i; AnsiString zeile; for (i=0;iRichEdit1->Lines->Count;i++) {zeile = Form1->RichEdit1->Lines->Strings[i]; Canvas->TextOutA(LR,y,zeile); y=y+ZA+Canvas->TextHeight(zeile); } } void __fastcall TForm1::Drucken1Click(TObject *Sender) {if (PrintDialog1->Execute()) {Printer()->BeginDoc(); // Initialiert Druckauftrag RichEditToCanvas(RichEdit1,Printer()->Canvas); Printer()->EndDoc(); // Beendet Druckauftrag } } ==== Eingestellte Schriftart und Schriftgröße ==== Label1->Caption="Schriftart: "+RichEdit1->SelAttributes->Name; Label2->Caption="Schriftgröße: "+IntToStr(RichEdit1->SelAttributes->Size); ==== Textattribute bei Markierungen setzen ==== void __fastcall TForm1::SpeedButton1Click(TObject *Sender) {RichEdit1->SelAttributes->Style=RichEdit1->SelAttributes->Style<SelText = RichEdit1->SelText; } //--------------------------------------------------------------------------- void __fastcall TForm1::SpeedButton4Click(TObject *Sender) {RichEdit1->SelAttributes->Style=RichEdit1->SelAttributes->Style>>fsBold; RichEdit1->SelAttributes->Style=RichEdit1->SelAttributes->Style>>fsItalic; RichEdit1->SelAttributes->Style=RichEdit1->SelAttributes->Style>>fsUnderline; } //--------------------------------------------------------------------------- ==== Länge des gesamten Texts in RichEdit-Komponente ==== void __fastcall TForm1::Zeichenanzahl1Click(TObject *Sender) {AnsiString edtext = RichEdit1->Text; int zeichenzahl = RichEdit1->Text.Length(); ShowMessage("Der Text besteht aus "+IntToStr(zeichenzahl)+" Zeichen!"); } ==== Suchen in RichEdit-Komponente ==== void __fastcall TForm1::Suchen1Click(TObject *Sender) {int start=1, ende; AnsiString suchwort = InputBox("Suche","Bitte Suchbegriff eingeben:",""); AnsiString edtext = RichEdit1->Text; start = PosEx(suchwort,edtext,start); while (start>0){ RichEdit1->SelStart=start-1; RichEdit1->SelLength=suchwort.Length(); RichEdit1->SelAttributes->Color=clBlue; start = PosEx(suchwort,edtext,start+suchwort.Length()); } } ==== Ersetzen in RichEdit-Komponente ==== **Position eines Teilstrings ermitteln** int PosEx (AnsiString SubStr, AnsiString S, int Offset); Beschreibung:\\ * PosEx gibt den Index von SubStr in S zurück, wobei die Suche bei Offset begonnen wird. Wenn Offset 1 ist (Vorgabe), entspricht PosEx Pos. * PosEx gibt 0 zurück, wenn SubStr nicht gefunden wird, Offset größer als die Länge von S ist oder Offset kleiner als 1 ist. void __fastcall TForm1::N3Click(TObject *Sender) {int start=1, ende; AnsiString suchwort = InputBox("Ersetzen","Bitte Suchbegriff eingeben:",""); AnsiString ersatzwort = InputBox("Ersetzen",suchwort+" soll ersetzt werden durch: ",""); AnsiString edtext = RichEdit1->Text; AnsiString stext; start = PosEx(suchwort,edtext,start); while (start>0){ RichEdit1->SelStart=start-1; RichEdit1->SelLength=suchwort.Length(); RichEdit1->SelAttributes->Color=clBlue; RichEdit1->SelText=ersatzwort; AnsiString edtext = RichEdit1->Text; start = PosEx(suchwort,edtext,start+suchwort.Length()); } } ==== Wiki2RTF ==== Wie bei Wikipedia sollen Tags (Sternchen, Slash bzw. Underline) vor und nach einem Text durch die richtige Formatierung ersetzt werden. **Teilstring ermitteln** AnsiString MidStr (AnsiString AText, int AStart, int ACount); Beschreibung:\\ * MidStr gibt einen Teilstring mit ACount Zeichen zurück, der bei AText[AStart] beginnt. * Ist AStart größer als die Länge von AText, gibt MidStr einen leeren String zurück. * Wenn Count größer ist als die Anzahl der verfügbaren Zeichen, werden nur die Zeichen von AText[AStart] bis zum Ende von AText zurückgegeben. void ersetzen(AnsiString tag) {int start=1,ende; start=PosEx(tag,Form1->RichEdit1->Text,start); while(start>0) { Form1->RichEdit1->SelStart=start-1; ende=PosEx(tag,Form1->RichEdit1->Text,start+2); Form1->RichEdit1->SelLength=(ende-start)+2; // RichEdit1->SelAttributes->Color=clBlue; if (tag=="**") { Form1->RichEdit1->SelAttributes->Style=Form1->RichEdit1->SelAttributes->Style<RichEdit1->SelAttributes->Style=Form1->RichEdit1->SelAttributes->Style<RichEdit1->SelAttributes->Style=Form1->RichEdit1->SelAttributes->Style<RichEdit1->SelText,3,ende-start-2); Form1->RichEdit1->SelText = stext; start=PosEx(tag,Form1->RichEdit1->Text,ende+2); } } void __fastcall TForm1::Wiki2RTF1Click(TObject *Sender) {ersetzen("**"); ersetzen("//"); ersetzen("__"); }