着色字符串的不同部分,在列表框中不同(Delphi)

时间:2014-02-19 11:39:02

标签: delphi listbox

我有一个列表框,我正在添加有关事件的信息以及事件是否处于活动状态,已完成状态或非活动状态等。每个事件都将位于列表框的单独行中,我希望“活动标签”为颜色编码(例如,绿色表示活动,蓝色表示已完成等)但文本的其余部分为黑色。有谁知道怎么做?

1 个答案:

答案 0 :(得分:0)

基本上你需要将TListBox.Style设置为lbOwnerDrawFixed。创建一个evnet TListBox.DrawItem。在这种情况下,您可以执行以下操作:

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TListBox).Canvas do
  begin
    FillRect(Rect);
    // Here you can change your Text output to your liking
    Font.Color := clRed;
    TextOut(Rect.Left, Rect.Top, (Control as TListBox).Items[Index]);
  end;
end;