Ich würde das mal als Bug bezeichnen, denn es wird immer nur die Breite der Listbox für die alternierenden Items der Hintergrund gezeichnet. Habe auf die Schnelle auch keinen einfachen Workaround gesehen.
Alternativ könntest Du aber das alternating abschalten und es selber im onPainting-Event nachstellen. Dazu muss aber jedem TListBoxItem zuvor das eigene Onpainting event zugewiesen werden.
Dann könnte das im Event so aussehen:
Delphi-Quellcode:
procedure TForm25.FormCreate(Sender: TObject);
begin
for var x := 0 to Listbox1.Items.Count -1 do begin
Listbox1.ListItems[x].OnPainting := ListBoxItem4Painting;
end;
end;
procedure TForm25.ListBoxItem4Painting(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
begin
if odd ( TListboxItem (sender).Index ) then begin
canvas.Fill.Color := TAlphaColorRec.gray;
canvas.FillRect(Arect, 0.2)
end;
end;
Vom Ergebnis her sähe es dann aus wie in der Anlage.
Wäre nett, wenn Du das beim Quality Central als Bug meldest.