Procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
Rect: TRect; State: TGridDrawState);
Procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
Rect: TRect; State: TGridDrawState);
Delphi-Quellcode:
Procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
Rect: TRect; State: TGridDrawState);
Var
s : String;
Begin
With Sender As TStringGrid Do
Begin
If (aCol < FixedCols) Or
(aRow < FixedRows) Then Exit; //Fixed col / Fixed row => Exit
If (aCol = CellX) And (aRow = CellY) Then // Wenn zu zeichnende Zelle den Koord. entspricht ...
Begin
s := Cells[aCol, aRow];
Canvas.Brush.Color := clRed;
Canvas.FillRect(Rect);
DrawText(Canvas.Handle, PChar(s), Length(s), Rect, DT_LEFT);
End
Else
Begin // Wenn nicht dann in der Farbe des Stringgrid einfärben (altes Rot weg)
s := Cells[aCol, aRow];
Canvas.Brush.Color := Color;
Canvas.FillRect(Rect);
DrawText(Canvas.Handle, PChar(s), Length(s), Rect, DT_LEFT);
End;
End;
End;
CellX & CellY sind private Variablen deines Forms und bekommen beim OnClick des Buttons:
Delphi-Quellcode:
CellX := StringGrid1.Col;
CellY := StringGrid1.Row;
StringGrid1.Repaint;
Da alle Zellen bis auf die "Fixed"-zellen überzeichnet werden kann es bei großen Grids ziemlich aufwending werden!