RichEditで1行全選択するには

解決


SH  2007-12-22 20:43:43  No: 29097

Windows XP, Delphi5 Proを使用しております。 
RichEditコンポーネントで、1行全選択するにはどうす 
ればいいでしょうか。実現したいのは、1行の文字列の 
改行を越えてRichEditの右端まで、背景を反転表示 
させたい、とこうことです。(Delihi のエディタが 
やっているように) 
このとき、反転表示する色も指定したいと思っております。 
よろしくお願い致します。


Ru  2007-12-25 23:18:09  No: 29098

行選択はこんな感じ?
全て選択するならSelectAllメソッドで可能です。

procedure TForm1.Button2Click(Sender: TObject);
var
  iPos: Integer;
begin

  //一行目
  iPos := Length(RichEdit1.Lines[0]);

  RichEdit1.SelStart := 0;
  RichEdit1.SelLength := iPos;

  RichEdit1.SetFocus;

end;

選択した部分の背景色を変更ならば以下が参考になりますか?
選択色の指定ではないですが・・・

http://www.swissdelphicenter.ch/en/showcode.php?id=1438

http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=069991


SH  2007-12-27 07:50:00  No: 29099

Ruさん。ご回答ありがとうございました。
1行選択は、Ruさんの示された通りのコードで出来ました。
また、色の変更も教えていただいたHPを参照して出来ました。
これらを組み合わせて任意の行の背景色の変更は出来ました。
出来れば、1行の改行を越えてRichEditの幅まで変更したいと
思っております。
例えば以下の文字列をRichEditに書き込んで(目の次は改行コード)
RichEdit1行目
RichEdit2行目

1行目を反転させた時、'RichEdit1行目'の文字列を越えてRichEditの
幅分反転させたいと思っております。
よろしくお願い致します。


Ru  2007-12-27 20:37:41  No: 29100

すいません。勘違いしていたようです。
EM_SETPARAFORMATに送信できるパラメータでも見つかりませんでした。

コンポーネントの性質上出来ない気もします。
ハイライトの制御がどの部分で行われている突き止めれば
できるかも?かなり大がかりな感じはしますが・・・

もし分かる方がいればフォローお願いします。


Mr.XRAY  URL  2007-12-28 08:50:53  No: 29101

どうしてもご自分でコードを書きたいというのであれば,Ruさんのレスの通りです.

もし,他の方が作成したコンポーネントを利用してもいい,というのであれば,
例えばSynEditというコンポーネントがあります.
これに,SelectionModeというのがあり,これをsmLineにすると,行全体を反転
表示できます.


SH  2007-12-30 03:13:37  No: 29102

Ruさん、Mr.XRAYさん、ご回答ありがとうございました。
今回はRichEditを使用したいと考えております。
お二人のお答えの内容を見て、1行全選択はかなり困難である
と思いました。
よりまして、Ruさんが初めに示されたコードでやろうと思います。
他のHPを見ても、RichEdit以外のコンポーネントが紹介されて
おりました。
Ruさん、Mr.XRAYさん、貴重なお時間を取っていただき
ありがとうございまた。ここで「解決」とさせていただきます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加