|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"上へ検索 RichEdit"
RichEditで上へ検索する例を考えてみました。
とりあえず動きます。(^^;
流れは
現在の位置から、適当なところまで遡った範囲でFindTextを行う。
もし、ヒットしたら 上記範囲で、一番最後のヒットする位置を探す、、
あまり検証していないので、変なところあるかもしれません。
どうかご指導下さい。 m(_ _)m
FormにRichEditとボタンとEditひとつおいてRichEditにはあらかじめファイル
を読み込んでおいて下さい。Editに入力した文字列をボタンを押す毎に上方検索
します
procedure TForm1.Button1Click(Sender: TObject);
const block=256;
var
StartPos,endPos,foundAt,lastFoundAt:integer;
keyw:string;
found:boolean;
begin
keyW:=Edit1.text;
StartPos:=RichEdit1.SelStart;
while StartPos>0 do
begin
//今回検索するブロックの定義
endPos:=StartPos+length(keyW)-2;
StartPos:=StartPos-block;
//初期化
found:=false;
if StartPos<0 then StartPos:=0;
foundAt:=1;
//そのブロックを検索
while foundAt<>-1 do
begin
foundAt:=RichEdit1.FindText(keyw,
StartPos, endPos-StartPos, [stMatchCase]);
//ヒットしたらブロック最後のヒットを探すためstartPosをずらす
if foundAt<>-1 then
begin
StartPos:=foundAt+Length(keyw);
found:=True;
lastFoundAt:=foundAt;
end;
end;
if found then
begin
RichEdit1.setFocus;
RichEdit1.selstart:=lastFoundAt;
//キャレットが視界にはいるようスクロール
sendmessage(RichEdit1.handle,EM_Scrollcaret,0,0);
Exit;
end;
end;
end;
98/06/04(木) 01:57 凛(MXB01744)
Original document by 凛 氏 ID:(MXB01744)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|