AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

listview selected farbe ändern

Ein Thema von made in Germany · begonnen am 19. Apr 2008 · letzter Beitrag vom 5. Mai 2008
Antwort Antwort
made in Germany

Registriert seit: 28. Apr 2006
50 Beiträge
 
#1

listview selected farbe ändern

  Alt 19. Apr 2008, 18:45
hallo

ich will eine andere farbe für selektierte einträge haben, als das standard-blau.

Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var left1, top1: Integer;
begin
  if Item.Selected then begin
    //item.Focused := false;
    listview1.Canvas.Brush.Color := cllime;
    listview1.Canvas.pen.Color := clred;
  end else
    listview1.Canvas.Brush.Color := clhotlight;
end;
damit markier ich zwar die selektierten einträge, aber die standardmarkierung ist nochmal über meiner eigenen markierung.

kann ich die standardmarkierung irgendwie abschalten?
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: listview selected farbe ändern

  Alt 19. Apr 2008, 19:26
So sollte es gehen:
Delphi-Quellcode:
procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
  Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
  with Sender.Canvas do
  begin
    Brush.Color := clWhite;
    Pen.Color := clBlack;
    if Item.Selected then
    begin
      Brush.Color := clLime;
      Font.Color := clRed;
    end;
    FillRect(Rect);
    TextOut(Rect.Left, Rect.Top, Item.Caption);
  end;
end;
Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
made in Germany

Registriert seit: 28. Apr 2006
50 Beiträge
 
#3

Re: listview selected farbe ändern

  Alt 19. Apr 2008, 19:42
jop, ownerdraw noch auf true setzen, funktioniert.

wie kann ich noch ein anderes item markieren, von dem ich die position (i) weiß?

hab einen ansatz, der jedoch nicht funktioniert
Delphi-Quellcode:
var
recti :TRect;

  if i > -1 then begin
      Canvas.Brush.Color := clred;
      Canvas.Font.Color := clblack;
      recti := Listview1.Items[i].DisplayRect(); // was muss da bei DisplayRect rein?
     Canvas.FillRect(recti);
    Canvas.TextOut(recti.Left, recti.Top, Listview1.i]);
    end;
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: listview selected farbe ändern

  Alt 19. Apr 2008, 19:59
Delphi-Quellcode:
procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
  Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
  with Sender.Canvas do
  begin
    Brush.Color := clWhite;
    Pen.Color := clBlack;
    if Item.Selected then
    begin
      Brush.Color := clLime;
      Font.Color := clRed;
    end;
    if i = Item.Index then
    begin
      Brush.Color := clRed;
      Font.Color := clBlack;
    end;
    FillRect(Rect);
    TextOut(Rect.Left, Rect.Top, Item.Caption);
  end;
end;
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: listview selected farbe ändern

  Alt 20. Apr 2008, 08:17
Das ist nur suboptimal, da dabei Ownerdraw auf True sein muss.
Es werden so z.B Icons, Gridlines etc nicht mehr dargestellt.
D.h man müsste alles selber zeichnen.

Vielleicht lässt sich die Farbe auch anders setzen.

via CN_NOTIFY, CDDS_ITEMPREPAINT etc.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: listview selected farbe ändern

  Alt 20. Apr 2008, 10:38
Bei TListView gilt das Entweder-Oder-Prinzip.
Willst du mehr möglichkeiten so mußt du dir andere Komponenten die VirtualListView, Grid/Tree/ListView-Komponenten von ElPack etc. anschauen und einsetzen
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
made in Germany

Registriert seit: 28. Apr 2006
50 Beiträge
 
#7

Re: listview selected farbe ändern

  Alt 20. Apr 2008, 18:46
wenn die spalte zu kurz für den string ist, wird der text einfach über die andere spalte gelegt.
ich kann auch die subitems nicht ansteuern



    TextOut(Rect.Left, Rect.Top, Item.SubItems.Text);
  Mit Zitat antworten Zitat
made in Germany

Registriert seit: 28. Apr 2006
50 Beiträge
 
#8

Re: listview selected farbe ändern

  Alt 21. Apr 2008, 13:26
kann man mit TDE VirtualListView irgendwie verwenden?
Zitat:
Vielleicht lässt sich die Farbe auch anders setzen.

via CN_NOTIFY, CDDS_ITEMPREPAINT etc.
funktioniert das?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#9

Re: listview selected farbe ändern

  Alt 5. Mai 2008, 23:11
Zitat von made in Germany:
kann man mit TDE VirtualListView irgendwie verwenden?
Zitat:
Vielleicht lässt sich die Farbe auch anders setzen.

via CN_NOTIFY, CDDS_ITEMPREPAINT etc.
funktioniert das?
Habe leider noch nicht herausfinden können, wie das funktioniert.
Vielleicht hat ja jemand eine Lösung.
Thomas
  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 23:03 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