//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include<math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
void FileNameFiltrate(String cFileName);
TForm1 *Form1;
bool isNamed;
bool CanClose=false;
bool BoldFlag=false;
bool ItalicFlag=false;
bool UnderlineFlag=false;
String cFileName;
SYSTEMTIME SystemTime;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
String PathName="您没有保存或打开新文件,故不存在路径";
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Form1->RichEdit1->Clear(); //在文本编译器启动时将RichEdit1内的文字清除。
Form1->OpenDialog1->DefaultExt=" txt";
Form1->SaveDialog1->DefaultExt=" txt";
//打开和保存文件时默认扩展名为txt。
}
//---------------------------------------------------------------------------
//文件名处理函数
void FileNameFiltrate(String cFileName)
{
int n=ExtractFileName(cFileName).Length();
int t=ExtractFileExt(cFileName).Length();
String Caption=ExtractFileName(cFileName).Delete(n+1-t,t)+" - 记事本";
Application->Title=Caption ;
}
//---------------------------------------------------------------------------
//新建
void __fastcall TForm1::NewClick(TObject *Sender)
{
if(RichEdit1->Modified)
SaveClick(Sender);
cFileName="文档";
SaveDialog1->FileName=cFileName;
Caption=ExtractFileName(cFileName+" - 记事本");
Application->Title=Caption;
RichEdit1->Clear();
RichEdit1->Modified=false;
isNamed=false ;
//用以下代码把文档子体格式修改为默认格式。
Form1->RichEdit1->Font->Charset=GB2312_CHARSET;
Form1->RichEdit1->Font->Color=clWindowText;
Form1->RichEdit1->Font->Height=-15;
Form1->RichEdit1->Font->Name="新宋体";
Form1->RichEdit1->Font->Pitch=fpDefault;
Form1->RichEdit1->Font->Size=11;
PathName="您还没有保存该文档,故不存在路径";
RichEdit1->Modified=false;//若新建的文档的内容没有变化时不弹出保存对话框
}
//---------------------------------------------------------------------------
//打开
void __fastcall TForm1::OpenClick(TObject *Sender)
{
if(RichEdit1->Modified)
SaveClick(Sender);
if(OpenDialog1->Execute())
{
cFileName=OpenDialog1->FileName;
//文件名处理函数
FileNameFiltrate(cFileName) ;
RichEdit1->Clear();
RichEdit1->Lines->LoadFromFile(cFileName) ;
RichEdit1->SelStart=0 ;
RichEdit1->Modified=false ;
isNamed=true;
}
PathName=Form1->OpenDialog1->FileName;
//得到打开的文件的路径并存到PathName里。
}
//---------------------------------------------------------------------------
//保存
void __fastcall TForm1::SaveClick(TObject *Sender)
{
if(isNamed)
{
RichEdit1->Lines->SaveToFile(cFileName);
RichEdit1->Modified=false;
}
else
SaveAsClick(Sender);
PathName=Form1->OpenDialog1->FileName;
//得到保存的文件的路径并存到PathName里。
}
//---------------------------------------------------------------------------
//另存为
void __fastcall TForm1::SaveAsClick(TObject *Sender)
{
SaveDialog1->FileName=cFileName;
if(SaveDialog1->Execute())
{
cFileName=SaveDialog1->FileName;
//文件名处理函数
FileNameFiltrate(cFileName);
isNamed=true;
SaveClick(Sender);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ExitClick(TObject *Sender)
{
FormCloseQuery(Sender,CanClose);
}
//---------------------------------------------------------------------------
//关闭窗口处理
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
String file_name=Caption;
int ExitCode;
if(RichEdit1->Modified)
{
ExitCode=Application->MessageBox(("将改动保存到 "+file_name+"?").c_str(),
"记事本", MB_YESNOCANCEL);
switch(ExitCode)
{
case IDCANCEL: CanClose=false; break; // 不关闭程序
case IDYES: SaveClick(Sender); //保存文件并退出
case IDNO: CanClose=true; break; // 不保存文件退出
}
}
}
//---------------------------------------------------------------------------
//撤销
void __fastcall TForm1::undoClick(TObject *Sender)
{
Form1->RichEdit1->Undo();
}
//---------------------------------------------------------------------------
//剪切
void __fastcall TForm1::CutClick(TObject *Sender)
{
Form1->RichEdit1->CutToClipboard();
//若选中字符,则将字符剪切到粘贴板。
}
//---------------------------------------------------------------------------
//复制
void __fastcall TForm1::CopyClick(TObject *Sender)
{
Form1->RichEdit1->CopyToClipboard();
//将选中的内容复制到剪切板里。
}
//---------------------------------------------------------------------------
//粘贴
void __fastcall TForm1::PasteClick(TObject *Sender)
{
Form1->RichEdit1->PasteFromClipboard();
//将剪切板中的内容粘贴到光标位置。
}
//---------------------------------------------------------------------------
//删除
void __fastcall TForm1::DeleteClick(TObject *Sender)
{
Form1->RichEdit1->ClearSelection();
//若选中字符,则清除选中的字符。
}
//---------------------------------------------------------------------------
//全选
void __fastcall TForm1::SelectAllClick(TObject *Sender)
{
Form1->RichEdit1->SelectAll();
//调用RichEdit1的SelectAll()方法选中所有的字符。
}
//---------------------------------------------------------------------------
//查找
void __fastcall TForm1::findClick(TObject *Sender)
{
Form1->FindDialog1->Execute();
}
//---------------------------------------------------------------------------
//查找
int FoundAt,StartPos,ToEnd;
void __fastcall TForm1::FindDialog1Find(TObject *Sender)
{
if(RichEdit1->SelLength)
StartPos=RichEdit1->SelStart+RichEdit1->SelLength;
else
StartPos=0;
ToEnd=RichEdit1->Text.Length()-StartPos;
//结束位置为文件末尾。
FoundAt=RichEdit1->FindTextA(FindDialog1->FindTextA,StartPos,ToEnd,
TSearchTypes()<<stMatchCase);
if(FoundAt!=-1)
{
RichEdit1->SetFocus();
RichEdit1->SelStart=FoundAt;
RichEdit1->SelLength=FindDialog1->FindTextA.Length();
//如果找到,选中找到的字符。
}
else
Application->MessageBox("下面已经没有您要找的字符","查找完毕",MB_OK);
}
//---------------------------------------------------------------------------
//查找下一个
void __fastcall TForm1::findnextClick(TObject *Sender)
{
FindDialog1Find(FindDialog1);
}
//---------------------------------------------------------------------------
//替换
void __fastcall TForm1::replaceClick(TObject *Sender)
{
Form1->ReplaceDialog1->Execute();
}
//---------------------------------------------------------------------------
//替换
void __fastcall TForm1::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();
RichEdit1->SelText=ReplaceDialog1->ReplaceText;
}
else
MessageBox(ReplaceDialog1->Handle,"没有输入需要替换的字符","替换",MB_OK);
}
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,