procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var s: String; R: TRect; begin if ARow = 3 then begin case ACol of 1: TStringGrid(Sender).Canvas.Brush.Color := clGreen; 2: TStringGrid(Sender).Canvas.Brush.Color := clRed; 3: TStringGrid(Sender).Canvas.Brush.Color := clYellow; 4: TStringGrid(Sender).Canvas.Brush.Color := clBlue; end; S := TStringGrid(Sender).Cells[ACol, ARow]; R := TStringGrid(Sender).CellRect(ACol, ARow); TStringGrid(Sender).Canvas.FillRect(R); TStringGrid(Sender).Canvas.TextOut(R.Left, R.Top, S); end; end;
procedure SetGridColor(ARow,ACol: Integer;ColorJ,ColorO: TColor; Rect: TRect;StrGrid: TStringGrid); var strValue: String; begin with StrGrid do begin //画背景 if (ARow > 0) and (ACol > 0) then begin if (ARow mod 2 = 0) then Canvas.Brush.Color := ColorO else Canvas.Brush.Color := ColorJ; if (ARow=StrGrid.Row) then Canvas.Brush.Color := clMoneyGreen;//clMenuHighlight; Canvas.FillRect(Rect); end; //计算显示在矩形框中的左上角位置 strValue := Cells[ACol,ARow]; Canvas.Font := Font; //在矩形框中写值 Canvas.TextRect(Rect,Rect.Left+5,Rect.Top+(Rect.Bottom-Rect.Top-Canvas.TextHeight(strValue)) div 2,strValue); end; end;
Rect: TRect; State: TGridDrawState);
var
s: String;
R: TRect;
begin
if ARow = 3 then
begin
case ACol of
1: TStringGrid(Sender).Canvas.Brush.Color := clGreen;
2: TStringGrid(Sender).Canvas.Brush.Color := clRed;
3: TStringGrid(Sender).Canvas.Brush.Color := clYellow;
4: TStringGrid(Sender).Canvas.Brush.Color := clBlue;
end;
S := TStringGrid(Sender).Cells[ACol, ARow];
R := TStringGrid(Sender).CellRect(ACol, ARow);
TStringGrid(Sender).Canvas.FillRect(R);
TStringGrid(Sender).Canvas.TextOut(R.Left, R.Top, S);
end;
end;
var
strValue: String;
begin
with StrGrid do
begin
//画背景
if (ARow > 0) and (ACol > 0) then
begin
if (ARow mod 2 = 0) then
Canvas.Brush.Color := ColorO
else
Canvas.Brush.Color := ColorJ;
if (ARow=StrGrid.Row) then Canvas.Brush.Color := clMoneyGreen;//clMenuHighlight;
Canvas.FillRect(Rect);
end;
//计算显示在矩形框中的左上角位置
strValue := Cells[ACol,ARow];
Canvas.Font := Font;
//在矩形框中写值
Canvas.TextRect(Rect,Rect.Left+5,Rect.Top+(Rect.Bottom-Rect.Top-Canvas.TextHeight(strValue)) div 2,strValue);
end;
end;