|
|
||||
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(); } //------------------------------------------------------------------- |