⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainedit.~cpp

📁 用C++ builer 实现的关于文件操作经典实例 里面有所有工程需要的源代码
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "MainEdit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainEditForm *MainEditForm;
//---------------------------------------------------------------------------
__fastcall TMainEditForm::TMainEditForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::NewButtonClick(TObject *Sender)
{
        if(RichEdit1->Modified == true)
             SaveButtonClick(Sender);
        RichEdit1->Lines->Clear();
        Caption = ExtractFileName("新建文件");
        isNamed=false;
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::OpenButtonClick(TObject *Sender)
{
     if (OpenDialog->Execute())
     {
        cFileName = OpenDialog->FileName;
        Caption = ExtractFileName(cFileName);
        RichEdit1->Lines->LoadFromFile(cFileName);
        RichEdit1->SelStart = 0;
        RichEdit1->Modified = false;
        isNamed=true;
        }

}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::SaveAs1Click(TObject *Sender)
{
        SaveDialog->FileName = cFileName;
        if (SaveDialog->Execute() ){
                cFileName= SaveDialog->FileName;
                Caption = ExtractFileName(cFileName);
                SaveButtonClick(Sender);
                isNamed=true;
        }
}
//---------------------------------------------------------------------------


void __fastcall TMainEditForm::SaveButtonClick(TObject *Sender)
{
    if(isNamed){
        RichEdit1->Lines->SaveToFile(cFileName);
        RichEdit1->Modified = false;
    }
    else{
        SaveAs1Click(Sender);
    }
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::PrintButtonClick(TObject *Sender)
{
     if ( PrintDialog->Execute() )
     RichEdit1->Print(cFileName);        
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::UndoButtonClick(TObject *Sender)
{
     RichEdit1->Undo();
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::CutButtonClick(TObject *Sender)
{
        RichEdit1->CutToClipboard();
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::CopyButtonClick(TObject *Sender)
{
        RichEdit1->CopyToClipboard();
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::PasteButtonClick(TObject *Sender)
{
        RichEdit1->PasteFromClipboard();

}
//---------------------------------------------------------------------------


void __fastcall TMainEditForm::Delete1Click(TObject *Sender)
{
        RichEdit1->ClearSelection();
}
//---------------------------------------------------------------------------
void __fastcall TMainEditForm::SelectAll1Click(TObject *Sender)
{
        RichEdit1->SelectAll();          
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::Find1Click(TObject *Sender)
{
     FindDialog1->Position =
     Point(RichEdit1->Left + RichEdit1->Width/2,
     RichEdit1->Top+RichEdit1->Height/2);
     FindDialog1->Execute();        
}
//---------------------------------------------------------------------------
void __fastcall TMainEditForm::FindDialog1Find(TObject *Sender)
{
     TFindDialog *dlg=(TFindDialog *)Sender;
     int FoundAt, StartPos, ToEnd;
     if (RichEdit1->SelLength!=0)
          StartPos = RichEdit1->SelStart
          + RichEdit1->SelLength;
     else
          StartPos = RichEdit1->SelStart;
     ToEnd = RichEdit1->Text.Length() - StartPos;
     FoundAt = RichEdit1->FindText(dlg->FindText,
     StartPos, ToEnd, TSearchTypes()<< stMatchCase);
     if (FoundAt != -1)
     {
          RichEdit1->SetFocus();
          RichEdit1->SelStart = FoundAt;
          RichEdit1->SelLength = dlg->FindText.Length();
     }
     else MessageBox(Handle,"没有找到符合条件的字符串!",
          "查找",MB_OK|MB_ICONINFORMATION);
     dlg->CloseDialog();
}
void __fastcall TMainEditForm::FindNextClick(TObject *Sender)
{
     FindDialog1Find(FindDialog1);
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::Replace1Click(TObject *Sender)
{
     ReplaceDialog1->Position =
     Point(RichEdit1->Left + RichEdit1->Width/2,
     RichEdit1->Top+RichEdit1->Height/2);
     ReplaceDialog1->Execute();
}
//---------------------------------------------------------------------------


void __fastcall TMainEditForm::FontNameChange(TObject *Sender)
{
    RichEdit1->SelAttributes->Name = FontName->Items->Strings[FontName->ItemIndex];
}
//---------------------------------------------------------------------------


void __fastcall TMainEditForm::ShowPos()
{
          int line =SendMessage(RichEdit1->Handle,
               EM_EXLINEFROMCHAR,RichEdit1->SelStart,0);
          int lineindex=SendMessage(RichEdit1->Handle,
               EM_LINEINDEX,line,0);
          StatusBar->Panels->Items[1]->Text="行 "+IntToStr(line+1)
          +", 列 "+IntToStr(RichEdit1->SelStart-lineindex+1);
}
//---------------------------------------------------------------------------
void __fastcall TMainEditForm::BoldButtonClick(TObject *Sender)
{
     if ( BoldButton->Down )
          RichEdit1->SelAttributes->Style =
          RichEdit1->SelAttributes->Style << fsBold;
     else
          RichEdit1->SelAttributes->Style =
          RichEdit1->SelAttributes->Style >> fsBold;
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::ItalicButtonClick(TObject *Sender)
{
     if ( ItalicButton->Down )
          RichEdit1->SelAttributes->Style
          = RichEdit1->SelAttributes->Style << fsItalic;
     else
          RichEdit1->SelAttributes->Style
          = RichEdit1->SelAttributes->Style >> fsItalic;
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::UnderlineButtonClick(TObject *Sender)
{
    if ( UnderlineButton->Down )
          RichEdit1->SelAttributes->Style
          = RichEdit1->SelAttributes->Style << fsUnderline;
     else
          RichEdit1->SelAttributes->Style
          = RichEdit1->SelAttributes->Style >> fsUnderline;
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::BulletsButtonClick(TObject *Sender)
{
      RichEdit1->Paragraph->Numbering = (TNumberingStyle)BulletsButton->Down;
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::LeftButtonClick(TObject *Sender)
{
     TControl *AliBtn = (TControl*)(Sender);
     RichEdit1->Paragraph->Alignment = (TAlignment)AliBtn->Tag;
}
//---------------------------------------------------------------------------



void __fastcall TMainEditForm::FontSizeChange(TObject *Sender)
{
     int fontsize = StrToInt(FontSize->Text);
     if (fontsize < 1){
          ShowMessage("输入整数应在1和1638之间。");
          FontSize->Text = 1;
     }
     else if (fontsize > 1638){
          ShowMessage("输入整数应在1和1638之间。");
          FontSize->Text = 1638;
     }
          RichEdit1->SelAttributes->Size = StrToInt(FontSize->Text);

}
//---------------------------------------------------------------------------


void __fastcall TMainEditForm::RichEdit1Change(TObject *Sender)
{
     BoldButton->Down = RichEdit1->SelAttributes->Style.Contains(fsBold);
     ItalicButton->Down = RichEdit1->SelAttributes->Style.Contains(fsItalic);
     UnderlineButton->Down = RichEdit1->SelAttributes->Style.Contains(fsUnderline);

     FontSize->Text = AnsiString(RichEdit1->SelAttributes->Size);
     FontName->Text = RichEdit1->SelAttributes->Name;

     switch((int)RichEdit1->Paragraph->Alignment){
          case 0: LeftButton->Down   = true; break;
          case 1: RightButton->Down  = true; break;
          case 2: CenterButton->Down = true; break;
     }

     ShowPos();        
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::FormCreate(TObject *Sender)
{
     LeftButton->Tag=0;
     RightButton->Tag=1;
     CenterButton->Tag=2;
     FontName->Items = Screen->Fonts;//获得字体选择项

     HistoryList=new TStringList();
     AnsiString hFileName;
     hFileName=ExtractFilePath(Application->ExeName) +HistoryListName;
     if (FileExists(hFileName)){
          HistoryList->LoadFromFile(hFileName);
          BuildHistory(File);
     }
}
//---------------------------------------------------------------------------
void __fastcall TMainEditForm::FormClose(TObject *Sender,
      TCloseAction &Action)
{
     if(isNamed)
     {
         HistoryList->Add(cFileName);
         BuildHistory(File);
     }
     Action=caFree;
     HistoryList->SaveToFile(ExtractFilePath(Application->ExeName)+HistoryListName);
     delete HistoryList;
}
//---------------------------------------------------------------------------
void TMainEditForm::BuildHistory(TMenuItem *FileMenu)
{
     TMenuItem *MenuItem;
     int Pos;
     if (HistoryList->Count>MaxHistoryFile)
     for (Pos = MaxHistoryFile;Pos<HistoryList->Count;Pos++)
          HistoryList->Delete(0);
     if (BottomS!=NULL){
          for (Pos=0;Pos<ShowHistoryFiles;Pos++)
               File->Delete(HistoryAddPos);
     }
     if (HistoryList->Count>0){
          for (Pos=0;Pos<HistoryList->Count;Pos++){
               MenuItem = new TMenuItem(FileMenu);
               MenuItem->Caption="&"+IntToStr(Pos+1)+" "
               +HistoryList->Strings[Pos];
               MenuItem->OnClick = HistoryItemClick;
                    FileMenu->Insert(HistoryAddPos+Pos,MenuItem);
               }
          ShowHistoryFiles=HistoryList->Count;
          if (BottomS==NULL){
               BottomS =  new TMenuItem(FileMenu);
               BottomS->Caption="-";
               FileMenu->Insert(HistoryAddPos+HistoryList->Count,BottomS);
          }
     }
}

//---------------------------------------------------------------------------
void __fastcall TMainEditForm::HistoryItemClick(TObject *Sender)
{
     int Pos;
     AnsiString ItemName;
     TMenuItem *ParentItem;
     ParentItem=(TMenuItem *)((TMenuItem *)Sender)->Parent;
     Pos=ParentItem->IndexOf((TMenuItem *)Sender)-
          ParentItem->IndexOf(TopS)-1;
     ItemName=HistoryList->Strings[Pos];
     Caption = ItemName;
     isNamed = false;
     if (FileExists (ItemName))
     {
     cFileName = ItemName;
     Caption = ExtractFileName(ItemName);
     RichEdit1->Lines->LoadFromFile(cFileName);
     RichEdit1->SelStart = 0;
     RichEdit1->Modified = false;
     isNamed=true;
     }
}
void __fastcall TMainEditForm::FontButtonClick(TObject *Sender)
{
   if (FontDialog1->Execute())
      RichEdit1->SelAttributes->Assign(FontDialog1->Font);
}
//---------------------------------------------------------------------------


void __fastcall TMainEditForm::ColorButtonClick(TObject *Sender)
{
   if (ColorDialog->Execute())
      RichEdit1->SelAttributes->Color= ColorDialog->Color;
}
//---------------------------------------------------------------------------



void __fastcall TMainEditForm::Exit1Click(TObject *Sender)
{
        Close();        
}
//---------------------------------------------------------------------------
void __fastcall TMainEditForm::ReplaceDialog1Replace(TObject *Sender)
{
     if (ReplaceDialog1->Options.Contains(frReplace)){
          int SelPos = RichEdit1->Lines->
          Text.Pos(ReplaceDialog1->FindText);
          if (SelPos > 0)
          {
               RichEdit1->SelStart = SelPos - 1;
               RichEdit1->SelLength = ReplaceDialog1->FindText.Length();
               // Replace selected text with ReplaceText
               RichEdit1->SelText = ReplaceDialog1->ReplaceText;
          }
          else MessageBox(Handle,"替换工作已完成!",
               "替换",MB_OK|MB_ICONINFORMATION);
     }
     else if (ReplaceDialog1->Options.Contains(frReplaceAll)){
               int FoundAt, StartPos, ToEnd;
               do{
               if (RichEdit1->SelLength!=0)
                    StartPos = RichEdit1->SelStart+ RichEdit1->SelLength;
               else
                    StartPos = RichEdit1->SelStart;
               ToEnd = RichEdit1->Text.Length() - StartPos;
               FoundAt = RichEdit1->FindText(ReplaceDialog1->FindText,
               StartPos, ToEnd, TSearchTypes()<< stMatchCase);
               if (FoundAt!=-1){
                    RichEdit1->SelStart = FoundAt;
                    RichEdit1->SelLength = ReplaceDialog1->FindText.Length();
                    RichEdit1->SelText = ReplaceDialog1->ReplaceText;
               }
               }while (FoundAt!=-1);
               MessageBox(Handle,"替换工作已完成!","替换",MB_OK|MB_ICONINFORMATION);
          }        
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::Tool1Click(TObject *Sender)
{

     if(Tool1->Checked==true)
     {
         ToolBar1->Visible=false;
         Tool1->Checked=false;
     }
     else
     {
         ToolBar1->Visible=true;
         Tool1->Checked=true;
     }
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::Tool2Click(TObject *Sender)
{

     if(Tool2->Checked==true)
     {
         ToolBar2->Visible=false;
         Tool2->Checked=false;
     }
     else
     {
         ToolBar2->Visible=true;
         Tool2->Checked=true;
     }
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::Status1Click(TObject *Sender)
{

     if(Status1->Checked==true)
     {
         StatusBar->Visible=false;
         Status1->Checked=false;
     }
     else
     {
         StatusBar->Visible=true;
         Status1->Checked=true;
     }
}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::RichEdit1MouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
          StatusBar->Panels->Items[0]->Text="鼠标位置("+IntToStr(X)
          +","+IntToStr(Y)+")";

}
//---------------------------------------------------------------------------

void __fastcall TMainEditForm::PrintSet1Click(TObject *Sender)
{
        PrinterSetupDialog1->Execute();
}
//---------------------------------------------------------------------------



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -