Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.533 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FMX TListBox AlternatingRowBackground nicht gesamte Breite des Items

  Alt 12. Okt 2022, 22:33
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.
Miniaturansicht angehängter Grafiken
itemalternate.png  
  Mit Zitat antworten Zitat