📄 mdiunit.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 + -