掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TreeViewの特定ノードのテキストカラーを変更するには? (ID:44999)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Syakeさん、ttさんが混乱しちゃうかもしれないので、、、 >他にもTStringListなども・・・。 ↑これ、TListViewの書き間違いですよね。 TreeViewのオーナードローの仕組みは、TListViewと大変よく似ています。 以下はttさんと似たような相談内容ですので、参考になるでしょう。 ListViewで特定の値に一致する場合に太字するには? https://www.petitmonte.com/bbs/answers?question_id=8048 >TreeView1.Canvas.Font.Color := clRed; …(a) >TreeView1.Font.Color := clRed; …(b) >2例で何が違うのでしょうか? (a) はTreeView1.Canvas.Font.ColorをclRedにします。 (b) はTreeView1.Font.ColorをclRedにします。 そのままかよ! …って、そうなんです。それぞれ、これらだけでは特定のアイテムだけを任意の色にする ということは出来ません。 >結局はObject.Canvas.Font.ColorはOnDrawに類するイベント内でしか使えず、 >特定ノードの色変更の処理はOnDraw系イベントでしか書けないのでしょうか? どこでも使えますよ。でも、あるアイテムの色を変更して描画する目的ならOnDraw系イベント内に書きます。 原理と理屈を書きますと、おおよそこんな感じです。 1. 一つ一つのアイテムごと、その描画直前に… イベントハンドラが設定されていない場合 … デフォルトの描画が行われる。これでおしまい。 イベントハンドラが設定されている場合 …OnCustomDrawItemが発生。以下に続く。 2. TreeView1.Canvas.FontにTreeView1.Fontの内容がコピー(VCL風に言うと、Assign)される。 3. イベントハンドラであるTreeView1CustomDrawItemが呼ばれる。 4. このタイミングでTreeView1.Canvas.Font.Colorを任意の色にすると、そのアイテムは任意の色で描画される。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.