VB初心者なのですが、RichTextBoxの指定した箇所の色を変えるにはどうしたらいいですか?
あと、
「A」表示⇒Aの色変更(緑)⇒「B」表示⇒Bの色変更(青)
を実行するとしても、RichTextで十分ですか?
(過去ログを見て、RichTextBoxのSelColorを使ってみたんですが、全部の色が変わってしまいました…(悲))
よろしくお願いします。
>全部の色が変わってしまいました
選択の範囲が全部になっているのでは?
マウスやキーボードで変えたい文字だけ選択するか
RichTextBox1.SelStart
RichTextBox1.SelLength
で範囲を選択します。
>「A」表示⇒Aの色変更(緑)⇒「B」表示⇒Bの色変更(青)
これはどのような意味でしょうか?
"A"の文字が出てきたら緑に、"B"の文字が出てきたら青に
ということですか。(^^;
お返事、ありがとうございます。
MsgTextBox.Text = "Hello" & vbNewLine & MsgTextBox.Text
MsgTextBox.SelStart = 0
MsgTextBox.SelLength = 5
MsgTextBox.SelColor = RGB(0, 128, 0)
という記述をしたところ、
・Helloが選択された状態(反転状態)になる。
・もう一度、この処理をやると、全ての行の色が変わる
ちう問題がでてきました。コードの書き方、おかしいのでしょうか?
あと、条件1の時は"Hello"(緑)、条件2の時は"GOOD-BYE"(赤)が表示されるような文を作りたいのですが、メッセージをためていくとすると、メッセージがたまっていく毎に、全ての行を塗りなおす事になるのでしょうか?
<↓表示イメージ>(一番上の行に、次々とメッセージが追加されていく予定)
Hello(緑)
Hello(緑)
GOOD-BYE(赤)
Hello(緑)
ちょっと説明わかりにくいかもしれませんが、よろしくお願いします。
>Helloが選択された状態(反転状態)になる。
上のコードの最後に
MsgTextBox.SelLength = 0
を入れれば選択されません。
>もう一度、この処理をやると、全ての行の色が変わる
>全ての行を塗りなおす事になるのでしょうか
これは本質的に同じ質問であると思いますが、
基本的には全ての色を設定しなおす必要があると思います。(^^;
この質問を言い直すと、
MsgTextBox.Text = "Hello" & vbNewLine & MsgTextBox.Text
のとき 「& MsgTextBox.Text」で前のMsgTextBoxの文字の色の属性が
"Hello"に足されるか?と言う質問になると思いますが、足される場合も
あるし足されない場合もあります。確実に色分けをする為には再設定が必要です。
[追加]
RichTextBoxの色変更はMsgTextBox.SelColorで行う方法と
MsgTextBox.TextRTFを直接書き換える方法と2つの方法があります。
短いText文を色分けする場合はTextBox.SelColorを使いますがText文が
少し長くなる場合は(1K以上)この方法では考えられないような長い時間が
かかります。そのような場合はMsgTextBox.TextRTFを直接書き換えます。
SelTextを使って、こんな風にしてみてはどうでしょうか?
(当方VB6ではできましたが、他のバージョンはわかりませんので試してください。)
まず空っぽに
MsgTextBox.text = ""
1つ目
MsgTextBox.SelStart = 0
MsgTextBox.SelLength = 0
MsgTextBox.SelColor = RGB(0, 128, 0)
MsgTextBox.SelText = "Hello" & vbCrLf
2つ目
MsgTextBox.SelStart = 0
MsgTextBox.SelLength = 0
MsgTextBox.SelColor = RGB(255, 0, 0)
MsgTextBox.SelText = "Good-Bye" & vbCrLf
リードオンリーでご無沙汰してましたが、久々に書き込んでみました。では。
申し訳ありません、レス遅くなりました。
satoru-iさんのソースをそのまま書いたら、
ウソみたいにうまくいきました。b(`)
レスくれた皆様、ほんっとーにありがとうございました!
ツイート | ![]() |