我用一个dbgrid返回查询结果,dbgrid连接到一个datasource上面,datasource连接到一个query控件,在程序中动态改变query的sql属性查询需要的结果。请问如何在dbgrid中实现斑马线效果?请详细说明
解决方案 »
- 加班暂告一段落,散分
- 为什么Application.MessageBox会出现错误?
- 排序问题
- 如何判断文件是属于哪一级的
- 使用换肤控件bsskinspeedbutton的问题
- 请问有控件可以实现区域选择吗?
- 使用TIdDecoderMIME的方法DecodeToString()时提示“Uneven size in DecodeToStream”
- 哪有Formula One 6.0 (F1Book)下载
- “on EAccessDenied do”为什么出错?一定给分!
- DBComboBox的下拉列表问题,请执教,谢谢
- 100分,问题解决还有100分~DELPHI对Excel的操作问题:怎样把复杂Excel的数据保存到SQL数据库
- 怎樣禁止dbgrid按向下鍵自動增加一行的功能
你可到 google 上搜索 dbgrideh ,很多的
祝你好运
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if adotable1.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 的边框
Pen.Color := $0000ff00; //定义画笔颜色(绿色)
MoveTo(Rect.Right, Rect.Top); //画笔定位
LineTo(Rect.Right, Rect.Bottom); //画绿色的竖线
end;
RowOneColor 和 RowTwoColor
分别用于设置间隔行颜色
with dbgrid do
begin
if (state=[gdselected]) or (state=[gdselected,gdfocused])) then
begin
canvas.font.color:=clyellow;
canvas.brush.color:=clnavy;
end
else begin
if (sender as tdbgrid).datasource.dataset.RecNo mod 2<>0 then
Canvas.brush.Color :=ClWhite
else
Canvas.brush.Color :=CLAqua;
end;
end;
dbgrid.DefaultDrawColumnCell(Rect,DataCol,Column,State);
主 题: Delphi数据网格(DbGrid)色彩特效
实战Delphi数据网格色彩特效 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);7. 随意控制DBGrid 每一行的颜色:Varp : Integer;beginp := Table1.FindField('wage').AsInteger;//取得当前记录的Wage字段的值。if(p < 500) then begin //程序将根据wage值设置各行的颜色。Color := clGreen;Font.Style := [fsItalic]; //不仅可以改变颜色,还可以改变字体end;if (p >= 500) And (p < 800) thenColor := clRed;if(p >=800) then beginColor := clMaroon;Font.Style := [fsBold];end;end;