TMemoコンポーネントに読み込んだテキスト内を検索して
マッチすればそれを選択状態にしたいのですが、
ヘルプでメソッドを調べたのですが、それらしいものが見つかりません。
そもそもそのような関数はないのでしょうか?
とすれば、自分で作ることになるのでしょうか?
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;
TFindDialogの例をヘルプで調べてみてください。
Delphi7では、TRichEditの例が出ています。TMemoでもSelStart, SelLengthなどは同じです。
にしの様、jok様、解答ありがとうございます。
TFindDialogコンポーネントがあるのを見落としていました。
ヘルプにサンプルコードがもろにありました。
さっそくちょっと修正して作りました。
TMemoを使わずTRichEditに変えて見事に「検索して選択」することができました。
また、jokさまの書かれたコードも機能を拡張したりするときに
参考にさせていただきます。
どうもありがとうございました。
ツイート | ![]() |