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;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
 }
}

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<<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;
}
//---------------------------------------------------------------------------

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:

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:

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("__");
}