置換機能の実装 置換ダイアログを表示して置換動作を行います。
TMemoとしてNowEditを配置し、テキスト検索をするソースです。
void __fastcall TMainForm::ReplaceDialogReplace(TObject *Sender)
{
TSearchTypes SearchTypes;
int SearchStart = NowEdit->SelStart+NowEdit->SelLength;
bool ReplaceAllFlag;
bool ReplaceEndFlag = false;
unsigned int SearchResult;
if(ReplaceDialog->Options.Contains(frWholeWord)){
SearchTypes << stWholeWord;
}
if(ReplaceDialog->Options.Contains(frMatchCase)){
SearchTypes << stMatchCase;
}
if(ReplaceDialog->Options.Contains(frReplaceAll)){
ReplaceAllFlag = true;
}
if(ReplaceAllFlag == true){
SearchStart = 0;
while(ReplaceEndFlag ==false){
SearchResult = NowEdit->FindText(ReplaceDialog->FindText,SearchStart,NowEdit->Text.Length(),SearchTypes);
if(SearchResult == -1){
ShowMessage(" 置換終了 ");
ReplaceEndFlag = true;
}
else{
NowEdit->SelStart = SearchResult;
NowEdit->SelLength = ReplaceDialog->FindText.Length();
NowEdit->SelText = ReplaceDialog->ReplaceText;
SearchStart = NowEdit->SelStart+NowEdit->SelLength;
}
}
}
else{
while(ReplaceEndFlag == false){
SearchResult = NowEdit->FindText(ReplaceDialog->FindText,SearchStart,NowEdit->Text.Length(),SearchTypes);
if(SearchResult == -1){
ShowMessage("見つかりませんでした");
ReplaceEndFlag = true;
}
else{
NowEdit->SelStart = SearchResult;
NowEdit->SelLength = ReplaceDialog->FindText.Length();
switch(MessageBox(Handle,"置換しますか?","確認",MB_YESNOCANCEL)){
case IDYES:
NowEdit->SelText = ReplaceDialog->ReplaceText;
SearchStart = NowEdit->SelStart+NowEdit->SelLength;
break;
case IDNO:
SearchStart = NowEdit->SelStart+NowEdit->SelLength;
break;
case IDCANCEL:
return;
}
}
}
}
}
目次に戻る
| Copyright(c) 2008 WoodenSoldier Software |
|