ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


Tips >   

FindDialog で Memo 内の文字列を検索する 

更新 : 2009/12/06

 



解説:
エディタなどを作成すると、検索する機能が必要になります。
RichEdit コンポーネントを使えば、FindText メソッドがあるので、検索は容易に行えます。
Memo コンポーネントを使う場合は、事情が異なり、少し厄介です。特に上への検索は、ひと工夫しなければなりません。

今回は、下への単純な検索を実現してみます。

使用例:
Memo コンポーネントに入力された文字列から最初の検索文字列を探します。探し当てた、検索文字列は強調表示します。

コンポーネントは、 Button, Memo, FindDialog を適当に置いてください。

Button1 の OnClick イベントハンドラで、FindDialog1 を表示しています。
FindDialog1 の OnFind では、FindDialog の FindText に指定された文字列を、カーソル位置から検索しています。
検索文字列が見つかったら、強調表示しています。

//-------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    // 検索ダイアログ表示
    FindDialog1->Execute();
}
//-------------------------------------------------------------------
void __fastcall TForm1::FindDialog1Find(TObject *Sender)
{
    // 検索文字列を探す
    int index = Memo1->Text.Pos(FindDialog1->FindText);

    // 検索文字列があれば強調文字にする
    Memo1->SetFocus();
    Memo1->SelStart = index - 1;
    Memo1->SelLength = FindDialog1->FindText.Length();
}
//-------------------------------------------------------------------



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.