Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Delphi Farbe der ausgewählten unfokusierten Einträge in einem TListView (https://www.delphipraxis.net/187628-farbe-der-ausgewaehlten-unfokusierten-eintraege-einem-tlistview.html)

Shark99 16. Dez 2015 12:47

Farbe der ausgewählten unfokusierten Einträge in einem TListView
 
In einem standard TListView werden die ausgewählten Einträge mit einer blauen Markierung angezeigt.

Wenn das Listview den Focus verliert ändert sich die Farbe von blau zu einem hellen grau.

Kann ich das irgendwie verhindern ohne eine Fremkomponente nehmen zu müssen?

Ich will also dass die ausgewählten Einträge immer blau bleiben, auch wenn man Listview keinen Focus hat.
Das gleiche Verhalten also wie eine TListBox hat.

Für ein Codebeispiel wäre ich sehr dankbar!

haentschman 16. Dez 2015 13:51

AW: Farbe der ausgewählten unfokusierten Einträge in einem TListView
 
:P
Eoin Codebeispiel aus dem die Lösung quasi ins Auge springt... (Das ist jede 2. Linie anders färben)
Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Odd(Item.Index) then
    Sender.Canvas.Brush.Color := clYellow
  else
    Sender.Canvas.Brush.Color := clRed;
end;

Shark99 16. Dez 2015 13:55

AW: Farbe der ausgewählten unfokusierten Einträge in einem TListView
 
Das ist leider keine Lösung, weil es nur für nicht selektierte Einträge funktioniert. Die Selektionen bleiben damit blau beim focused Listview und grau ohne Fokus.

Bevor ich die Frage hier stellte war ich zwei Stunden am googeln und habe auch einiges mit Ownerdraw versucht, jedoch entweder ohne Erfolg, oder mit starken Nebenwirkungen (Grafikfehler).

haentschman 16. Dez 2015 14:20

AW: Farbe der ausgewählten unfokusierten Einträge in einem TListView
 
Upps...:oops:
Da meinte ich doch ich hätte das schonmal gemacht und kopierte mal eben einen Code der dem ganzen nahe kam. Jetzt kommt die Erkenntnis das das damals keine Listviews sondern DB Grids waren. Sorry...

haentschman 16. Dez 2015 14:38

AW: Farbe der ausgewählten unfokusierten Einträge in einem TListView
 
Liste der Anhänge anzeigen (Anzahl: 2)
Bitteschön...8-)

Setze mal HideSelection auf True. Dann bleibt bei mir der Balken blau...:thumb: Vom Namen und dem Effekt würde ich es eher andersherum vermuten.:gruebel:

Ergänzung:
Das linke Bild ist unfocusiert mit HideSelection = True.
Das rechte Bild ist das was du hast...unfocusiert mit HideSelection = False.

Neutral General 16. Dez 2015 14:45

AW: Farbe der ausgewählten unfokusierten Einträge in einem TListView
 
Zitat:

Zitat von haentschman (Beitrag 1324633)
Bitteschön...8-)

Ich will jetzt nicht zu böse klingen, aber bist du farbenblind? :duck:
Auf deinem 2. Screenshot ist genau das zu sehen was er nicht haben möchte.
Eine GRAUE Hinterlegung des selektierten Items. Er möchte es in der gleichen Farbe haben wie auf dem linken Screenshot (blau).

haentschman 16. Dez 2015 14:49

AW: Farbe der ausgewählten unfokusierten Einträge in einem TListView
 
:P das linke Bild ist unfocusiert MIT HideSelection = True, das rechte Bild ist unfocusiert OHNE HideSelection = True (das was er hat). Deswegen heißen die Bilder auch MIT und OHNE... :stupid: ok,ok die Namen der Bilder sieht man nur auf dem Hint. :zwinker:

Shark99 16. Dez 2015 15:01

AW: Farbe der ausgewählten unfokusierten Einträge in einem TListView
 
Liste der Anhänge anzeigen (Anzahl: 1)
Funktioniert bei mir nicht.

Hide Selection = True: weiß (keine Selektion zu sehen)
Hide Selection = False: grau

Kann es sein dass es beim linken Bild bei dir blau ist, weil das Edit gar keinen Focus hat (wie im rechten Screenshot).

edit: Beispielprojekt angehängt (Delphi 7)

haentschman 16. Dez 2015 15:10

AW: Farbe der ausgewählten unfokusierten Einträge in einem TListView
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Kann es sein dass es beim linken Bild bei dir blau ist, weil das Edit gar keinen Focus hat (wie im rechten Screenshot).
Nö... weil ich mit Klick auf das Edit den Focus weggezogen habe.

Ich guck mal in deinen QT...

Wie sieht dein Header aus? So wie in den 2 Bildern von mir oder wie W95? Bei deinem Projekt ist Theming ausgeschaltet gewesen. Den grauen Balken habe ich allerdings nicht hinbekommen. (Nachtrag: Jetzt doch ohne Theming) Im D7 mußt du imho ein Manifest einbinden. Wenn es dann immer noch nicht geht bin ich raus...

Shark99 16. Dez 2015 15:42

AW: Farbe der ausgewählten unfokusierten Einträge in einem TListView
 
Liste der Anhänge anzeigen (Anzahl: 2)
XP Manifest einbringen ändert nichts (wieso sollte es, schließlich verhält sich das Explorer Listview bis Windows 10 genauso wie meine Testapp).

Wenn es bei dir geht, kannst du einen Screenshot posten wo der Edit1 Text markiert und fokussiert ist?

Weil die Screenshots die du eben gepostet hast schauen eben wie bei mir aus.

links: blaue Markierung (weil Focus auf Listview)
rechts: keine Markierung (weil kein Focus auf Listview)

Ich will dass es wie im Bild links ausschaut, jedoch auch dann wenn Edit1 fokussiert ist.

edit: Screenshots unter Windows10 mit XP Manifest

Screenshot1. Edit ist fokussiert. Listview zeigt keine Markierung (weil Hideselection ja auch True ist, also korrektes verhalten).
Screenshot2. Edit ist fokussiert. Listview zeigt graue Markierung (Hideselection = False).

p.s.

Könntest du bitte ein kompiliertes Exe von Dir anhängen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.
Seite 1 von 2  1 2      

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