Dieses Visual C + + Programm realisiert einen Texteditor mit verschiedenen Einstellungen und Funktionen (Schriftart, Schriftformatierung, Suchen, Ersetzen, Drucken, Anzahl Zeichen, Anzahl Wörter, Cursorposition).
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "EditorUnit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Ende1Click(TObject *Sender) { Form1->Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Neu1Click(TObject *Sender) { RichEdit1->Clear(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Speichern1Click(TObject *Sender) { if (SaveDialog1->Execute()) { RichEdit1->Lines->SaveToFile(SaveDialog1->FileName); Label1->Caption="Dateiname: "+SaveDialog1->FileName; } } //--------------------------------------------------------------------------- void __fastcall TForm1::ffnen1Click(TObject *Sender) { if (OpenDialog1->Execute()) { RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName); Label1->Caption="Dateiname: "+OpenDialog1->FileName; } } //--------------------------------------------------------------------------- void Zeichenanzahl() { // Form1->Label2->Caption="Zeichenanzahl: "+IntToStr(Form1->RichEdit1->Text.Length()); int ZA=0; for(int i=0; i<Form1->RichEdit1->Lines->Count;i++) //Für jede Zeile { String str = Form1->RichEdit1->Lines->Strings[i].c_str(); for(int j=0; j<str.Length();j++) //Für jedes Zeichen in einer Zeile { if(Form1->RichEdit1->Lines->Strings[i].c_str()[j]!=' ') ZA=ZA+1; } } Form1->Label2->Caption="Zeichenanzahl: " + IntToStr(ZA); } void Wortanzahl() { int words=0, lastchar=0; int laenge=0; //Trim() schneidet am Ende und am Anfang die Leerzeichen und Umbrüche weg for(int i=0; i<Form1->RichEdit1->Text.Trim().Length();i++) { if(Form1->RichEdit1->Text.Trim().c_str()[i]==13 || Form1->RichEdit1->Text.Trim().c_str()[i]==32) { if(lastchar==13 || lastchar==10 || lastchar==32) { //Kein weiteres Wort, da bevor bereits ein Leerzeichen bzw. Zeilenumbruch } else { words++; } } lastchar=Form1->RichEdit1->Text.Trim().c_str()[i]; } words++; Form1->Label4->Caption="Wörter: " + IntToStr(words); } void __fastcall TForm1::RichEdit1Change(TObject *Sender) { Zeichenanzahl(); Wortanzahl(); } //--------------------------------------------------------------------------- void CursorPosition() { Form1->Label3->Caption="Cursorposition: "+VarToStr(1+Form1->RichEdit1->CaretPos.y)+"|"+VarToStr(1+Form1->RichEdit1->CaretPos.x); } void __fastcall TForm1::RichEdit1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift) { CursorPosition(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Ersetzen1Click(TObject *Sender) { ReplaceDialog1->Position=Point(RichEdit1->Left + RichEdit1->Width, RichEdit1->Top); ReplaceDialog1->Execute(); } void __fastcall TForm1::SearchBox1Change(TObject *Sender) { int FoundAt=0; TSearchTypes mySearchTypes = TSearchTypes(); mySearchTypes << stWholeWord; FoundAt=RichEdit1->FindTextW(SearchBox1->Text, 0, RichEdit1->Text.Length(),mySearchTypes); if(FoundAt!=-1) { RichEdit1->SetFocus(); RichEdit1->SelStart=FoundAt; RichEdit1->SelLength=SearchBox1->Text.Length(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Suchen1Click(TObject *Sender) { FindDialog1->Execute(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FindDialog1Find(TObject *Sender) { int FoundAt=0; TSearchTypes mySearchTypes = TSearchTypes(); if(FindDialog1->Options.Contains(frMatchCase)) { mySearchTypes << stMatchCase; } if(FindDialog1->Options.Contains(frWholeWord)) { mySearchTypes << stWholeWord; } FoundAt=RichEdit1->FindTextW(FindDialog1->FindTextW, 0, RichEdit1->Text.Length(),mySearchTypes); if(FoundAt!=-1) { RichEdit1->SetFocus(); RichEdit1->SelStart=FoundAt; RichEdit1->SelLength=FindDialog1->FindTextW.Length(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::ReplaceDialog1Find(TObject *Sender) { int FoundAt=0; TSearchTypes mySearchTypes = TSearchTypes(); if(ReplaceDialog1->Options.Contains(frMatchCase)) { mySearchTypes << stMatchCase; } if(ReplaceDialog1->Options.Contains(frWholeWord)) { mySearchTypes << stWholeWord; } FoundAt=RichEdit1->FindTextW(ReplaceDialog1->FindTextW, 0, RichEdit1->Text.Length(),mySearchTypes); if(FoundAt!=-1) { RichEdit1->SetFocus(); RichEdit1->SelStart=FoundAt; RichEdit1->SelLength=ReplaceDialog1->FindTextW.Length(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::ReplaceDialog1Replace(TObject *Sender) { int FoundAt=0; TReplaceFlags flags; TSearchTypes mySearchTypes = TSearchTypes(); if(ReplaceDialog1->Options.Contains(frMatchCase)) { mySearchTypes << stMatchCase; } else { flags << rfIgnoreCase; } if(ReplaceDialog1->Options.Contains(frWholeWord)) { mySearchTypes << stWholeWord; } if(ReplaceDialog1->Options.Contains(frReplaceAll)) { flags << rfReplaceAll; RichEdit1->Text=StringReplace(RichEdit1->Text,ReplaceDialog1->FindTextW,ReplaceDialog1->ReplaceTextW,flags); } else { FoundAt=RichEdit1->FindTextW(ReplaceDialog1->FindTextW, 0, RichEdit1->Text.Length(),mySearchTypes); if(FoundAt!=-1) { RichEdit1->SetFocus(); RichEdit1->SelStart=FoundAt; RichEdit1->SelLength=ReplaceDialog1->FindTextW.Length(); RichEdit1->SelText=ReplaceDialog1->ReplaceTextW; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::SpeedButton1Click(TObject *Sender) { if( RichEdit1->SelAttributes->Style.Contains(fsBold)) { RichEdit1->SelAttributes->Style=RichEdit1->SelAttributes->Style >> fsBold; RichEdit1->SelText=RichEdit1->SelText; } else { RichEdit1->SelAttributes->Style=RichEdit1->SelAttributes->Style << fsBold; RichEdit1->SelText=RichEdit1->SelText; } } //--------------------------------------------------------------------------- void __fastcall TForm1::SpeedButton2Click(TObject *Sender) { if( RichEdit1->SelAttributes->Style.Contains(fsItalic)) { RichEdit1->SelAttributes->Style=RichEdit1->SelAttributes->Style >> fsItalic; RichEdit1->SelText=RichEdit1->SelText; } else { RichEdit1->SelAttributes->Style=RichEdit1->SelAttributes->Style << fsItalic; RichEdit1->SelText=RichEdit1->SelText; } } //--------------------------------------------------------------------------- void __fastcall TForm1::SpeedButton3Click(TObject *Sender) { if( RichEdit1->SelAttributes->Style.Contains(fsUnderline)) { RichEdit1->SelAttributes->Style=RichEdit1->SelAttributes->Style >> fsUnderline; RichEdit1->SelText=RichEdit1->SelText; } else { RichEdit1->SelAttributes->Style=RichEdit1->SelAttributes->Style << fsUnderline; RichEdit1->SelText=RichEdit1->SelText; } } //--------------------------------------------------------------------------- void __fastcall TForm1::SpeedButton4Click(TObject *Sender) { RichEdit1->SelAttributes->Style = TFontStyles(); RichEdit1->SelText=RichEdit1->SelText; } //--------------------------------------------------------------------------- void __fastcall TForm1::SpeedButton5Click(TObject *Sender) { FontDialog1->Execute(); RichEdit1->Font=FontDialog1->Font; RichEdit1->SelText=RichEdit1->SelText; } //--------------------------------------------------------------------------- void RichEditToCanvas(TRichEdit* RichEdit, TCanvas *Canvas) { int y=500; int ZA=10; int x=500; AnsiString zeile; for(int i=0; i<Form1->RichEdit1->Lines->Count;i++) { zeile=Form1->RichEdit1->Lines->Strings[i]; Canvas->TextOutW(x,y,zeile); y=y+ZA+Canvas->TextHeight(zeile); } } void __fastcall TForm1::Drucken1Click(TObject *Sender) { if(PrintDialog1->Execute()) { Printer()->BeginDoc(); RichEditToCanvas(RichEdit1, Printer()->Canvas); Printer()->EndDoc(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Bildladen1Click(TObject *Sender) { OpenPictureDialog1->Execute(); Form1->Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); } //---------------------------------------------------------------------------