Delphi-PRAXiS

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 Hintergrundfarbe Zeile ListView Inhalt-Abhängig (https://www.delphipraxis.net/18631-hintergrundfarbe-zeile-listview-inhalt-abhaengig.html)

Micha 22. Mär 2004 14:51


Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich habe eine ListView mit 3 Spalten (siehe Anlage).
Der Inhalt der 1. (Datumswert) und 2. Spalte (Name) wird aus einer Datenbank ausgelesen.
In der 3. Spalte die Anzahl der Tage, die zwischem dem Wert der 1. Spalte und dem heutigem Datum liegen.

Nun möchte ich die Einträge rot markieren, die in der Spalte "Tage vergangen" (3. Spalte) einen Wert haben der größer als 21 Tage ist, gelbe Markierung bei > 14 Tage, grün = bis 14 Tage.
Eintragungen in der Zukunft sollen blau markiert sein.

Hier erstmal mein Code für das Berechnen der Tage (3. Spalte):

Delphi-Quellcode:
if datetostr(now) > listitem.Caption then
 begin
  ListItem.SubItems.Add('+ ' + IntToStr(DaysBetween(strtodate(DateToStr(Now)), StrToDate(ListItem.Caption))));
 end
 else
  ListItem.SubItems.Add('- ' + IntToStr(DaysBetween(strtodate(DateToStr(Now)), StrToDate(ListItem.Caption))));
Ich hoff es war verständlich.

Kann mir wer helfen?

kiar 22. Mär 2004 15:15

Re: Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
was ist daysbetween? bei d5 ist das nicht dabei :(

raik

mirage228 22. Mär 2004 15:16

Re: Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
Wenn ich mit nicht Irre heisst die Unit DateUtils...

mfG
mirage228

mirage228 22. Mär 2004 15:17

Re: Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
EDIT: Sorry, falscher Button, Beitrag kann weg...

Micha 22. Mär 2004 15:24

Re: Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
Zitat:

Die Funktion gibt die Anzahl ganzer Tage zwischen den beiden angegebenen TDateTime-Werten zurück.

kiar 22. Mär 2004 15:34

Re: Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
@micha, das habe ich mir gedacht :mrgreen:

das war aber nicht meine frage :shock:

raik

Micha 22. Mär 2004 15:37

Re: Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
Hä? Das war nicht deine Frage:

Zitat:

was ist daysbetween?
und das war die Antwort?! *garNichtsMehrCheck*

kiar 22. Mär 2004 15:39

Re: Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
sorry :oops:

falsch ausgedrückt, in d5 ist die funktion nicht dabei, welche version hast du?

Markus K. 22. Mär 2004 15:40

Re: Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
Hallo kiar,
du musst DateUtil bei uses hinzufügen. Dann müsste er die Funktion erkennen.

Tschüß Markus

kiar 22. Mär 2004 15:45

Re: Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
schreibt doch einfach mal eure version auf d5 kennt weder DAteUtil noch DaysBetween!

Markus K. 22. Mär 2004 15:46

Re: Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
Also ich hab Delphi 5 und bei mir gibt es beides.
Brauchst du ein Beweisfoto? :)

Tschüß Markus

Sharky 23. Mär 2004 07:04

Re: Hintergrundfarbe Zeile ListView Inhalt-Abhängig
 
@Alle: Bitte beim Thema bleiben ;-)

@Micha: Das Zauberwort dürfe .OnCustomDrawItem und .OnCustomDrawSubItem heissen.

Hier ein Beispiel:
Delphi-Quellcode:
var
 farbe : TColor;

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
  i_wert : Integer;
begin
  farbe := clWhite; //Standardfarbe
  i_wert := StrToInt (Item.SubItems.Strings[0]); // Inhalt von Spalte 2
  if i_wert <= 0  then
    farbe := clgreen;
  if i_wert < -14 then
    farbe := clYellow;
  if i_wert < -21 then
    farbe := clred;
  if i_wert > 0 then
    farbe := clblue;
  ListView1.Canvas.Brush.Color := farbe; // Hintergrundfarbe des Items setzen
end;

procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  ListView1.Canvas.Brush.color := farbe; // Hintergrundfarbe der SubItems setzen
end;
In OnCustomDrawItem werte ich den Inhalt des ersten SubItems (wo die Tagesdifferenz steht) aus.
Abhängig davon weise ich einer globalen Variablen einen Farbwert zu.
In OnCustomDrawSubItem verwende ich diese um die Hintergrundfabe zu setzen.
Das solltest Du eigentlich anpassen könnne.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 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