RichEditで検索する
RichEditコンポーネントの検索は FindDialogコンポーネントと FindTextメソッドを使用しますが、初めてだと解りにくいと思います。順を追って説明していきます。
(フォームにはRichEditとFindDialog、TMainMenuを配置しておいてください。この例ではメニューアイテム「Find1」をクリックすると検索をするように記述します。)
| 1)[検索...]メニューをクリックした処理。 |
procedure TForm1.Find1Click(Sender:TObject); begin FindDialog1.Execute; //検索ダイアログを表示します end; |
| 2)検索ダイアログを閉じた直後の処理 |
procedure TForm.FindDialog1Find(Sender:TObject);
var
intPos : integer; //発見した位置保存用
begin
intPos := RichEdit1.FindText(FindDialog1.FindText,RichEdit1.SelStart + 1,Length(RichEdit1.Text),[]);
if intPos > 0 then begin
//文字列発見
RichEdit1.SetFocus;
RichEdit1.SelStart := intPos;
RichEdit1.SelLength := Length(FindDialog1.FindText);
FindDialog1.Close;
end else begin
//文字列無し
MessageDlg('検索文字列' + FindDialog1.FindText + 'は見つかりませんでした。',mtError,[mbOk],0);
end;
|
※この内容では「大文字・小文字を区別する」や「単語単位で検索」をしていません。