procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (ACol = 0) or (ARow = 0) then
Exit;
if ((ACol = self.FCol) and (ARow = self.FRow)) or ((ACol = self.FCol-1) and (ARow = self.FRow) and (ACol>0)) then
begin
self.StringGrid1.Canvas.Brush.Color := clRed;
end
else
self.StringGrid1.Canvas.Brush.Color := clwhite;
self.StringGrid1.Canvas.FillRect(Rect);
end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
self.FCol := ACol;
self.FRow := ARow;
self.StringGrid1.Refresh;
end;
这样改不能自动刷新相邻的单元格呀,把界面最小化然后再还原还能看到效果了。
if (state * [gdSelected]) = [gdSelected] then
begin
if acol mod 2 = 0 then
begin
DrawCol(arow,acol,rgb(223,249,221),clblue,[],rect) ;
end
else
begin
DrawCol(arow,acol,rgb(223,249,221),clblack,[],rect) ;
newRect:=stringgrid1.CellRect(acol-1,arow);
drawcol(arow,acol-1,rgb(223, 249,221),clblue,[],newRect);
end;
end
else
begin
begin
if (arow = 0 )then
DrawCol(arow,acol,clwhite,clFuchsia,[fsbold],rect)
else if (acol mod 2 = 0) then
DrawCol(arow,acol,clwhite,clblue,[],rect)