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