📄 mainedit.~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 + -