この記事では、Delphi がリストボックス内の項目をコンテンツに応じて異なる色で表示する方法を簡単に説明します。実装手順は次のとおりです。
ListBox1 の Style プロパティを lbOwnerDrawVariable に変更します。
ListBox の OnDrawItem イベントで、項目の値に応じて Canvas プロパティを変更します。
サンプルコードは次のとおりです。
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TownerDrawState);begin //フォントは元のデフォルトの色を使用します if Odd(index) then //項目のインデックスが奇数の場合の色番号の開始 listbox1 .Canvas.Brush.Color:=clwindow; ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]); end else //項目のインデックスが偶数の場合の色 begin listbox1.Canvas.Brush.Color:=clinactivecaptiontext ; ListBox1 .Canvas.TextRect(Rect,rect.Left,ListBox1.Items[インデックス]); odSelected 状態で // 選択時の色 begin listbox1.Canvas.Brush.Color:=clhighlight ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]);