AGB  ·  Datenschutz  ·  Impressum  







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

Listview bestimte Zeilen faerben

Ein Thema von lucius · begonnen am 13. Okt 2005 · letzter Beitrag vom 13. Okt 2005
Antwort Antwort
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#1

Listview bestimte Zeilen faerben

  Alt 13. Okt 2005, 10:46
Hallo zusammen ich habe ne Listview mit 3 Spalten, in der 2e Spalte stehen die Werte VCD, SVCD und DVD.
Jetzt moechte ich das jede Zeile wo DVD drin steht rot markiert wird.
Habe auch schon was code:
Delphi-Quellcode:
procedure TForm.ListViewCustomDrawSubItem(Sender: TCustomListView;
          Item: TListItem; State: TCustomDrawState; var DefaultDraw: boolean);
begin
    if (Item.SubItems[1]='DVD') then
    Sender.Canvas.Brush.Color:=clRed;
end;
Aber irgendwie kriege ich das mit dem Aufruf nicht hin:
Delphi-Quellcode:
if Item.SubItems[1]='DVDthen
  ListViewCustomDrawSubItem(listview, ????, ????, FALSE);
Was kommt jetzt genau bei den Fragezeichen und stimmt der code ueberhaupt?
Danke im voraus.
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Listview bestimte Zeilen faerben

  Alt 13. Okt 2005, 10:54
Zitat von lucius:
Delphi-Quellcode:
if Item.SubItems[1]='DVDthen
  ListViewCustomDrawSubItem(listview, ????, ????, FALSE);
Dieser Aufruf ist überflüssig, da das Listview das Ereignis selber aufruft, wenn die Subitems gezeichnet werden.
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Listview bestimte Zeilen faerben

  Alt 13. Okt 2005, 11:04
Ok aber irgendwie habe ich nen Fehler gemacht glaube ich er faerbt Sie nicht Rot.

Item.SubItems[1]='DVD' Sitzte ich ueberhaupt in der richtigen Spalte?
0 ist doch die 1e Spalte oder?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Listview bestimte Zeilen faerben

  Alt 13. Okt 2005, 11:17
Hallo lucius,

falsche Spalte, falsches Ereignis. Nach deiner Anforderung musst du mit OnCustomDrawItem arbeiten:

Delphi-Quellcode:
procedure TMainForm.ListViewCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Item.SubItems[1] = 'DVD-R'
    then Sender.Canvas.Brush.Color := clRed
    else Sender.Canvas.Brush.Color := clWindow;
end;
Grüße vom marabu

Nachtrag: erste sichtbare Spalte ist die Item.Caption und der Index für die SubItems läuft ab 0. Die zweite sichtbare Spalte ist dann SubItem[0], falls du die ItemCaption nicht schon berücksichtigt hast...
  Mit Zitat antworten Zitat
Achtzig

Registriert seit: 10. Okt 2005
Ort: Berlin
8 Beiträge
 
#5

Re: Listview bestimte Zeilen faerben

  Alt 13. Okt 2005, 11:24
Was die ????-Parameter bedeuten beantwortet sich eigendlich von selbst (Sender,Item,State,DefaultDraw).

Wenn Du nicht willst, das die Komponente den Text einträgt - also weiterzeichnet - kannst Du DefaultDraw auf False setzen.

State bestimmt den aktuellen Status (cdsSelected..cdsIndeterminate). Wenn zB. eine Zeile selektiert ist, wird cdsSelected übergeben (nicht von Dir sondern von der TListView-Komponente, wie MarcoWarm schon erwähnte). Eine selektierte Zeile hat normalerweise einen blauen Hintergrund.
  Mit Zitat antworten Zitat
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Listview bestimte Zeilen faerben

  Alt 13. Okt 2005, 11:32
Hallo marabu, also irgendwie klapt das nicht, ich habe das in einer Schleife verarbeitet und ich moechte durch alle Items gehen bis in Spalte 2 'DVD' gefunden wird.
Zitat:
___________| Spalte 1 | Spalte 2 | Spalte 3 |
Items[0] > | Caption | SubItems[0] | SubItems[1] |
Items[1] > | Caption | SubItems[0] | SubItems[1] |
Items[2] > | Caption | SubItems[0] | SubItems[1] |
Delphi-Quellcode:
procedure TMainForm.ListViewCustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: boolean);
  var
  i: integer;
begin
for i := 0 to listview.Items.Count -1 do
   begin
   if listview.Items[i].SubItems[1] = 'DVD'
    then Sender.Canvas.Brush.Color := clRed
    else Sender.Canvas.Brush.Color := clWindow
   end;
end;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Listview bestimte Zeilen faerben

  Alt 13. Okt 2005, 11:40
Gib einfach mal meinen Code über den Objektinspektor beim OnCustomDrawItem-Event deiner ListView ein und schau dir das Ergebnis an. Deaktiviere vorher noch deinen Code bei OnCustomDrawSubItem. Und wenn du Semigrafik oder Tabellen in deinem Beitrag verwendest, dann innerhalb von pre tags (natürlich in eckigen Klammern.

Code:
So:
           | Spalte 1 | Spalte 2    | Spalte 3    |
Items[0] > | Caption | SubItems[0] | SubItems[1] |
Items[1] > | Caption | SubItems[0] | SubItems[1] |
Items[2] > | Caption | SubItems[0] | SubItems[1] |
marabu
  Mit Zitat antworten Zitat
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Listview bestimte Zeilen faerben

  Alt 13. Okt 2005, 11:50
Es hat geklapt, ging einfacher wie ich dachte, wieder was gelernt und nicht zu Tief graben
Danke marabu, geht sowas auch mit der Font Farbe statt ZeilenFarbe?
  Mit Zitat antworten Zitat
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Listview bestimte Zeilen faerben

  Alt 13. Okt 2005, 11:56
Habs schon: statt Canvas.Brush.Color, Canvas.Font.Color
  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 22:38 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