您的位置:首页 > 技术教程 > delphi

实战Delphi数据网格色彩特效
【字体: 整理日期:2007-11-2 9:10:33 打印本文】 【收藏此文

delphi中的数据网格控件(tdbgrid)对于显示和编辑数据库中大量的数据起着十分重要的作用;然而,在使用数据网格控件的同时,也往往因为表格中大量的数据不易区分,而令操作者眼花缭乱。如何提高网格控件的易用性,克服它的此项不足呢?本文从改变数据网格的色彩配置角度,提出了一种解决办法。

  以下为数据网格控件的6种特殊效果的实现方法,至于数据网格控件与数据集如何连接的方法从略。

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

  file://在dbgrid的drawcolumncell事件中编写如下代码:

  case datacol mod 2 = 0 of

   true: dbgrid1.canvas.brush.color:= clblue; file://偶数列用蓝色

   false: dbgrid1.canvas.brush.color:= claqua; file://奇数列用浅绿色

  end;

  dbgrid1.canvas.pen.mode:=pmmask;

  dbgrid1.defaultdrawcolumncell (rect, datacol, column, state);

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

  file://将上述代码修改为:

  case datacol mod 2 = 0 of

   true: dbgrid1.canvas.brush.color:= clblue; file://偶数列用蓝色

   false: dbgrid1.canvas.brush.color:= claqua; file://奇数列用浅绿色

  end;

  if ((state = [gdselected]) or (state=[gdselected,gdfocused])) then

    if not dbgrid1.selectedrows.currentrowselected then

      dbgrid1.canvas.brush.color:=clred; file://当前选中单元格显示红色

      dbgrid1.canvas.pen.mode:=pmmask;

      dbgrid1.defaultdrawcolumncell (rect, datacol, column, state);

上述两种方法突出了列的显示效果。

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

  设置dbgrid控件的options属性中的dgrowselect属性为真,color属性为claqua(背景色), 在dbgrid的drawcolumncell事件中编写如下代码:

  if ((state = [gdselected]) or (state=[gdselected,gdfocused])) then

   dbgrid1.canvas.brush.color:=clred; file://当前行以红色显示,其它行使用背景的浅绿色

   dbgrid1.canvas.pen.mode:=pmmask;

   dbgrid1.defaultdrawcolumncell (rect, datacol, column, state);

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

  file://其它属性设置同3,将上述代码修改为:

  if ((state = [gdselected]) or (state=[gdselected,gdfocused])) then

   begin

    case datacol mod 2 = 0 of

     true : dbgrid1.canvas.brush.color:=clred; file://当前选中行的偶数列显示红色

     false: dbgrid1.canvas.brush.color:=clblue; file://当前选中行的奇数列显示蓝色

    end;

   dbgrid1.canvas.pen.mode:=pmmask;

   dbgrid1.defaultdrawcolumncell (rect, datacol, column, state);

  end;

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

  file://其它属性设置同3,将上述代码修改为:

  case table1.recno mod 2 = 0 of file://根据数据集的记录号进行判断

   true : dbgrid1.canvas.brush.color:=claqua; file://偶数行用浅绿色显示

   false: dbgrid1.canvas.brush.color:=clblue; file://奇数行用蓝色表示

  end;

  if ((state = [gdselected]) or (state=[gdselected,gdfocused])) then file://选中行用红色显示

   dbgrid1.canvas.brush.color:=clred;

   dbgrid1.canvas.pen.mode:=pmmask;

   dbgrid1.defaultdrawcolumncell (rect, datacol, column, state);

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

  file://其它属性设置同3,将上述代码修改为:

  case table1.recno mod 2 = 0 of file://根据数据集的记录号进行判断

   true : dbgrid1.canvas.brush.color:=claqua; file://偶数行用浅绿色显示

   false: dbgrid1.canvas.brush.color:= clblue; file://奇数行用蓝色表示

  end;

  if ((state = [gdselected]) or (state=[gdselected,gdfocused])) then

  case datacol mod 2 = 0 of

   true : dbgrid1.canvas.brush.color:=clred; file://当前选中行的偶数列用红色

   false: dbgrid1.canvas.brush.color:= clgreen; file://当前选中行的奇数列用绿色表示

  end;

  dbgrid1.canvas.pen.mode:=pmmask;

  dbgrid1.defaultdrawcolumncell (rect, datacol, column, state);

上述6种方法分别就数据网格控件的列和行的色彩进行了设置,读者可以根据自己的需要设置特效。该程序在delphi5中测试通过。



查询
关键词:
相关文章
标签Tags