Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
テキストデータ内に,部分文字に着色付ける方法は在りますか?
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30891#CommentId85868
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2023/8/31 18:31:06
これが VB6 ではなく VB.NET であれば、文字単位の背景色指定を
とても簡単に書けるのですけれどね。
RichTextBox1.SelectionBackColor = Color.Yellow
VB6 にも SelBackColor プロパティなんてものが欲しいところですが、
残念ながら、その機能がカプセル化されていないため、
先述の API 頼りになってしまいます。
ですが一応 VB6 でも、API を使わずに背景色をセットする方法があります。
具体的には、SelRTF プロパティ(あるいは TextRTF プロパティ) で
示される RTF 文字列を、直接書き換えるという手法です。
RTF 文字列の仕様は下記を参照。
http://ja.wikipedia.org/wiki/Rich_Text_Format
https://learn.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxrtfex/411d0d58-49f7-496c-b8c3-5859b045f6cf
RTF で指定する場合は、たとえば {\f1\cb1\cf2 Sample Text} などのようにします。
\cb というのが背景色で、 \cf というのは文字色の指定です。
その後に続く番号は、カラーパレットのインデックスを表しています。
カラーパレットというのは、使用する色を
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red192\green192\blue192;}
などの形式で並べたものです。
ちなみに \f はフォントの番号であり、{\fonttbl } に対応しています。
といっても、直接 RTFを作りこむのは面倒ですので、プロパティから既知の RTF を取得した後で、
Replace 関数なり正規表現なりで、\cb を補ってから、プロパティに書き戻す形の実装で。