• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

delphi更改DBGrid颜色技巧

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

 

[delphi] view plaincopy
 
  1. procedure TMainFrm.First_DGDrawColumnCell(Sender: TObject;  
  2.   const Rect: TRect; DataCol: Integer; Column: TColumn;  
  3.   State: TGridDrawState);  
  4. begin  
  5.   if DM.FirstListStatus.AsString='生产' then begin  
  6.      First_DG.Canvas.Font.Color:=clGreen  
  7.    end  
  8.   else begin  
  9.      First_DG.Canvas.Font.Color:=clRed;  
  10.   end;  
  11.   if DataCol = then  
  12.      First_DG.DefaultDrawColumnCell(Rect,DataCol,Column,State);  
  13. end;  

 

2、多种改变方式

 

[delphi] view plaincopy
 
  1. <span style="color:#000000;">procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;  
  2.   const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);  
  3. var i :integer;  
  4. begin  
  5.   if gdSelected in State then Exit;  
  6. //定义表头的字体和背景颜色:  
  7.     for i :=to (Sender as TDBGrid).Columns.Count-do  
  8.     begin  
  9.       (Sender as TDBGrid).Columns[i].Title.Font.Name :='宋体'; //字体  
  10.       (Sender as TDBGrid).Columns[i].Title.Font.Size :=9; //字体大小  
  11.       (Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000ff; //字体颜色(红色)  
  12.       (Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00; //背景色(绿色)  
  13.     end;  
  14. //隔行改变网格背景色:  
  15.   if Query1.RecNo mod 2 = then  
  16.     (Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色  
  17.   else  
  18.     (Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色  
  19. //定义网格线的颜色:  
  20. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  
  21.   with (Sender as TDBGrid).Canvas do //画 cell 的边框  
  22.   begin  
  23.     Pen.Color := $00ff0000; //定义画笔颜色(蓝色)  
  24.     MoveTo(Rect.Left, Rect.Bottom); //画笔定位  
  25.     LineTo(Rect.Right, Rect.Bottom); //画蓝色的横线  
  26.     Pen.Color := $0000ff00; //定义画笔颜色(绿色)  
  27.     MoveTo(Rect.Right, Rect.Top); //画笔定位  
  28.     LineTo(Rect.Right, Rect.Bottom); //画绿色的竖线  
  29.   end;  
  30. end;</span>  



 

 

 

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

 

[delphi] view plaincopy
 
  1. Case DataCol Mod 2 = of  
  2.   True: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色  
  3.  False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色  
  4. End;  
  5. DbGrid1.Canvas.Pen.Mode:=pmMask;  
  6. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

 

4、纵向斑马线,同时以红色突出显示当前单元格效果:以突出显示当前选中的字段。

[delphi] view plaincopy
 
  1. Case DataCol Mod 2 = of  
  2. True: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色  
  3. False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色  
  4. End;  
  5. If ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then  
  6. If Not DbGrid1.SelectedRows.CurrentRowSelected then  
  7. DbGrid1.Canvas.Brush.Color:=clRed; file://当前选中单元格显示红色  
  8. DbGrid1.Canvas.Pen.Mode:=pmMask;  
  9. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

 

5、在数据网格中以红色突出显示当前选中的行。

 

 

[delphi] view plaincopy
 
  1. 设置DbGrid控件的Options属性中的dgRowSelect属性为真,Color属性为clAqua(背景色)  
  2. 在DbGrid的DrawColumnCell事件中编写如下代码:  
  3.   
  4. if ((State = [gdSelected]) or (State=[gdSelected gdFocused])) then  
  5. DbGrid1.Canvas.Brush.color:=clRed; file://当前行以红色显示,其它行使用背景的浅绿色  
  6. DbGrid1.Canvas.pen.mode:=pmmask;  
  7. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

 


6、行突显的斑马线效果:既突出当前行,又区分不同的列(字段)。

 

 

[delphi] view plaincopy
 
  1. if ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then  
  2. begin  
  3. Case DataCol Mod 2 = of  
  4. True : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列显示红色  
  5. False: DbGrid1.Canvas.Brush.color:=clblue; file://当前选中行的奇数列显示蓝色  
  6. end;  
  7. DbGrid1.Canvas.pen.mode:=pmmask;  
  8. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

 


7、横向斑马线, 同时以红色突显当前行效果。

 

 

[delphi] view plaincopy
 
  1. Case Table1.RecNo mod 2 = of file://根据数据集的记录号进行判断  
  2. True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示  
  3. False: DbGrid1.Canvas.Brush.color:=clblue; file://奇数行用蓝色表示  
  4. end;  
  5. if ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then file://选中行用红色显示  
  6. DbGrid1.Canvas.Brush.color:=clRed;  
  7. DbGrid1.Canvas.pen.mode:=pmMask;  
  8. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

 




8、双向斑马线效果:即行间用不同色区分,同时,选中行以纵向斑马线效果区分不同的列。

 

 

[delphi] view plaincopy
 
  1. Case Table1.RecNo mod 2 = of file://根据数据集的记录号进行判断  
  2. True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示  
  3. False: DbGrid1.Canvas.Brush.color:= clblue; file://奇数行用蓝色表示  
  4. end;  
  5. If ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then  
  6. Case DataCol mod 2 = of  
  7. True : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列用红色  
  8. False: DbGrid1.Canvas.Brush.color:= clGreen; file://当前选中行的奇数列用绿色表示  
  9. end;  
  10. DbGrid1.Canvas.pen.mode:=pmMask;  
  11. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

 

一、根据条件更改某航

procedure Tfrm_TicketGet.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (ADOQuery1.FieldByName('kind_name').asstring = '合计' )or( ADOQuery1.FieldByName('kind_name').asstring = '总合计') then
begin
DBGrid1.Canvas.Font.Color:=clred;
dbgrid1.Canvas.Brush.color:=clyellow;
end ;

dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap