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

📄 mainform.cpp

📁 C++ BUILDER精彩编程实例集锦(源码)2 第三部分 文件操作 第四部分 图像处理
💻 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 + -