在OnDrawCell事件中处理背景色。程序如下: //将第二列背景变为红色。 procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if not((acol=1) and (arow>=stringgrid1.fixedrows)) then exit; with stringgrid1 do begin canvas.Brush.color:=clRed; canvas.FillRect(Rect); canvas.TextOut(rect.left+2,rect.top+2,cells[acol,arow]) end; end;
with stringgrid1 do begin canvas.Brush.color:=clRed; canvas.FillRect(Rect); canvas.TextOut(rect.left+2,rect.top+2,cells[acol,arow]) end;在這裹再加下不同行列的判斷就可達到你的: 分别控制StringGrid1不同“网格线”的Color
StringGrid1.ColWidths[i] := 100;
//将第二列背景变为红色。
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if not((acol=1) and (arow>=stringgrid1.fixedrows)) then exit;
with stringgrid1 do
begin
canvas.Brush.color:=clRed;
canvas.FillRect(Rect);
canvas.TextOut(rect.left+2,rect.top+2,cells[acol,arow])
end;
end;
begin
canvas.Brush.color:=clRed;
canvas.FillRect(Rect);
canvas.TextOut(rect.left+2,rect.top+2,cells[acol,arow])
end;在這裹再加下不同行列的判斷就可達到你的:
分别控制StringGrid1不同“网格线”的Color
sorry, 是什麼啊??我還是不知道什麼分別
http://community.csdn.net/Expert/topic/3181/3181643.xml?temp=.6880152
你会明白的
StringGrid1.ColWidths[2] := 50;
StringGrid1.ColWidths[3] := 10;
function ZoomRect(mRect: TRect; mZoom: Integer): TRect;
begin
Result.Left := mRect.Left - mZoom;
Result.Right := mRect.Right + mZoom;
Result.Top := mRect.Top - mZoom;
Result.Bottom := mRect.Bottom + mZoom;
end; { ZoomRect }type
TStringGridEx = class(TStringGrid);procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
const
cPenWidth = 2;
begin
if ACol < TStringGrid(Sender).FixedCols then Exit;
if ARow < TStringGrid(Sender).FixedRows then Exit;
TStringGrid(Sender).OnDrawCell := nil;
try
TStringGridEx(Sender).DrawCell(ACol, ARow, Rect, State);
finally
TStringGrid(Sender).OnDrawCell := StringGrid1DrawCell;
end;
TStringGrid(Sender).Canvas.Brush.Style := bsClear;
TStringGrid(Sender).Canvas.Pen.Width := cPenWidth;
TStringGrid(Sender).Canvas.Pen.Color := clRed;
TStringGrid(Sender).Canvas.Rectangle(ZoomRect(Rect, 1)); if ACol = 2 then
begin
TStringGrid(Sender).Canvas.Pen.Color := clGreen;
TStringGrid(Sender).Canvas.MoveTo(Rect.Left - 1, Rect.Top - 1);
TStringGrid(Sender).Canvas.LineTo(Rect.Left - 1, Rect.Bottom + 1);
end;
if ACol = 1 then
begin
TStringGrid(Sender).Canvas.Pen.Color := clGreen;
TStringGrid(Sender).Canvas.MoveTo(Rect.Right, Rect.Top - 1);
TStringGrid(Sender).Canvas.LineTo(Rect.Right, Rect.Bottom + 1);
end;
end;