掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ListViewで特定の値に一致する場合に太字するには? (ID:44866)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
arigayasさん、データをListViewに書き込むときにFontの属性を決定させることは出来ませんよ。 各Itemが描画される直前にCanvasのFontのプロパティに手を加える、というようにしないと。 もう少し具体的にお手伝いしてみますと…このような仕掛けはいかがですか? http://i.imgur.com/xNHWx87.png 上も下もまったく同じデータが入ったListViewです。 SubItems[3] として、Premium のデータを入れてあります。 arigayasさんのコードなら、LineStrings.Add(Premium); を追加でしょうかね? 上と下の違いは、下のListViewには5番目のカラムを作っていないため、Premium のデータが 非表示な状態になっている、ということです。(非表示でもデータの入出力は普通に出来ます。) この状態で以下のOnCustomDrawItemイベントハンドラを入れればOkです。 procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var TL: TListView; PL: Integer; begin if Item.SubItems.Count<4 then Exit; // SubItems[3]、つまり Premium が無いなら処理しない TL:=Sender as TListView; case StrToIntDef(Item.SubItems[3], 9999) of // 数字以外なら9999にしてcase文をスルーさせる 1: TL.Canvas.Font.Style:=TL.Font.Style+[fsBold]; 2: TL.Canvas.Font.Color:=clRed; end; end; 非表示のデータを作ってそれを利用する方法のほか、TListItem.Dataに整数値を入れておく 方法もあると思います。 入れる ListItem.Data:=Pointer(StrToInt(Premium)); 取り出す PL:=Integer(ListItem.Data); みたいな感じで。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.