delphi中关于dbgrideh的DrawColumnCell事件,窗体重画,让每个单元格以及字体显示不同的颜色

来源:互联网 发布:串口调试助手发送数据 编辑:程序博客网 时间:2024/05/31 06:23

这是我写的一个函数,希望与大家分享。

//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