Label1->Caption=IntToStr(1+RichEdit1->CaretPos.x)+"|"+IntToStr(1+RichEdit1->CaretPos.y);
if (FontDialog1->Execute()){ RichEdit1->Font->Assign(FontDialog1->Font); }
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;i<Form1->RichEdit1->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 } }
Label1->Caption="Schriftart: "+RichEdit1->SelAttributes->Name; Label2->Caption="Schriftgröße: "+IntToStr(RichEdit1->SelAttributes->Size);
void __fastcall TForm1::SpeedButton1Click(TObject *Sender) {RichEdit1->SelAttributes->Style=RichEdit1->SelAttributes->Style<<fsBold; RichEdit1->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; } //---------------------------------------------------------------------------
void __fastcall TForm1::Zeichenanzahl1Click(TObject *Sender) {AnsiString edtext = RichEdit1->Text; int zeichenzahl = RichEdit1->Text.Length(); ShowMessage("Der Text besteht aus "+IntToStr(zeichenzahl)+" Zeichen!"); }
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()); } }
Position eines Teilstrings ermitteln
int PosEx (AnsiString SubStr, AnsiString S, int Offset);
Beschreibung:
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()); } }
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:
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<<fsBold; } if (tag=="//") { Form1->RichEdit1->SelAttributes->Style=Form1->RichEdit1->SelAttributes->Style<<fsItalic; } if (tag=="__") { Form1->RichEdit1->SelAttributes->Style=Form1->RichEdit1->SelAttributes->Style<<fsUnderline; } AnsiString stext = MidStr(Form1->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("__"); }