AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Gelöst: Algorithmus zum Ermitteln bestimmter StringGrid-Zellen
Thema durchsuchen
Ansicht
Themen-Optionen

Gelöst: Algorithmus zum Ermitteln bestimmter StringGrid-Zellen

Ein Thema von Perlsau · begonnen am 29. Jul 2012 · letzter Beitrag vom 29. Jul 2012
 
Perlsau
(Gast)

n/a Beiträge
 
#1

Gelöst: Algorithmus zum Ermitteln bestimmter StringGrid-Zellen

  Alt 29. Jul 2012, 09:34
Moin allerseits, heute hab ich ein eher kniffliges Problem, dessen Lösung mir partout nicht einfallen will:

Ich bastle mir gerade eine eigene Terminverwaltung mit einem StringGrid (TjvStringGrid). Via OnDrawCell manipuliere ich gewisse Zellen hinsichtlich Hintergrund- und Schriftfarbe. So sollen u.a. auch die Tage, die nicht zum aktuellen Monat gehören (ein paar in Row 1 und ein paar in der letzten Zeile) anders gefärbt werden als die zum Monat gehörenden Tage. Die Schriftfarbe dieser Zellen ist auf rot eingestellt, wie man am angehängten Screenshot sehen kann. Zu meiner Verwirrung werden die ersten Tage des nächsten Monats im Gegensatz zu den letzten Tagen des vorherigen Monats nicht rot dargestellt.

Hier einmal die OnDrawCell-Procedure:
Delphi-Quellcode:
procedure TFormTermin.StrGrid_MonatDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
VAR
   p : Integer;
   Aus : String;

begin
     // Farbliche Markierung der Zellen mit einem Termineintrag
     Aus := StrGrid_Monat.Cells[ACol,ARow]; // Zelle auslesen
     p := POS(CHR(10),Aus); // nach Zeilenumbruch suchen
     IF p > 0 THEN // wenn Zeilenumbruch gefunden dann
        BEGIN
             IF (ACol > 0) AND (ARow > 0) THEN // wenn Spalte > 0 AND Zeile > 0 dann
             BEGIN
                  StrGrid_Monat.Canvas.Font.Color := Konst.Benutzer.TermStrGridEinColorFont; // Schriftfarbe setzen
                  StrGrid_Monat.Canvas.Brush.Color := Konst.Benutzer.TermStrGridEinColor; // Hintergrundfarbe setzen
                  StrGrid_Monat.Canvas.FillRect(Rect); // zeichnen
             END;
        END ELSE // wenn kein Zeilenumbruch gefunden
        BEGIN
             IF (ACol > 0) AND (ARow > 0) THEN
             BEGIN
                  StrGrid_Monat.Canvas.Font.Color := Benutzer.TermStrGridColorFont;
                  StrGrid_Monat.Canvas.Brush.Color := Konst.Benutzer.TermStrGridColor;
                  StrGrid_Monat.Canvas.FillRect(Rect);
             END;
        END;

     // Aus enthält noch immer den Zellen-Inhalt
     IF Aus <> 'THEN // wenn Aus nicht leer ist
     BEGIN
          IF TryStrToInt(Aus,p) THEN // wenn Aus eine Zahl enthält
             IF ((ARow = 1) AND (ACol > 0) AND (p > 7)) OR // wenn Zeile 1 AND Spalte > 0 AND Tag > 7 oder
                ((ARow = StrGrid_Monat.ColCount -1) AND (ACol > 0) AND (p < 7)) THEN // wenn letzte Zeile AND Spalte > 0 AND Tag < 7
                StrGrid_Monat.Canvas.Font.Color := Konst.Benutzer.TermStrGridOtherColor;
     END;

     IF ARow > 0 THEN
        StrGridAusrichtung(StrGrid_Monat, Rect, ACol, ARow, taLeftJustify, TRUE) ELSE
        StrGridAusrichtung(StrGrid_Monat, Rect, ACol, ARow, taCenter, False);

     IF ACol = 0 THEN StrGridAusrichtung(StrGrid_Monat, Rect, ACol, ARow, taRightJustify, FALSE);
Soweit ich das beurteilen kann, ist mein Algorithmus, der die ersten Tage des nächsten Monats ermitteln soll, stimmig. Aber er funktioniert nicht. Also stimmt was nicht. Nur was? Sicher wieder irgend so ein dummer Fehler, den ich vor läuter Bäumen nicht sehe ...
Angehängte Grafiken
Dateityp: jpg Terminverwaltung.jpg (170,8 KB, 46x aufgerufen)

Geändert von Perlsau (29. Jul 2012 um 10:26 Uhr) Grund: Gelöst
  Mit Zitat antworten Zitat
 


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 12:28 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