Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: Zum verzweifeln- Farbe in den Cells

  Alt 14. Okt 2008, 06:57
So geht das aber nicht. Ein Grid kann man nicht einfach so mal eben einfärben, weil es sich eh neu zeichnet. Das DrawCell-Ereignis wird quasi ständig aufgerufen (Maus über das Grid, Fenster bewegen etc.). Und spätestens beim spontanen Neuzeichnen klappt die Logik nicht.

Du musst im Stringrid eine Abfrage einbauen:
Delphi-Quellcode:
Procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  If MustBeRed(aRow, aCol) Then
    PaintRed(Rect)
  Else
    DontPaintRed(Rect)
End;
Die Funktion 'MustBeRed(aRow, aCol)' liefert True/False z.B. dann in Abhängigkeit von 'aRow' (gerade/ungerade) oder eben in Abhängigkeit irgendwelcher Daten in der Zelle 'StringGrid.Cells[aRow,aCol]' oder oder oder.

Um z.B. alle Zeilen rot zu färben, die in der 2.Spalte ein 'X' stehen zu haben, wäre die Funktion so:
Delphi-Quellcode:
Function TForm1.MostBeRed (aRow, aCol : Integer) : Boolean;
Begin
  Result := (StringGrid.Cells[aRow,aCol] = 'X')
End;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat