お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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