Hintergrundfarbe für einzelnes Element ändern

MacInternet

Mitglied
Hallöchen,

ich greife noch mal auf das Forum zurück, weil ich immer noch das Problem mit der Hintergrundfarbe einer Listview habe.

Und zwar möchte ich für Elemente, die bestimmte Bedingungen erfüllen, verschiedene Hintergrundfarben auswählen, um diese gruppenweise hervorzuheben bzw. abzugrenzen.

Angenommen, innerhalb des Listview-Aufbaus steht:

Visual Basic:
With ListView1
         With .ListItems.Add(Text:=wort)
            .SubItems(1) = Len(wort)
            .SubItems(2) = ListView1.ListItems.Count
         End With
 End With

- wie und wo bitte kann ich jetzt hier die Hintergrundfarbe ändern, wenn ein Element best. Bedingungen erfüllt? Wohl gemerkt, nicht die Hintergrundfarbe des gesamten Steuerelementes, sondern nur für ein einzelnes Element.

Wäre schön, wenn mir hier jemand weiterhelfen könnte. Hab schon alles durchprobiert, leider ohne Erfolg.

Danke im voraus,
Mac
 
Also, eine Möglichkeit die Hintergrundfarbe für ein einzelnes Element zu ändern hab ich nicht gefunden, du könntest solche Elemente aber z.B. mit einem eigenen Symbol versehen. Wenn ich betr Hintergrund was finde meld ich mich, könnte eventuell mit Subclassing funktionieren.


Der Doc!
 
Die Hintergrundfarbe für markierte Elemente in der ListBox wird durch die Systemeinstellung bestimmt und ist Inhalt der Konstante "vbHighlightText".
Diese ist aber (wenn überhaupt) nur mit Hilfe der API zu editieren. Davon würde ich aber abraten, weil es wohl kaum jemanden gefällt wenn plötzlich seine Systemeinstellungen einfach so geändert werden.
 
Mac meinte eher, dass nicht die Auswahl geändert wird sondern Elemente abhängig vom Wert andere Hintergrundfarben haben. Eine solche Möglichkeit ist mir aber noch nicht untergekommen.


Der Doc!
 
Mac meinte eher, dass nicht die Auswahl geändert wird sondern Elemente abhängig vom Wert andere Hintergrundfarben haben. Eine solche Möglichkeit ist mir aber noch nicht untergekommen.


Der Doc!

Diese Eigenschaft gibt es nicht bei der ListBox. Die einzige Farbe um Einträge hervorzuheben ist durch das Markieren definiert.
Alternativ könnte man sich selbst ein ActiveX-Control erstellen oder/und eine neue Klasse schreiben. Ob der Aufwand lohnt?...
Eventuell gibt es auch schon feritge Controls, mit denen man das machen kann. Aber die sind sicher nicht kostenfrei.

Vielleicht hier mal stöbern: http://www.tools4vb.com/home/index.php
 
ich würde es mit einem Grid statt einer Listbox machen, dann geht das. Ich glaube sogar das einfache msFlexgrid kann für jede Reihe eine eigene Farbe nehmen (kann ich nur halt nicht testen da ich kein VB auf meinem Arbeitsrechner installiert habe)

Grüsse bb
 
bb, Du hast recht, beim Flexgrid geht das und vieles mehr.

Das Flexgrid hatte ich MacInternet in einem früheren Post auch schon mal empfohlen, weil es in meinen Augen flexibler ist, aber MacInternet meint, für seine Anforderungen ist das ListView besser geeignet.

Da geht das aber leider nicht.

Grüsse
ronaldh
 
Doch, das geht - auch im Listview-Element. Siehe Anhang. Allerdings gibt es dabei das Problem, das der Hintergrund nicht so angepasst werden kann, wie ich es gerne hätte. Nämlich abhängig vom Inhalt der Zeile. Oder vielleicht finde ich da auch noch einen Weg.

Gruß Mac
 

Anhänge

  • Listview Hintergrundfarbe.jpg
    Listview Hintergrundfarbe.jpg
    17,9 KB · Aufrufe: 55
was du in deinem Listview gemacht hast sind die eigenschaften BackcolorOdd und BackcolorEven

heisst also nur im Wechsel möglich.

Ich würde also dennoch das Grid bevorzugen (Vielleicht weil ich keine Listboxen mag ! Das sind für mich nur verkrüppelte Grids)

Grüsse bb
 
was du in deinem Listview gemacht hast sind die eigenschaften BackcolorOdd und BackcolorEven

nee, da muß ich Dich enttäuschen - genau das hab ich nicht gemacht! Ich habe einen anderen "Trick" angewendet.
Das geht nicht nur im Wechsel, das geht auch mit 2, 3 oder 4 Zeilen... ;-)

Gruß Mac
 
Zurück