canvas教程

delphi编程语言程序开发技术文章

字号+ 作者:H5之家 来源:H5之家 2017-07-05 17:01 我要评论( )

1、根据条件更改某一单元格的颜色[delphi]procedure TMainFrm.First_DGDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn

> 软件开发 > Delphi > 正文 delphi 更改DBGrid 颜色技巧 2013-06-05 08:49:04               我要投稿

1、根据条件更改某一单元格的颜色


[delphi]
procedure TMainFrm.First_DGDrawColumnCell(Sender: TObject; 
  const Rect: TRect; DataCol: Integer; Column: TColumn; 
  State: TGridDrawState); 
begin 
  if DM.FirstListStatus.AsString='生产' then begin 
     First_DG.Canvas.Font.Color:=clGreen 
   end 
  else begin 
     First_DG.Canvas.Font.Color:=clRed; 
  end; 
  if DataCol = 4 then 
     First_DG.DefaultDrawColumnCell(Rect,DataCol,Column,State); 
end; 

procedure TMainFrm.First_DGDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  if DM.FirstListStatus.AsString='生产' then begin
     First_DG.Canvas.Font.Color:=clGreen
   end
  else begin
     First_DG.Canvas.Font.Color:=clRed;
  end;
  if DataCol = 4 then
     First_DG.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

2、多种改变方式


[delphi]
<SPAN style="COLOR: #000000">procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject; 
  const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState); 
var i :integer; 
begin 
  if gdSelected in State then Exit; 
//定义表头的字体和背景颜色:  
    for i :=0 to (Sender as TDBGrid).Columns.Count-1 do 
    begin 
      (Sender as TDBGrid).Columns[i].Title.Font.Name :='宋体'; //字体  
      (Sender as TDBGrid).Columns[i].Title.Font.Size :=9; //字体大小  
      (Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000ff; //字体颜色(红色)  
      (Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00; //背景色(绿色)  
    end; 
//隔行改变网格背景色:  
  if Query1.RecNo mod 2 = 0 then 
    (Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色  
  else 
    (Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色  
//定义网格线的颜色:  
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); 
  with (Sender as TDBGrid).Canvas do //画 cell 的边框  
  begin 
    Pen.Color := $00ff0000; //定义画笔颜色(蓝色)  
    MoveTo(Rect.Left, Rect.Bottom); //画笔定位  
    LineTo(Rect.Right, Rect.Bottom); //画蓝色的横线  
    Pen.Color := $0000ff00; //定义画笔颜色(绿色)  
    MoveTo(Rect.Right, Rect.Top); //画笔定位  
    LineTo(Rect.Right, Rect.Bottom); //画绿色的竖线  
  end; 
end;</SPAN> 

procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
var i :integer;
begin
  if gdSelected in State then Exit;
//定义表头的字体和背景颜色:
    for i :=0 to (Sender as TDBGrid).Columns.Count-1 do
    begin
      (Sender as TDBGrid).Columns[i].Title.Font.Name :='宋体'; //字体
      (Sender as TDBGrid).Columns[i].Title.Font.Size :=9; //字体大小
      (Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000ff; //字体颜色(红色)
      (Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00; //背景色(绿色)
    end;
//隔行改变网格背景色:
  if Query1.RecNo mod 2 = 0 then
    (Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色
  else
    (Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色
//定义网格线的颜色:
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
  with (Sender as TDBGrid).Canvas do //画 cell 的边框
  begin
    Pen.Color := $00ff0000; //定义画笔颜色(蓝色)
    MoveTo(Rect.Left, Rect.Bottom); //画笔定位
    LineTo(Rect.Right, Rect.Bottom); //画蓝色的横线
    Pen.Color := $0000ff00; //定义画笔颜色(绿色)
    MoveTo(Rect.Right, Rect.Top); //画笔定位
    LineTo(Rect.Right, Rect.Bottom); //画绿色的竖线
  end;
end;

 

 

3、纵向斑马线效果:实现网格的奇数列和偶数列分别以不同的颜色显示以区别相邻的数据列。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • delphi canvas 画点

    delphi canvas 画点

    2017-06-22 17:02

  • Delphi 之 工具栏组件(TToolBar)

    Delphi 之 工具栏组件(TToolBar)

    2017-06-04 09:04

  • 关于html2canvas这个插件的使用问题,求助

    关于html2canvas这个插件的使用问题,求助

    2017-05-31 13:01

  • 使用Canvas画出任意的形状(就是拿鼠标在上面乱画), 撤销上一次

    使用Canvas画出任意的形状(就是拿鼠标在上面乱画), 撤销上一次

    2017-05-26 17:00

网友点评