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

在列表框中为字符串的不同部分着色(Delphi),delphi,listbox,Delphi,Listbox,我有一个列表框,我正在添加有关事件的信息,以及事件是否处于活动、完成或非活动状态等。每个事件将位于列表框的单独一行,我希望“活动标签”采用颜色编码(如绿色表示活动,蓝色表示完成等),但其余文本为黑色。有人知道怎么做吗?基本上,您需要将TListBox.Style设置为lbOwnerDrawFixed。创建一个evnet TListBox.DrawItem。在这种情况下,您可以执行以下操作: procedure TForm1.ListBox1DrawItem(Control: TWinContro

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

基本上,您需要将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;

尽管我认为这很有用,但我没有太多经验,对实现这一点有点困惑。抱歉我的无知:/@user3327810如果您对项目编码方式的描述更清晰,那么我们可以帮助您提供更准确的答案。在您的情况下,您想要实现的图像以及保存信息的相应数据结构(活动、完成等)也会有所帮助