恩,这是个头痛的问题,我知道的目前最方便的解决办法,如下:
在OnDrawCell事件里
procedure TFrmTestEdit.SG_CC_ConfigDrawCell(Sender: TObject;
ACol,
ARow: Integer;
Rect: TRect;
State: TGridDrawState);
var
tmpGrid: TStringGrid;
begin
tmpGrid := (Sender as TStringGrid);
if gdSelected in State then
{屏蔽默认的选中格 yyl 07.12.18}
begin
tmpGrid.Canvas.Brush.Color := tmpGrid.Color;
tmpGrid.Canvas.Font.Color := tmpGrid.Font.Color;
end;
tmpGrid.Canvas.FillRect(Rect);
DrawText(tmpGrid.Canvas.Handle,
pChar(tmpGrid.Cells[ACol, ARow]),
Length(tmpGrid.Cells[ACol, ARow]),
Rect, // 包含文字的矩形
DT_CENTER or {DT_CENTER,DT_LEFT} // 水平居中
DT_SINGLELINE or // 不折行
DT_VCENTER) // 垂直居中
end;
重画选中格的颜色,和没选中的一样,就看不出来了。