TMemo内のテキストを検索する関数はあるのか?

解決


Nancy  2004-06-12 07:27:41  No: 9397

TMemoコンポーネントに読み込んだテキスト内を検索して
マッチすればそれを選択状態にしたいのですが、
ヘルプでメソッドを調べたのですが、それらしいものが見つかりません。

そもそもそのような関数はないのでしょうか?

とすれば、自分で作ることになるのでしょうか?


jok  2004-06-12 09:56:37  No: 9398

AnsiPos() を使えば簡単につくれます。こんな感じです。

procedure FindAndSel(const Str:string; Memo:TMemo);
var
  iPos:integer;
begin
  iPos := AnsiPos(Str,Memo.Lines.Text);
  if iPos <> 0 then begin
    Memo.SelStart := iPos-1;
    Memo.SelLength := Length(Str);
  end else
    ShowMessage('見つかりません');
  Memo.SetFocus;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FindAndSel(Edit1.Text,Memo1);
end;


にしの  2004-06-12 09:59:36  No: 9399

TFindDialogの例をヘルプで調べてみてください。
Delphi7では、TRichEditの例が出ています。TMemoでもSelStart, SelLengthなどは同じです。


Nancy  2004-06-15 01:42:51  No: 9400

にしの様、jok様、解答ありがとうございます。

TFindDialogコンポーネントがあるのを見落としていました。
ヘルプにサンプルコードがもろにありました。
さっそくちょっと修正して作りました。

TMemoを使わずTRichEditに変えて見事に「検索して選択」することができました。

また、jokさまの書かれたコードも機能を拡張したりするときに
参考にさせていただきます。

どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加