RichEdit の表示について


食いーる  2005-08-25 18:01:36  No: 17264  IP: [192.*.*.*]

簡単なことかもしれませんが、やり方がわかりません。
教えてください。

環境:Delphi7.0
      WindowsXP

目的:RichEdit で表示しているテキストファイルで、
      行数を数値指定し、その行を
      RichEdit の中央に表示したい。

どうすればよいのでしょうか?

編集 削除
食いーる  2005-08-25 18:48:10  No: 17265  IP: [192.*.*.*]

書き忘れていたのですが、
カーソルは指定行の先頭にもって行きたいのです。

よろしくお願いします。

編集 削除
Fusa  2005-08-27 01:36:54  No: 17266  IP: [192.*.*.*]

画面上のRichEditで現在何行表示されているのか。

を求める方法がわからないのですが

//画面表示されている一番上のIndexを求める
function GetTopIndex: Integer;
begin        
  Result := RichEdit.Perform(EM_GETFIRSTVISIBLELINE, 0, 0);
end;

//画面最上位表示される行を指定してスクロール
procedure SetTopIndex(const Value: Integer);
var          
  LineCount: Integer;
begin
  LineCount :=  Value - GetTopIndex; //差を求めてスクロール
  RichEdit.Perform(EM_LINESCROLL,0,LineCount);
end;

これで、行数を数値指定して
その行をRichEditの一番上(もしくは数行下)に表示
はできると思います。

ご参考にどうぞ

編集 削除
anone  2005-08-27 18:55:40  No: 17267  IP: [192.*.*.*]

この質問は回答が難しいです。

> 画面上のRichEditで現在何行表示されているのか。

リッチエディットは、文字単位でフォントの大きさが変えられるから、一般には
行の高さが一定ではない。だから、「中央」に表示するのは非常に難しい。

編集 削除