8. Richeditコンポーネント上でのキャレット操作・検索
オーソドックスな文字列検索
 


procedure TForm1.Button1Click(Sender: TObject);
var
        findat : integer; //キャレットの位置
begin
     findat :=0;

        repeat
        //edit1に格納されている文字列を探す
        findat :=
        richedit1.findtext(edit1.text,findat,length(richedit1.text),[stMatchCase]);

        richedit1.setfocus ;  //focusをセット(いらないかも)
        richedit1.SelStart := FindAt;   //キャレットのスタート位置
        richedit1.SelLength := Length(edit1.text); //選択範囲
        richedit1.selattributes.style := [fsbold]  ;  //bold指定
        richedit1.selattributes.color := clred  ;     //色指定
        richedit1.perform(EM_SCROLLCARET,0,0);       
          //キャレットの移動にあわせて画面をスクロールさせる
        findat := findat +length(edit1.text) ;       //次の開始位置

      //キャレットの位置が文字数をこえるまで
        until richedit1.selstart >= length(richedit1.text);    


        richedit1.selstart :=0;      //キャレットをトップにもどす
        richedit1.perform(EM_SCROLLCARET,0,0);       //画面をスクロールさせる
end;


edit1に入れた文字列をrichedit1上で検索し、その単語があれば赤色・ボールドに変える。

戻る
竹村 匡正  takemura@sahs.med.osaka-u.ac.jp