Also ich weis nicht was du falsch machst? Hier mein kleiner Test:
ListBox1.Style := lbOwnerDrawVariable; // im
OI
Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
if Index > 0 then
begin
if LowerCase(ExtractFileExt(ListBox1.Items[Index - 1])) = LowerCase(ExtractFileExt(ListBox1.Items[Index])) then
begin
// Farbe für gleich setzten
ListBox1.Canvas.Brush.color := clWhite;
end
else
begin
// Farbe für ungleich setzten
ListBox1.Canvas.Brush.color := clAqua;
end;
end
else
begin
if Index = 0 then
begin
// Farbe für erstes Element setzten
ListBox1.Canvas.Brush.color := clRed;
end;
end;
ListBox1.Canvas.FillRect(Rect);
ListBox1.Canvas.Font.Color := clBlack;
ListBox1.Canvas.TextOut(Rect.Left, Rect.Top, ListBox1.Items[Index]);
end;
Und das Ergebnis sieht so aus: