Dbgrid 按条件 显示颜色(字段属日期时间型的会出错)解决思路
Dbgrid 按条件 显示颜色(字段属日期时间型的会出错)
如题。代码如下:
procedure TReport_info.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var tj: Boolean;
begin
{本模块:已打印的,显示黄色}
inherited;
with TMyCustomDBGrid(Sender) do
begin
tj:=DataLink.Fields[29].AsBoolean;
if tj then
Canvas.Brush.Color:=clYellow;
Canvas.Font.Color:=clBlack;
canvas.FillRect(rect);
canvas.TextOut(rect.Left+4,rect.Top+4,column.Field.AsString); // 当显示字段为日期时间型的会出错
end;
end;
非常感谢您的发言。
------解决方案--------------------
procedure TReport_info.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var tj: Boolean;
begin
{本模块:已打印的,显示黄色}
inherited;
with TMyCustomDBGrid(Sender) do
begin
tj:=DataLink.Fields[29].AsBoolean;
if tj then
Canvas.Brush.Color:=clYellow;
Canvas.Font.Color:=clBlack;
canvas.FillRect(rect);
if Column.Field.DataType in [ftDate,ftDateTime] then
canvas.TextOut(rect.Left4,rect.Top+4,FormatDateTime('yyyy-mm-dd hh:nn:ss',column.Field.AsDateTime))
else
canvas.TextOut(rect.Left+4,rect.Top+4,column.Field.AsString); // 当显示字段为日期时间型的会出错
end;
end;
非常感谢您的发言。
如题。代码如下:
procedure TReport_info.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var tj: Boolean;
begin
{本模块:已打印的,显示黄色}
inherited;
with TMyCustomDBGrid(Sender) do
begin
tj:=DataLink.Fields[29].AsBoolean;
if tj then
Canvas.Brush.Color:=clYellow;
Canvas.Font.Color:=clBlack;
canvas.FillRect(rect);
canvas.TextOut(rect.Left+4,rect.Top+4,column.Field.AsString); // 当显示字段为日期时间型的会出错
end;
end;
非常感谢您的发言。
------解决方案--------------------
procedure TReport_info.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var tj: Boolean;
begin
{本模块:已打印的,显示黄色}
inherited;
with TMyCustomDBGrid(Sender) do
begin
tj:=DataLink.Fields[29].AsBoolean;
if tj then
Canvas.Brush.Color:=clYellow;
Canvas.Font.Color:=clBlack;
canvas.FillRect(rect);
if Column.Field.DataType in [ftDate,ftDateTime] then
canvas.TextOut(rect.Left4,rect.Top+4,FormatDateTime('yyyy-mm-dd hh:nn:ss',column.Field.AsDateTime))
else
canvas.TextOut(rect.Left+4,rect.Top+4,column.Field.AsString); // 当显示字段为日期时间型的会出错
end;
end;
非常感谢您的发言。