AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein ListView Item Hintergrundfarben anpassen nach bestimmten Wert
Thema durchsuchen
Ansicht
Themen-Optionen

ListView Item Hintergrundfarben anpassen nach bestimmten Wert

Ein Thema von DieDolly · begonnen am 30. Mai 2019 · letzter Beitrag vom 31. Mai 2019
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert

  Alt 30. Mai 2019, 21:10
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 http://www.perbang.dk/rgbgradient/

Geändert von DieDolly (30. Mai 2019 um 21:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#2

AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert

  Alt 30. Mai 2019, 21:40
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (30. Mai 2019 um 21:54 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert

  Alt 31. Mai 2019, 09:37
Delphi-Quellcode:
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;
gruss
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.731 Beiträge
 
Delphi 12 Athens
 
#4

AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert

  Alt 31. Mai 2019, 10:25
Das malt zwar einen schönen Gradienten in einem Rechteck, aber löst irgendwie doch nicht das ursprüngliche Problem:
Welches ist eurer Meinung nach die beste Möglichkeit ListView Items Hintergrundfarben farblich nach einem bestimmten Wert anzupassen?
Wenn ich das richtig verstehe, soll der Hintergrund eines Items eine konstante Farbe haben und keinen Gradient, oder?

Unabhängig davon gibt es für so einen Gradienten in Vcl.GraphUtil schon eine fertige Methode GradientFillCanvas, die im Wesentlichen das gleiche tut - nur einfacher zu verwenden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert

  Alt 31. Mai 2019, 10:30
Zitat:
die im Wesentlichen das gleiche tut - nur einfacher zu verwenden.
Danke das du mich für meine Hilfe wider mal runterzumachen versuchst.
Ach was soll's

Muss man für alles die VCL bemühen?

gruss
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert

  Alt 31. Mai 2019, 10:34
Zitat:
Wenn ich das richtig verstehe, soll der Hintergrund eines Items eine konstante Farbe haben und keinen Gradient, oder?
So ist es. Eine ListView, ListBox, ComboBox oder alles was Items hat, hat einige davon. In den Klassen dahinter gibt es ein Property mit einem Zahlenwert der entweder niedrig oder hoch ist.
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.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.091 Beiträge
 
Delphi 12 Athens
 
#7

AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert

  Alt 31. Mai 2019, 16:46
Zitat:
Wenn ich das richtig verstehe, soll der Hintergrund eines Items eine konstante Farbe haben und keinen Gradient, oder?
So ist es. Eine ListView, ListBox, ComboBox oder alles was Items hat, hat einige davon. In den Klassen dahinter gibt es ein Property mit einem Zahlenwert der entweder niedrig oder hoch ist.
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.
Schon mal probiert den Ansatz von DeddyH umzusetzen?
Der nimmt ja einen Farbbereich und rechnet für deine unterschiedlichen Werte jeweils aus, welche Farbe dazu gehören würde.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert

  Alt 31. Mai 2019, 10:48
Zitat:
die im Wesentlichen das gleiche tut - nur einfacher zu verwenden.
Danke das du mich für meine Hilfe wider mal runterzumachen versuchst.
Wo hat er dich runter gemacht? Er hat nur darauf hingewiesen, dass dein Code das Problem nicht löst und darauf hingewiesen, dass die VCL schon so eine Routine bereitstellt.

Und jezt bitte wieder zurück zum Thema.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: ListView Item Hintergrundfarben anpassen nach bestimmten Wert

  Alt 31. Mai 2019, 10:59
Zitat:
dass dein Code das Problem nicht löst
Richtig! Ist auch kein Problem für mich.
Zitat:
und darauf hingewiesen, dass die VCL schon so eine Routine bereitstellt
Wenn man einen Lösungsansatz schmälert und auf die VCL verweist obwohl mein Quelltext das gleiche bewerkstelligt ist das für mich ein runtermachen.. (Herabwürdigung)
Bedeutet!
Meine Lösung ob sie nun zur Behebung des Problems beiträgt oder nicht tut was sie soll!
Zitat:
Und jezt bitte wieder zurück zum Thema.
Bitte auch kein Problem für mich.

Ich hoffe es war mir erlaubt darauf noch zu Antworten.

gruss

Geändert von EWeiss (31. Mai 2019 um 14:09 Uhr)
  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 14:30 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-2025 by Thomas Breitkreuz