ListItemの陰影表示

解決


kkk  2004-02-13 23:44:25  No: 7110

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

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

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


kkk  2004-02-14 00:51:28  No: 7111

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

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


にしの  2004-02-14 00:58:36  No: 7112

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


kkk  2004-02-14 02:15:18  No: 7113

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

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


kkk  2004-02-14 02:52:53  No: 7114

何度もすいません。

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

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


にしの  2004-02-14 03:06:21  No: 7115

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

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

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

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


んぽ  2004-02-14 04:17:35  No: 7116

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


kkk  2004-02-14 04:22:26  No: 7117

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加