![]() |
ListView Item Hintergrundfarben anpassen nach bestimmten Wert
Welches ist eurer Meinung nach die beste Möglichkeit ListView Items Hintergrundfarben farblich nach einem bestimmten Wert anzupassen?
Ich habe rund 50 Einträge dessen Daten in Klassen hinterlegt sind. Jede Klasse hat ein Integer Property was von 1 bis 70 beinhalten kann. Wie stelle ich die Einträge so da, das Einträge mit höherem Integerwert rötlicher dargestellt werden als niedrigere, die am besten grün dargestellt werden? Ein Array von 0 bis 69 mit Farbwerten ist nicht die Lösung oder? |
AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert
Sollte doch eigentlich trivial machbar sein. Beispiel: 0 ist RGB(0,255,0), also volles Grün, und 70 ist dann RGB(255,0,0), also volles Rot. Das in eine Formel gießen und diese in Code und du kannst die Farbe auf das ListView oder worauf auch immer anwenden. Wenn die Farben zu kräftig sind, kann man ja die Intensität abschwächen.
Stichwörter in dem Zusammenhang: ![]() ![]() ![]() Grüße Dalai |
AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert
So meinte ich das eigentlich nicht. Jedes Item soll eine eigene Farbe haben. Von 1 (ganz schwach grün oder so) bis 70 (ziemlich rot).
|
AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert
Ja, dazu musst Du nur den Rot- bzw. Grün-Anteil berechnen. Das sollte zu schaffen sein.
|
AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert
Den Prozentwert anhand des Properties von 0 bis 255 ausrechnen ist kein Problem. Ich frage mich nur eher, wie man schön von grün, meinetwegen auch weiß über ... im Prinzip also ein Gradient von einer Farbe die signalisiert "wenig" zu einer die signalisiert "viel".
Ich hab sonst noch das hier. Dann erzeuge ich mir hiermit tatsächlich dieses 70-große Array ![]() |
AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert
Du hast eine Anfangs- und eine Endfarbe. Von beiden ermittelst Du die RGB-Werte und die jeweiligen Differenzen. Die passende Farbe ergibt sich also aus dem jeweiligen Anfangswert zzgl. Differenz geteilt durch 70 multipliziert mit dem Faktor. Die so errechneten Werte wandelst Du in eine RGB-Farbe um... fertig.
[edit] Differenzen ist nicht ganz korrekt. Gemeint ist je Kanal Endwert minus Anfangswert, das kann also auch negativ werden. [/edit] |
AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert
Delphi-Quellcode:
gruss
var
vert: array [0 .. 1] of TTRIVERTEX; gRect: GRADIENT_RECT; begin vert[0].X := X; vert[0].Y := Y; vert[0].Red := GetRValue(TopRGB) shl 8; vert[0].Green := GetGValue(TopRGB) shl 8; vert[0].Blue := GetBValue(TopRGB) shl 8; vert[0].Alpha := $0000; vert[1].X := xW; vert[1].Y := yH; vert[1].Red := GetRValue(BottomRGB) shl 8; vert[1].Green := GetGValue(BottomRGB) shl 8; vert[1].Blue := GetBValue(BottomRGB) shl 8; vert[1].Alpha := $0000; gRect.UpperLeft := 0; gRect.LowerRight := 1; GradientFill(DC, @vert, 2, @gRect, 1, GRADIENT_FILL_RECT_V); end; |
AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert
Das malt zwar einen schönen Gradienten in einem Rechteck, aber löst irgendwie doch nicht das ursprüngliche Problem:
Zitat:
Unabhängig davon gibt es für so einen Gradienten in Vcl.GraphUtil schon eine fertige Methode ![]() |
AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert
Zitat:
Ach was soll's Muss man für alles die VCL bemühen? gruss |
AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert
Zitat:
Je niedriger desto weißer soll das Item sein. Je höher desto rötlicher/Signalfarben. 3/4 der Items befinden sich im niedrigen Bereich. Der Rest irgendwo dadrüber. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz