ListItemの陰影表示

解決


kkk  2004-02-13 14:44:25  No: 7110  IP: 192.*.*.*

ListViewにおいて、表示スタイルはレポート形式ですが、特定のListItemだけをボタンのEnabledプロパティをfalseにしたときのように表示させたいのですが(影みたく灰色にする)、どのようにしたらいいのでしょうか?

ListItemのプロパティには、cutというのがありますが、これではないような気がします。

どうぞ、アドバイスよろしくお願いします。

編集 削除
kkk  2004-02-13 15:51:28  No: 7111  IP: 192.*.*.*

ちょっと、質問文が悪かったので、(^^;;

ただ単に行単位で色を変えたいのですが、これって意外と難しいでしょうか?

編集 削除
にしの  2004-02-13 15:58:36  No: 7112  IP: 192.*.*.*

こちらが参考になるかと。
https://www.petitmonte.com/bbs/answers?question_id=1092

編集 削除
kkk  2004-02-13 17:15:18  No: 7113  IP: 192.*.*.*

にしのさんありがとうございます。
リンク先のページをよく読み、Brushを使えばいいことがわかり、
CustomDrawItemイベントに以下のように命令文を追加してみました。
--------------------------------------------------------
 TRect Rect = Item->DisplayRect(drBounds);
        lvwApp->Canvas->Brush->Color = clLime; //←(A)
        lvwApp->Canvas->FillRect(Rect);
----------------------------------------------------------
それでなんとか背景は緑になったのですが、Captionに入っている値はいいのですが、subItemに入っている値だけがフォントがでっかくなってしまいます。┌|゜□゜;|┐ガーン!!

アドバイスよろしくおねがいします。

編集 削除
kkk  2004-02-13 17:52:53  No: 7114  IP: 192.*.*.*

何度もすいません。

試しに、 lvwApp->Canvas->FillRect(Rect);
を消してみたらうまくいきました。

TRect Rect = Item->DisplayRect(drBounds);
自分では、上の文は、項目の矩形の領域を取得していると思ったいましたが、
違うのでしょうか?
上の文が、いったい何をやっているのかがわからなくなりました。
どうかご教授ください。

編集 削除
にしの  2004-02-13 18:06:21  No: 7115  IP: 192.*.*.*

フォントがでかくなるとのことですが、

>  //フォントが壊れるバグの対応
>  with Sender.Canvas do
>    if Assigned(Font.OnChange) then Font.OnChange(Font);

これ、ちゃんと入れてありますか?

> TRect Rect = Item->DisplayRect(drBounds);
> 自分では、上の文は、項目の矩形の領域を取得していると思ったいましたが、
> 違うのでしょうか?
そうですよ。

編集 削除
んぽ  2004-02-13 19:17:35  No: 7116  IP: 192.*.*.*

にしのさんが仰ってる対処法の他に
DefaultDraw:=False;
というのもあります。
ただし、こちらは自前で全て描画しなくちゃならんです。
Good Luck!

編集 削除
kkk  2004-02-13 19:22:26  No: 7117  IP: 192.*.*.*

バグだったんですね。
ありがとうございました。

編集 削除