在OnDrawColumnCell事件里:
procedure TDm_MainForm.DBGrid_CellDataViewDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
TmpStr: string;
TmpRect: TRect;
TmpGrid: TDBGrid;
TmpStatus: Integer;
TmpDataSet: TDataSet;
begin
TmpDataSet := (Sender as TDBGrid).DataSource.DataSet;
if (FCurCellDB <> '') and (TmpDataSet = FQuery) and (TmpDataSet.RecordCount >
0) then
begin
TmpGrid := Sender as TDBGrid;
TmpGrid.Canvas.FillRect(Rect);
TmpRect := Rect;
TmpStr := '';
case DataCol of
1: {A字段}
if TmpDataSet.FieldbyName('A').AsString = 'ABC' then
TmpStr := 'DEF';
.......
9: {'tdd_btime'}
TmpStr := SecToTime(TmpDataSet.FieldbyName('tdd_btime').AsInteger);
else
TmpGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
exit;
end;
DrawText(TmpGrid.Canvas.Handle,
pChar(TmpStr),
Length(TmpStr),
TmpRect, // 包含文字的矩形
DT_CENTER or // 水平居中
DT_SINGLELINE or // 不折行
DT_VCENTER); // 垂直居中
end;
end;