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

📄 mdiunit.cpp

📁 一个文本编辑器
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "MdiUnit.h"
#include "EditUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMdiForm *MdiForm;
//---------------------------------------------------------------------------
__fastcall TMdiForm::TMdiForm(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMdiForm::FormClose(TObject *Sender, TCloseAction &Action)
{
  if ( this->RichEdit1->Modified || newFile )
  {
    String Message = "文件"+this->Caption+"的文字已发生改变。\r\n是否需要保存?";
    int Chose = MessageDlg(Message, mtWarning, TMsgDlgButtons()<<mbOK<<mbNo<<mbCancel	, 0);
    if( Chose == mrOk )    
    {
        MainForm->SaveNClick(NULL) ;
      Action = caFree ;
      MdiForm = NULL ;
    }
    else if( Chose == mrCancel ) 
      Action = caNone	 ;
    else
    {
      Action = caFree ;
      MdiForm = NULL ;
    }
  }
  else
  { 
      Action = caFree ;
      MdiForm = NULL ;
  } 
}
//---------------------------------------------------------------------------
void __fastcall TMdiForm::FormShow(TObject *Sender)
{
  RichEdit1->WordWrap = NewLineN->Checked ; 
  MainForm->FontList->Text = RichEdit1->SelAttributes->Name ;
  MainForm->FontSize->Value = RichEdit1->SelAttributes->Size ;
}
//---------------------------------------------------------------------------

void __fastcall TMdiForm::NewLineNClick(TObject *Sender)
{
  NewLineN->Checked = !NewLineN->Checked ;
  RichEdit1->WordWrap = NewLineN->Checked ;
}
//---------------------------------------------------------------------------
void __fastcall TMdiForm::FontNClick(TObject *Sender)
{  //字体
  FontDialog1->Font = this->RichEdit1->Font ;
  if( FontDialog1->Execute() )
    RichEdit1->SelAttributes->Assign(FontDialog1->Font) ;
}
//---------------------------------------------------------------------------
void __fastcall TMdiForm::ColorNClick(TObject *Sender)
{   //颜色
  if( ColorDialog1->Execute() )
    RichEdit1->SelAttributes->Color = ColorDialog1->Color ;
}
//---------------------------------------------------------------------------
void __fastcall TMdiForm::Find1Click(TObject *Sender)
{  //查找
  FindDialog1->FindText = RichEdit1->SelText ;
  FindDialog1->Execute() ;
}
//---------------------------------------------------------------------------
void __fastcall TMdiForm::FindDialog1Find(TObject *Sender)
{    //查找下一个
  int StartPos = 0 , ToEnd , FindAt = -1;
  //如果当前有被选定文本
  //那么在当前被选择文本的最后一个字符处开始查找
  //否则,在文件开头处开始查找
  if( RichEdit1->SelLength )
    StartPos = RichEdit1->SelStart + RichEdit1->SelLength ;
  ToEnd = RichEdit1->Lines->Text.Length() - StartPos ;
  FindAt = RichEdit1->FindText(FindDialog1->FindText, StartPos, ToEnd,TSearchTypes()<<stMatchCase);
  if( FindAt != -1 )
  {
    //找到匹配字符,将找到的字符设为被选中状态
    MainForm->SetFocus() ;
    RichEdit1->SelStart = FindAt ;
    RichEdit1->SelLength = FindDialog1->FindText.Length();
  }  else
  {
    MessageDlg("没有找到匹配的字符串!",mtWarning, TMsgDlgButtons()<<mbOK,0);
    FindDialog1->CloseDialog();  //关闭查找
  }
}
//---------------------------------------------------------------------------
void __fastcall TMdiForm::ReplaceNClick(TObject *Sender)
{    //替换
  ReplaceDialog1->FindText = RichEdit1->SelText ;
  ReplaceDialog1->Execute() ;
}
//---------------------------------------------------------------------------
void __fastcall TMdiForm::ReplaceDialog1Find(TObject *Sender)
{
   //查找下一个
  int StartPos = 0 , ToEnd , FindAt = -1;
  //如果当前有被选定文本
  //那么在当前被选择文本的最后一个字符处开始查找
  //否则,在文件开头处开始查找
  if( RichEdit1->SelLength )
    StartPos = RichEdit1->SelStart + RichEdit1->SelLength ;
  ToEnd = RichEdit1->Lines->Text.Length() - StartPos ;
  FindAt = RichEdit1->FindText(ReplaceDialog1->FindText, StartPos, ToEnd,TSearchTypes()<<stMatchCase);
  if( FindAt != -1 )
  {
    //找到匹配字符,将找到的字符设为被选中状态
    MainForm->SetFocus() ;
    RichEdit1->SelStart = FindAt ;
    RichEdit1->SelLength = ReplaceDialog1->FindText.Length();
    //RichEdit1->SelText = ReplaceDialog1->ReplaceText;
  }  else
  {
    MessageDlg("没有找到匹配的字符串!",mtWarning, TMsgDlgButtons()<<mbOK,0);
    ReplaceDialog1->CloseDialog();  //关闭查找
  }  
}
//---------------------------------------------------------------------------
void __fastcall TMdiForm::ReplaceDialog1Replace(TObject *Sender)
{
  if( ReplaceDialog1->Options.Contains(frReplace) )
  {  //用户按下对话窗中的替换按钮
    if( RichEdit1->SelLength )
      RichEdit1->SelText = ReplaceDialog1->ReplaceText ;
    else
      MessageDlg("没有找到匹配的字符",mtWarning,TMsgDlgButtons()<<mbOK,0);
  }else if( ReplaceDialog1->Options.Contains(frReplaceAll) )
  { //替换所有
    int FindAt = -1,StartPos,ToEnd,FindCount = 0;
    StartPos = 0;
    if( RichEdit1->SelLength )
        StartPos = RichEdit1->SelStart ;
    do
    {
      ToEnd = RichEdit1->Lines->Text.Length()-StartPos ;
      FindAt = RichEdit1->FindText(ReplaceDialog1->FindText, StartPos, ToEnd,TSearchTypes()<<stMatchCase);
      if( FindAt != -1 )
      {
        //找到匹配字符,将找到的字符设为被选中状态
        MainForm->SetFocus() ;
        RichEdit1->SelStart = FindAt ;
        RichEdit1->SelLength = ReplaceDialog1->FindText.Length();
        RichEdit1->SelText = ReplaceDialog1->ReplaceText;
        StartPos = FindAt + ReplaceDialog1->ReplaceText.Length() ;
        ++FindCount; 
      }
    }while(FindAt != -1 );
    if( FindCount )
      MessageDlg("字符替换完毕!",mtWarning,TMsgDlgButtons()<<mbOK,0);
    else
      MessageDlg("没有找到匹配的字符",mtWarning,TMsgDlgButtons()<<mbOK,0);
  }
}
//---------------------------------------------------------------------------
void __fastcall TMdiForm::RichEdit1SelectionChange(TObject *Sender)
{
  switch ( RichEdit1->Paragraph->Alignment )
  {
    case taLeftJustify:  MainForm->LeftBt->Down = true   ; break;
    case taCenter:       MainForm->CenterBt->Down = true ; break;
    case taRightJustify: MainForm->RightBt->Down = true  ; break;
  }
  MainForm->FontList->Text = RichEdit1->SelAttributes->Name ;
  MainForm->FontSize->Value = RichEdit1->SelAttributes->Size ;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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