TListItem.SubItemsで、表示する文字列の色を設定するには?

解決


yuki  2004-03-20 05:05:01  No: 7791

はじめして。
Delphy初心者なのですが、
TListItem.SubItems.ADD([格納する文字列(TStringList)])にて
リストで表示する文字の表示色を変更したいのですが、
表示色の設定方法がわかりません。
すいませんがよろしくお願いします。

環境は、
OS:Windows2000Server
ソフトは、Delphi5です。


んぽ  2004-03-20 10:05:32  No: 7792

https://www.petitmonte.com/bbs/answers?question_id=624
ここを参考にしてください。
Sender.Canvas.Font.Colorを変更すればいいと思います。
それと、SubItemsはTStringsじゃありませんでしたっけ?(似たようなもんですが


yuki  2004-03-23 05:13:11  No: 7793

お答えいただきありがとうございます。(返事が送れまして申し訳ありません)
アドバイスにより、
(例)TListItem.SubItems.Sender.Canvas.Font.Color = clBlue;
のように、変更を加えてみましたが、コンパイルすることができませんでした。
すいませんが、もう少し詳しく教えてもらえないでしょうか。
よろしくお願いします。


にしの  2004-03-23 05:32:52  No: 7794

TListViewの各要素のフォント色を、単純な設定で変えることは出来ません。
OnDrawItemなどのイベントで、自前で描画する必要があります。

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


んぽ  2004-03-24 01:55:12  No: 7795

procedure TMainForm.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  if SubItem = 1 then
  Sender.Canvas.Font.Color := clRed;
end;
うちはこれでちゃんとコンパイルも通り、文字色も変わりましたよ。
他にも
  if Odd(Item.Index) then
  Sender.Canvas.Brush.Color := clRed;
とすればIndexが奇数の行(見た目は偶数番目の行)の背景が赤くなります。
今回は質問がSubItemsに関するものだったので
Captionに関してならばにしのさんの紹介してくださったほうが参考になると思います。

独り言
if Item.SubItems[0] = 'んぽ' then
とするとEStringListErrorが出るのは何でだろう。


yuki  2004-04-03 04:50:17  No: 7796

いろいろと仕事が忙しくて返事が送れて申し訳ありませんでした。

アドバイスにより、OnCustomDrawSubItemイベントを使うことによって
ListView内の項目のフォントの色を変えることができました。
ありがとうございました。


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

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






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