BCB6.0を使っています。(Delphiもちょっと使っています)
リッチテキストでの文字ごとの背景色指定をしたくて悩んでいます。
TRichEditではSelAttributesで、文字自体の色は指定できますが、文字ごとの背景色は指定できません。
ネットで検索すると、この手の質問がちらほらありますが、たいていはそんな機能はないのでフリーのコンポーネントを使え、という返事が多いです。
私もそう思ってあきらめていたのですが、先日BCBのTRichEditに、ワードで書いた背景色つきの文章をペーストできることを発見しました。そこで、もう一度詳しく調べてみると、リッチテキストのver1(RICHED32.DLL)ではだめですが、ver2以降(RICHED20.DLL)ではとっくに可能になっているようです。
BCB6が新しいrich edit controlを使っているなら、APIを使えばできそうな気がします。ということでSendMessageとEM_SETCHARFORMATあたりを使ってがんばってみましたが、どうにもうまくいきません。
もし、BCBまたはDelphiで、APIを使って文字個別に背景色を設定したことがある方がいらっしゃいましたら、教えていただけませんでしょうか?
BCBなら、ここかな?
文字の背景色を文字単位で設定出来るのはWin2000,WinXPなどで、Win9X系ではダメ。
http://www24.cds.ne.jp/~neg/pro/piyo1/crec/backcolor.html
そうなんですよ、CHARFORMAT2の使い方についても何度やってもだめだったんです。
で、教えていただいたページを参考にして、やっとうまくいきました。
BCB6では、実際には以下のような感じに微調整しました。
Richedit::CHARFORMAT2 cf2;
cf2.cbSize=sizeof(cf2);
SendMessage(RichEdit1->Handle,EM_GETCHARFORMAT,1,(LPARAM)&cf2);
cf2.dwMask=CFM_COLOR|CFM_BACKCOLOR;
cf2.dwEffects=0;
cf2.crTextColor=RGB(0,0,0xff);
cf2.crBackColor=RGB(0xff,0,0);
SendMessage(RichEdit1->Handle,EM_SETCHARFORMAT,SCF_SELECTION,(LPARAM)&cf2);
賭博きらいさん、速攻レスで教えていただいてありがとうございました。
ツイート | ![]() |