Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Hintergrundfarbe eines selektierten FMX ListViewItems ändern (https://www.delphipraxis.net/197285-hintergrundfarbe-eines-selektierten-fmx-listviewitems-aendern.html)

TurboMagic 26. Jul 2018 15:40

Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Hallo,

wie kann ich am einfachsten die Hintergrundfarbe es selektierten ListViewItems eies FMX List Views ändern? Ich habe dafür bisher noch keinen passenden Stil gefunden. Falls es etwas ausmacht: es wäre für Android.

Grüße

TurboMagic

KodeZwerg 26. Jul 2018 16:58

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Zitat:

You have to use a style. So add a stylebook en either use one of the
styles that come with Delphi or right click the listview "edit custom
style"to make the style. dubbleclick on the stylebook to open the style
and modify the listviewstyle.
Hopes that helps
Me hope das auch :-)

auch was mit Code auf SO entdeckt in Form einer Bitmap:
Zitat:

My suggestion is to add TListItemImage to listview, use it as a marker or set its bounds to cover whole item and use it as a backgraund. Then when you click on item, change the image assigned to the listitemimage object of the selected item.
for example:
Delphi-Quellcode:
procedure TForm1.lvListasItemClickEx(const Sender: TObject; ItemIndex: Integer;
  const LocalClickPos: TPointF; const ItemObject: TListItemDrawable);
begin
TListItemImage(TListViewItem(lvListasItem.Selected).Objects.FindDrawable('Image1')).Bitmap := Image1.MultiResBitmap.Items[1].Bitmap;
end;

TurboMagic 26. Jul 2018 17:23

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Hallo,

wenn, dann hilft glaube ich nur dein 2. Ansatz.
Den ersten habe ich schon versucht und im ListView Stil des Stylebook nichts gefunden, was auf einen selektieren Eintrag hinweist.

Manche Dinge in FMX gehen eionfach, andere scheinen überkompliziert zu sein.

Grüße

TurboMagic

KodeZwerg 26. Jul 2018 17:33

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Da schau an, für mich klang das erstere nach genau dem gesuchten, ich muss dringend mal wieder was FMX taugliches raufpacken damit ich im Vorfeld testen kann was ich copy/paste.

Ps: Vielleicht steht sowas auch in Harry seinFMX Buch. *ungewiss*

Harry Stahl 28. Jul 2018 09:30

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die Listview habe ich im Buch zwar nicht behandelt (kommt aber im nächsten Buch sehr ausführlich), die Lösung geht aber (u.a.) auch entsprechend so, wie im Buch im Kapitel über die Styles / FireMonkey Stil-Designer beschrieben (S. 86 Bitmap-Links):

Du legst hier entweder einen Benutzer defninierten Style an oder änderst den Standard-Style für die Listview. Im Style-Designer wählst Du "selection" aus dem "listviewstyle". Für Selection änderst Du dann im Objectinspektor den "SourceLink".

Wenn die Farben in der vorhandenen Bitmap nicht ausreichen für Deine Zwecke, kannst Du einfach ein neues Bitmap (.png-Format) hinzufügen und das als Source wählen.

Ergebnis sieht dann z.B. so aus wie in der Anlage.

TurboMagic 29. Jul 2018 09:05

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Danke! Habe mir das kurz angeschaut und ja, das sollte kein Problem mehr sein. Es wäre aber mal praktisch eine Übersicht zu haben welcher bereich dieser Bitmaps für welche der Standardcontrols benutzt wird. Dann könnte man gezielter anpassen...

TurboMagic 29. Jul 2018 09:12

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Document the areas of the style PNG graphics
https://quality.embarcadero.com/browse/RSP-20963

Wer mag kann ja dafür abstimmen...

Uwe Raabe 30. Jul 2018 10:51

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Das erscheint mir sehr viel Aufwand mit nur beschränktem Nutzen. Es ist ja keinesfalls gesagt, daß alle Styles das gleiche Grafik-Layout verwenden. Das gilt vermutlich besonders auch für Styles, die nicht von Embarcadero selbst kommen (z.B. https://www.delphistyles.com/).

Nun sind die gefragten Informationen ja bereits im Style selbst enthalten:
Zitat:

One can find that out manually by looking through the style definitions if one loads that style into a TStyle book
Daher würde ich hier ein kleines Programm vorziehen, daß die Bitmap(s) und die Objektstruktur synchronisiert anzeigt. Also einerseits bei Auswahl eines Objekts den zugehörigen Bereich (bzw. Mehrzahl) in der Bitmap anzeigt, andererseits auch beim Hover über der Bitmap die zugehörigen Objekte z.B. in einem Hint anzeigt. Das wäre dann immerhin auf alle Styles anwendbar.

Rollo62 30. Jul 2018 11:45

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Ja die Styles sind sher gewöhnungsbedürftig, und man muss das Arbeiten damit erst nochmal lernen und optimieren, den da sind einige Stolpersteine versteckt.

Damit bin ich eigentlich ganz bei dem Vorschlag von Harry, denn man muss ja meistens nur eine simple, rechteckige Fläche umfärben.
Das geht notfalls auch mit zusätzlichen Rectangles oder Shapes direkt in den Styles,
das ist aber auch suboptimal.

Statt einem zusätzlichem Bitmap für nur einer Farbe lege ich mir eine Art "Farbfächer" an,
so kann ich die wichtigsten Farben "umdefinieren" (Feld-rt, Feld2-Blau, Feld2-grün, ...).
Wenn der Farbfächer immer gleich strukturiert wird, dann kann man den sogar austauschen und so die Style-Hauptfarben leicht ändern, ohne das "große" Bitmap anfassen zu müssen.

Aber Alles in Allem ist das doch sehr lästig, und es hat auch seine Grenzen :stupid:

Rollo

Uwe Raabe 1. Aug 2018 10:19

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe da mal eine Art Proof-of-Concept zusammengeschrieben, zunächst beschränkt auf vsf-Dateien (also VCL Styles). Das Konzept lässt sich vermutlich auch mit vertretbarem Aufwand auf FMX Styles anwenden, notfalls dann halt in einer separaten FMX-Anwendung.

Rollo62 1. Aug 2018 16:00

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Mit .styles Files von FMX im Textformat habe ich das auch schonmal getestet.
Es ist je nur ein DFM-Format, im Prinzip, und lässt sich auch ganz gut verarbeiten.

Das Problem sind aber die auf allen Platformen verschiedenen Basis-Styles, die sich sehr schlecht universalisiren lassen.
Entweder man baut sich die Styles von 0 an selber auf, oder man muss in allen Platformen
womöglich in Handarbeit die Styles optimieren.

Ich nutze im Moment die FMX-Styles aus dem Premium-Pack als Basis, und baue mir dazu was ich brauche, so ähnlich wie unten vorgeschlagen.

Andererseite benutze ich auch nur 10% aller Komponenten, so das ich auch bestimmt 90% der
Style-Daten löschen könnte.
Weil mir das im Moment noch zu risikoreich und zu viel Arbeit ist habe ich es noch nicht gemacht, aber es würde womöglich die Package-Größe erheblick reduzieren.

Rollo

Harry Stahl 1. Aug 2018 22:45

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1409321)
Ich habe da mal eine Art Proof-of-Concept zusammengeschrieben, zunächst beschränkt auf vsf-Dateien (also VCL Styles). Das Konzept lässt sich vermutlich auch mit vertretbarem Aufwand auf FMX Styles anwenden, notfalls dann halt in einer separaten FMX-Anwendung.

Das sieht doch schon sehr schön aus.:thumb: Falls Du da noch mehr Arbeit rein stecken willst, hier noch ein paar Erweiterungsvorschläge:

1. Bitte Version auch für FMX.

2. Übergabe der Style-Datei als Parameter beim Start Deines Programms.

3. Eine Filtermöglichkeit in der Objectliste

4. Bei Auswahl eines Objectes und Doppelklick: Temporäres extrahieren der aktuellen PNG-Datei und Start einer einstellbaren Bildbearbeitung, die als Parameter den Namen der PNG-Datei und den Auswahlbereich erhält. Dann könnte die Bildbearbeitung direkt das Bild laden und den Bereich auswählen (ich wäre bereit eine solche Funktionalität auch in meinem Bildbearbeitungsprogramm zu unterstützen).

5. Bei Speichern der PNG seitens der Bildbearbeitung die PNG in Deinem Bild aktualisieren oder manueller Aufruf für die Aktualisierung in Deinem Programm.

Uwe Raabe 2. Aug 2018 07:26

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Zitat:

Zitat von Harry Stahl (Beitrag 1409435)
5. Bei Speichern der PNG seitens der Bildbearbeitung die PNG in Deinem Bild aktualisieren oder manueller Aufruf für die Aktualisierung in Deinem Programm.

Damit würde der Viewer aber zu einem Editor.

Harry Stahl 2. Aug 2018 18:57

AW: Hintergrundfarbe eines selektierten FMX ListViewItems ändern
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1409450)
Zitat:

Zitat von Harry Stahl (Beitrag 1409435)
5. Bei Speichern der PNG seitens der Bildbearbeitung die PNG in Deinem Bild aktualisieren oder manueller Aufruf für die Aktualisierung in Deinem Programm.

Damit würde der Viewer aber zu einem Editor.

Ja, so ein wenig schon. Aber in gewisser Hinsicht war das ja gewollt, dass man leicht die Komponente und die Bereiche identifizieren kann, die man ändern oder ergänzen möchte.

Es war aber auch nur ein Vorschlag im Sinne eine Diskussion nur für den Fall, dass Du da mehr Arbeit investieren wolltest.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 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