📄 mainform.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MainForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
this->Memo1->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
this->OpenDialog1->Options.Clear();
this->OpenDialog1->Filter= "Text files (*.txt)|*.TXT|C++ files (*.cpp)|*.cpp";
this->OpenDialog1->Title="文件打开对话框";
this->OpenDialog1->InitialDir="C:\\";
if(this->OpenDialog1->Execute())
{
this->Memo1->Lines->LoadFromFile(this->OpenDialog1->FileName) ;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn4Click(TObject *Sender)
{
this->Close();
}
//---------------------------------------------------------------------------
bool TForm1::Find(char * szFind, BOOL fDown, BOOL fMatchCase, BOOL fWholeWord, BOOL fNoScroll)
{
char * szText;
UINT ichStart;
UINT ichEnd;
UINT cch;
int dch;
int dchComp;
char * szTerm;
char * sz;
UINT cchFind;
BOOL fFound = FALSE;
int dchOnFind;
szText=Memo1->Lines->GetText();
cchFind=strlen(szFind);
GETSEL(ichStart,ichEnd);
cch=strlen(szText);
if(ichEnd-ichStart==cchFind&&!strnicmp(szText+ichStart,szFind,cchFind))
dchOnFind=1;
else
dchOnFind=0;
if(fDown)
{
dch=1;
dchComp=0;
sz=szText+ichStart+dchOnFind;
szTerm=szText+cch;
}
else
{
dch=-1;
dchComp=1;
sz=szText+ichStart-dchOnFind;
szTerm=szText;
}
for(;sz+dchComp!=szTerm; sz+=dch)
{
if(tolower(*sz)==tolower(*szFind)&&(fMatchCase?!strncmp(sz,szFind,cchFind):!strnicmp(sz,szFind,cchFind))
&&(!fWholeWord||FWholeWord(sz,szText,szTerm,cchFind)))
{
SendMessage(Memo1->Handle,EM_SETSEL,sz-szText,sz-szText+cchFind);
if (!fNoScroll)
SendMessage(Memo1->Handle,EM_SCROLLCARET,0,0L);
fFound = TRUE;
break;
}
}
if(!fNoScroll&&!fFound)
MessageBox(NULL, szFind, "字符串没有找到",MB_OK);
return fFound;
}
void TForm1::Replace(char * szReplace)
{
SendMessage(Memo1->Handle,EM_REPLACESEL,0,(LPARAM)(LPSTR)szReplace);
}
void TForm1::ReplaceAll(char * szFind, char * szReplace, bool fMatchCase, bool fWholeWord)
{
UINT ichStart;
UINT ichEnd;
GETSEL(ichStart,ichEnd);
SETSEL(0,0);
while(Find(szFind, TRUE, fMatchCase, fWholeWord,TRUE))
{
Replace (szReplace);
}
SETSEL(ichStart, ichEnd);
}
void TForm1::FindReplace(char * szFind, char * szReplace, FRT frt, BOOL fDown, BOOL fMatchCase, BOOL fWholeWord)
{
switch (frt)
{
case frtFind:
Find(szFind, fDown, fMatchCase, fWholeWord,FALSE);
break;
case frtReplace:
Find(szFind, fDown, fMatchCase, fWholeWord,FALSE);
Replace (szReplace);
break;
case frtRepAll:
ReplaceAll(szFind, szReplace, fMatchCase, fWholeWord);
}
}
void __fastcall TForm1::OnFind(TObject *Sender)
{
SetFocus();
FindReplace(FindDialog1->FindText.c_str(), "", frtFind,
FindDialog1->Options. Contains(frDown),
FindDialog1->Options.Contains(frMatchCase),
FindDialog1->Options.Contains(frWholeWord));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OnReplaceFind(TObject *Sender)
{
SetFocus();
if(ReplaceDialog1->Options.Contains(frFindNext))
FindReplace(ReplaceDialog1->FindText.c_str(),"", frtFind,
ReplaceDialog1->Options.Contains(frDown),
ReplaceDialog1->Options.Contains(frMatchCase),
ReplaceDialog1->Options.Contains(frWholeWord));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Replace(TObject *Sender)
{
SetFocus ();
if(ReplaceDialog1->Options. Contains (frReplace))
FindReplace(ReplaceDialog1->FindText.c_str(),
ReplaceDialog1->ReplaceText. c_str(),frtReplace,
ReplaceDialog1->Options. Contains(frDown),
ReplaceDialog1->Options. Contains(frMatchCase),
ReplaceDialog1->Options. Contains(frWholeWord));
else if(ReplaceDialog1->Options. Contains (frReplaceAll))//全部替换
FindReplace(ReplaceDialog1->FindText.c_str(),
ReplaceDialog1->ReplaceText.c_str(), frtRepAll,
ReplaceDialog1->Options. Contains(frDown),
ReplaceDialog1->Options. Contains(frMatchCase),
ReplaceDialog1->Options. Contains(frWholeWord));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
this->FindDialog1->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
this->ReplaceDialog1->Execute();
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -