Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#4

Re: TStringGrid.Ondrawcell (Parameter?)

  Alt 12. Jan 2004, 16:51
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!
  Mit Zitat antworten Zitat