AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls FMX TListBox AlternatingRowBackground nicht gesamte Breite des Items
Thema durchsuchen
Ansicht
Themen-Optionen

FMX TListBox AlternatingRowBackground nicht gesamte Breite des Items

Ein Thema von softtouch · begonnen am 12. Okt 2022 · letzter Beitrag vom 12. Okt 2022
Antwort Antwort
Benutzerbild von softtouch
softtouch

Registriert seit: 13. Feb 2015
Ort: Kerpen
212 Beiträge
 
Delphi 12 Athens
 
#1

FMX TListBox AlternatingRowBackground nicht gesamte Breite des Items

  Alt 12. Okt 2022, 15:37
Ich habe eine TListBox (Firemonkey), mit einer Item breite grösser als der Client Bereich, somit muss ich horizontal scrollen um alles zu sehen. So soll es auch sein.
Nun setze ich AlternatingRowBackground auf true, und nur der Client Bereich der Listbox reagiert darauf. Wenn ich horizontal scrolle, ist der reinscrollende Hintergrund jedoch wieder nur Weiß.
Wie bekomme ich es hin, dass das gesamte Item die Hintergrundfarbe annimmt?
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: FMX TListBox AlternatingRowBackground nicht gesamte Breite des Items

  Alt 12. Okt 2022, 21: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz