Delphi 中的表格行变色

    以下的示例程序演示了对   DBGrid   各属性的设置,使   Delphi   显示的表格就像网页中的表格一样漂亮美观。  
        示例程序的运行:  
        在   Form1   上放置   DBGrid1、Query1、DataSource1   三个数据库组件,设置相关的属性,使   DBGrid1   能显示表中的数据。然后,在   DBGrid1   的   onDrawColumnCell   事件中键入以下代码,然后运行程序,就可以看到神奇的结果了。本代码在   Windows98、Delphi5.0   环境下调试通过。  
  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;    
   
   
  隔行改变DBGrid网格颜色    
        在   Form1   上放置   DBGrid1、Query1、DataSource1   三个数据库组件,设置相关的属性,使   DBGrid1   能显示表中的数据。然后,在   DBGrid1   的   onDrawColumnCell   事件中键入以下代码,然后运行程序  
   
  代码:  
  procedure   TForm1.DBGrid1DrawColumnCell(Sender:   TObject;   const   Rect:   TRect;  
  DataCol:   Integer;   Column:   TColumn;   State:   TGridDrawState);  
   
  var   i:integer;  
  begin  
    if   gdSelected   in   State   then   Exit;     //隔行改变网格背景色:    
        if   adoQuery1.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   :=   clbtnface;   //定义画笔颜色(兰色)  
        MoveTo(Rect.Right,   Rect.Top);   //画笔定位  
        LineTo(Rect.Right,   Rect.Bottom);   //画绿色  
    end;  
  end;  
   
  用BDE中的table1未能通过,颜色没有隔行变化。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值