[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    {
    Hi Moris

    > Can anyon help me. I would like to alter the colour of a cell in a
    > stringgrid if certain criteria are met. Can this be done and if so how

    You have to write your own OnDrawCell procedure.
    Here is some code I wrote a while back that did the trick. It's too
    much but you might find something useful in there.

    }

    procedure TLongChart.StringGrid1DrawCell(Sender: TObject; Col,
      Row: Longint; Rect: TRect; State: TGridDrawState);
    var
    OldColor : TColor;
    OldBrush : TBrush;
    begin with StringGrid1.Canvas do begin
        OldColor := Font.Color;
        OldBrush := Brush;

       {paint fridays}
       if StringGrid1.Cells[Col,1] = 'Fr' then begin
       Brush.Color := $02aaaaaa; {light gray}
       FillRect(Rect);
       Font.Color := clWhite;
       TextOut(Rect.Left+2,Rect.Top+2,StringGrid1.Cells[Col,Row]);
       end;

       {paint each alternating month}
       if (Row = 0) and (Col > 0) then begin
       if (Odd(StrToIntDef(StringGrid1.Cells[Col,31],0))) then
       Brush.Color := clBlue
       else
       Brush.Color := clFuchsia;

       FillRect(Rect);
       Font.Color := clWhite;
       TextOut(Rect.Left+2,Rect.Top+2,StringGrid1.Cells[Col,Row]);
       end;

       {paint days of the week}
       if (Row = 1) and (Col > 0) then begin
       if StringGrid1.Cells[Col,1] = 'Fr' then
       Brush.Color := clTeal else
       Brush.Color := clAqua;
       FillRect(Rect);
       if StringGrid1.Cells[Col,1] = 'Fr' then
       Font.Color := clWhite else
       Font.Color := clBlack;

       TextOut(Rect.Left+2,Rect.Top+2,StringGrid1.Cells[Col,Row]);
       end;

       Font.Color := OldColor;
       Brush := OldBrush;

    end;
    end;

    ---------------------------------------------------
    Tony Popiel
    popiel@emirates.net.ae
    United Arab Emirates
    ---------------------------------------------------

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]