webForumDet fria alternativet

Sätta färger på olika rader i en listbox

Programmering

1 svar · 447 visningar · startad av FreeZer

Medlem sedan jan. 2001950 inlägg
Frågan#1

Kan man sätta en speciell färg på en rad i en listbox? eller på texten på en viss rad?

Om detta inte går, vad finns det för möjligheter för att uppnå samma resultat?

Medlem sedan aug. 2000234 inlägg
#2
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  ListBox1.Style := lbOwnerDrawFixed; 
end; 

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; 
  Rect: TRect; State: TOwnerDrawState); 
begin 
  with Control as TListBox do 
  begin 
    Canvas.FillRect(Rect); 
    Canvas.Font.Color := TColor(Items.Objects[Index]); 
    Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]); 
  end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  ListBox1.Items.AddObject('Red Item', Pointer(clRed)); 
end; 

procedure TForm1.Button2Click(Sender: TObject); 
begin 
  ListBox1.Items.AddObject('Green Item', Pointer(clGreen)); 
end;

Har inte testat detta själv... utan hittade det här

274 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)