这是我写的一个函数,希望与大家分享。
//Delphi中关于dbgrideh的DrawColumnCell事件,窗体重画,
// 让每个单元格以及字体显示不同的颜色//columns.items[8]为DBgrideh的第八列; canvas.TextWidth取字符串的宽度;显示垂直居中
procedure Tfrmftp.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
begin
with Sender as TDBGridEh do
begin
if Column.FieldName='IsUpload' then
begin
if (DataSource.DataSet.FieldByName('IsUpload').AsString='上传失败') or
(DataSource.DataSet.FieldByName('IsUpload').AsString='文件已存在') then
begin
//canvas.brush.color :=clwhite;//设置单元格的背景色
Canvas.Font.Color :=clRed; //设置单元格的字体颜色
Canvas.Font.Style :=[fsBold];// 设置单元格为粗体
Canvas.FillRect(Rect);
//Canvas.TextRect(Rect,Rect.Left,Rect.Top,Column.Field.AsString);
{垂直居中显示}
Canvas.TextRect(Rect,Rect.Left+((columns.Items[8].Width-(Canvas.TextWidth(Column.Field.AsString))) div 2),(Rect.bottom-rect.Top-abs(Columns.Items[8].Font.Height)) div 2 +rect.Top,Column.Field.AsString);
end;
if (DataSource.DataSet.FieldByName('IsUpload').AsString='√') or
(DataSource.DataSet.FieldByName('IsUpload').AsString='覆盖成功') then
begin
Canvas.Font.Color :=clGreen;
Canvas.Font.Style :=[fsBold];
Canvas.FillRect(Rect);
// Canvas.TextRect(Rect,Rect.Left,Rect.Top,Column.Field.AsString);
{垂直居中显示}
Canvas.TextRect(Rect,Rect.Left+((columns.Items[8].Width-(Canvas.TextWidth(Column.Field.AsString))) div 2),(Rect.bottom-rect.Top-abs(Columns.Items[8].Font.Height)) div 2 +rect.Top,Column.Field.AsString);
end;
end;
end;
end;
如果转载请说明文字出处 Lenovo455