RichEditで左側を表示のみで編集できない領域、右側を編集領域に分け、起動すると表示領域にある文字を表示することはできるでしょうか?なおかつ左右の領域の間に線を引き、表示領域の背景を線とは違う色にし、編集領域のある行の一部の文字サイズを変えると表示領域の同じ行のすべての文字サイズも変えることはできるでしょうか?
どうか宜しくお願い致します。
できないと思います。
編集 削除ちゃん・・「大吾郎、お前はまだ幼いから無理もないが、世の中すべてが思い通りになるわけではないぞ」
大吾郎・・「ちゃん、だけどどうしても欲しいの」
ちゃん・・「そんなわがまま言うて父を困らすでない」
大吾郎・・「ちゃん、ホントにムリなの?」
ちゃん・・「そうよの〜、それらしく見せかけることは出来んこともないが…」
大吾郎・・「それでもいいよ。どうすればいいの?」
ちゃん・・「まずPanel(BorderStyle:=bsSingle; BevelOuter:=bvNone)を用意して、その中にRichEdit1(BorderStyle:=bsNone; Align:=alLeft; Color:=clInfoBk; ReadOnly:=True)を入れる。横幅はPanelの幅の1/2じゃ」
大吾郎・・「うん、それから?」
ちゃん・・「その右側にもう一つのRichEdit2(BorderStyle:=bsNone; Align:=alClient)を入れるのだ。これでお前の言うような見栄えじゃ」
大吾郎・・「ちゃん、でもまだ真ン中の線がないよ」
ちゃん・・「そうか、それを忘れておったのぉ。ではSplitter1(Width:=2; Color:=clBlue)をPanelの中に
入れれば、これでお前の望む通りになったであろう」
大吾郎・・「ちゃん、ホントだ」
見かけはそうかもしれませんが、スクロールの同期とか、文字サイズ変更に
伴う折り返しの問題とか、ややこしいことがたくさんあります。
jokさん、子連れ狼さん有り難う御座います。
BoalandのサイトのTipsで「Memoコンポーネントの中で編集領域として使う領域を取得、設定します。…(途中省略)…省略編集領域を内側にします。」とあります。余白とでもいえはいいのでしょうか?
左側に余白?を設けて、余白部分に文字を表示することはできないでしょうか?
何の目的でこんな妙なことをしたいのか分かりませんが、たとえEM_SETRECTメッセージでRichEditの左側を非編集領域にして自前で文字を描画したとしても、スクロールや文字サイズ変更による再描画やFONT作成のわずらわしさは、二つのRichEditを同期してスクロールさせるのと比較して楽であるとは思えませんが。ともかく自分で実際に試してみるしかないでしょうね。
自前で文字を描くにはRichEditのDC(デバイスコンテキスト)に対して TextOutやDrawText APIを。FONTを作成するのは CreateFont APIで。