AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wenn das Fälligkeitsdatum erreicht ist soll Zelle im Stringgrid rot angezeigt werden
Thema durchsuchen
Ansicht
Themen-Optionen

Wenn das Fälligkeitsdatum erreicht ist soll Zelle im Stringgrid rot angezeigt werden

Ein Thema von Waldow · begonnen am 7. Jun 2010 · letzter Beitrag vom 15. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2      
Waldow

Registriert seit: 7. Jun 2010
16 Beiträge
 
#1

Wenn das Fälligkeitsdatum erreicht ist soll Zelle im Stringgrid rot angezeigt werden

  Alt 7. Jun 2010, 23:44
Hallo!
Ich habe in einem Stringgrid ein Rechnungsdatum und ein Fälligkeitsdatum stehen.
Wenn das Fälligkeitsdatum erreicht ist soll die Zelle rot angezeigt werden.

Mit meinem Code wird aber immer die ganze Spalte rot.
Was mache ich falsch?

Delphi-Quellcode:
procedure TFRechnung.AdvStringGrid3DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  Datumrechnung, Datumrechungfaellig: TDate;
  I: Integer;
begin
  with (Sender as TAdvStringGrid) do
  begin
    for i := 1 to AdvStringGrid3.rowcount - 2 do begin
      Datumrechnung := StrToDate(AdvStringGrid3.Cells[9, i]);
      Datumrechungfaellig := StrToDate(AdvStringGrid3.Cells[11, i]);
      if
        Datumrechungfaellig = Datumrechnung + 14 then
        AdvStringGrid3.Colors[11, i] := clred;
    end;
  end;
end;
Um mein Problem zu verdeutlichen sende ich eine Grafik mit.
Angehängte Grafiken
Dateityp: gif screen .gif (9,8 KB, 53x aufgerufen)

Geändert von mkinzler ( 8. Jun 2010 um 06:29 Uhr) Grund: Code-Tag um Delphi erweitert
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Im Stringgrid Datum vergleichen

  Alt 8. Jun 2010, 00:45
Äh, was hat der Thementitel mit dem Problem zu tun? Offensichtlich schaffst du es doch schon die Daten zu vergleichen. Du darfst eben nur eine Zelle färben und nicht die ganze Zeile. Dazzu musst du eben gucken mit welcher Eigenschaft der Komponente du eine Zelle ansprichst. Ich kenne das AdvStringGrid nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Im Stringgrid Datum vergleichen

  Alt 8. Jun 2010, 01:42
Zumal wird beim Zeichnen einer jeden Zelle dein Code ausgeführt (schaue mal in allen Zeilen nach).

Die Methode gibt dir doch mit, welche Zelle jetzt gerade gezeichnet werden soll ACol, ARow : Integer
Delphi-Quellcode:
if ACol = 11 then
  with TAdvStringGrid( Sender ) do
    begin
      Colors[ ACol, ARow ] := clRed;
    end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Waldow

Registriert seit: 7. Jun 2010
16 Beiträge
 
#4

AW: Im Stringgrid Datum vergleichen

  Alt 8. Jun 2010, 01:58
Hallo und danke.
@Luckie: Habe den Titel geändert.
@Sir Rufo: Okay das färbt auch die ganze Spalte.
Wie muss ich das mit dem ausrechnen/anzeigen der Farbe in Kombination mit dem Datum machen?
Im ColumnHeader steht Wort "Datum" und "Fällig" ich dachte, dass ich deshalb mit
Delphi-Quellcode:
for i := 1 to AdvStringGrid3.rowcount - 2 do begin
      Datumrechnung := StrToDate(AdvStringGrid3.Cells[9, i]);
      Datumrechungfaellig := StrToDate(AdvStringGrid3.Cells[11, i]);
arbeiten muss.

Sonst gibt Delphi Fehlermeldungen aus weil das Wort "Datum" kein gültiges Datum ist.

Gruss
Waldow

Geändert von Waldow ( 8. Jun 2010 um 07:42 Uhr) Grund: Code ist Delphi
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Im Stringgrid Datum vergleichen

  Alt 8. Jun 2010, 02:03
@Luckie: steht doch in meinem ersten Post.
Ja, jetzt passt der Thementitel zum Problem. Vorher stand da was anderes.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
172 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wenn das Fälligkeitsdatum erreicht ist soll Zelle im Stringgrid rot angezeigt wer

  Alt 8. Jun 2010, 08:52
Moin Waldow,

das müsste so (oder so ähnlich ) funktionieren:
(Bei deinem Ansatz würde er imho beim Zeichnen jeder Zelle immer alle Zeilen durchgehen)
Delphi-Quellcode:
if (ARow <> 0) and (ACol in [9,11]) then
begin
  Colors[ ACol, ARow ] := clRed;
end;
Micha
  Mit Zitat antworten Zitat
olaf

Registriert seit: 4. Mai 2009
Ort: Iserlohn
82 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: Wenn das Fälligkeitsdatum erreicht ist soll Zelle im Stringgrid rot angezeigt wer

  Alt 9. Jun 2010, 09:25
Hallo,

so funktioniert das mit TMS nie. Setze deinen Code unter GetCellColor.

procedure..
if ARow > 0 then //Spaltenüberschriften nicht mit einbeziehen
begin
if acol=1 then //Spalte mit deinem Rechnungsdatum
begin
if (AdvGrid1.cells[2], arow] =rdatum+14) then //Fälligkeitspalte
Color:=clred;
end;
end;


Die Spaltennummern mußt du selber anpassen. Ich denke das ist kein Problem.

Olaf
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#8

AW: Wenn das Fälligkeitsdatum erreicht ist soll Zelle im Stringgrid rot angezeigt wer

  Alt 10. Jun 2010, 19:50
Du kannst die Abfrage der Zeilennummer auch umgehen und mit TryStrToDate(const S: string; out Value: TDateTime): Boolean arbeiten. Gibt true zurück wenn in S ein "Datum" steht.

aber bei TMS gibt es auch

Delphi-Quellcode:
  
  AdvStringGrid1.FixedFooters
  AdvStringGrid1.FixedRows
  AdvStringGrid1.FixedCols
Das sind deine Start bzw. End-Spalten/Zeilen also:

if ARow > AdvStringGrid1.FixedRows then
  Mit Zitat antworten Zitat
Waldow

Registriert seit: 7. Jun 2010
16 Beiträge
 
#9

AW: Wenn das Fälligkeitsdatum erreicht ist soll Zelle im Stringgrid rot angezeigt wer

  Alt 15. Jun 2010, 11:14
Danke, wie muss sich ich das mit dem FixedFooters machen um diese Reihe auszuschliessen?

if AdvStringGrid3.FixedFooters < 1 Damit funktioniert es nicht.

Gruss
waldow
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
172 Beiträge
 
Delphi 12 Athens
 
#10

AW: Wenn das Fälligkeitsdatum erreicht ist soll Zelle im Stringgrid rot angezeigt wer

  Alt 15. Jun 2010, 11:45
Versuch es doch mal mit
if ARow < AdvStringGrid1.FixedFooters then
Micha
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz