ListViewにおいて、表示スタイルはレポート形式ですが、特定のListItemだけをボタンのEnabledプロパティをfalseにしたときのように表示させたいのですが(影みたく灰色にする)、どのようにしたらいいのでしょうか?
ListItemのプロパティには、cutというのがありますが、これではないような気がします。
どうぞ、アドバイスよろしくお願いします。
ちょっと、質問文が悪かったので、(^^;;
ただ単に行単位で色を変えたいのですが、これって意外と難しいでしょうか?
こちらが参考になるかと。
https://www.petitmonte.com/bbs/answers?question_id=1092
にしのさんありがとうございます。
リンク先のページをよく読み、Brushを使えばいいことがわかり、
CustomDrawItemイベントに以下のように命令文を追加してみました。
--------------------------------------------------------
TRect Rect = Item->DisplayRect(drBounds);
lvwApp->Canvas->Brush->Color = clLime; //←(A)
lvwApp->Canvas->FillRect(Rect);
----------------------------------------------------------
それでなんとか背景は緑になったのですが、Captionに入っている値はいいのですが、subItemに入っている値だけがフォントがでっかくなってしまいます。┌|゜□゜;|┐ガーン!!
アドバイスよろしくおねがいします。
何度もすいません。
試しに、 lvwApp->Canvas->FillRect(Rect);
を消してみたらうまくいきました。
TRect Rect = Item->DisplayRect(drBounds);
自分では、上の文は、項目の矩形の領域を取得していると思ったいましたが、
違うのでしょうか?
上の文が、いったい何をやっているのかがわからなくなりました。
どうかご教授ください。
フォントがでかくなるとのことですが、
> //フォントが壊れるバグの対応
> with Sender.Canvas do
> if Assigned(Font.OnChange) then Font.OnChange(Font);
これ、ちゃんと入れてありますか?
> TRect Rect = Item->DisplayRect(drBounds);
> 自分では、上の文は、項目の矩形の領域を取得していると思ったいましたが、
> 違うのでしょうか?
そうですよ。
にしのさんが仰ってる対処法の他に
DefaultDraw:=False;
というのもあります。
ただし、こちらは自前で全て描画しなくちゃならんです。
Good Luck!
バグだったんですね。
ありがとうございました。