如何在DBGrid中每隔一行将其背景颜色显示为不同的颜色?
也就是说,单行显示红色,双行显示绿色(比如这么做吧)。
或者说,当我单击某一格时,将整行都加亮,这又该如何做?
也就是说,单行显示红色,双行显示绿色(比如这么做吧)。
或者说,当我单击某一格时,将整行都加亮,这又该如何做?
解决方案 »
- 串口监视(CreateFile,CreateFileA,CreateFileW)
- 在引用DataModule内控件出错
- 高分求助
- 有谁用过QRDesign做报表,报表在打印过程中出现重复打印的问题,请高手指点,100分!
- 如何在进行一项运行前时提示,等运行结束后,关闭提示!
- run time package,Design time package?
- 怎么看不到内容?
- 如何实现QQ拖拽好友加入群组那样的拖拽的功能?
- 我要下载网站的页面代码,该使用什么控件好,该怎么使用?
- 如何动态得到局域网内所有活动的IP那
- WebSnap页面模块的Activate事件和Create事件的区别是?????????????????
- 哪里有DELPHI控件开发的电子书下载,各位提供一下
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 :=12;
(Sender as TDBGrid).Columns[i].Title.Font.Color :=clNavy;
(Sender as TDBGrid).Columns[i].Title.Color :=$00FFC4C4;
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 begin
Pen.Color := $00ff0000;
MoveTo(Rect.Left, Rect.Bottom);
LineTo(Rect.Right, Rect.Bottom);
Pen.Color := clTeal;
MoveTo(Rect.Right, Rect.Top);
LineTo(Rect.Right, Rect.Bottom);
end;
end;
也就是说,单行显示红色,双行显示绿色:写程序了。
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
case form1.DBGrid1.DataSource.DataSet.RecNo mod 2=0 of
true:form1.DBGrid1.Canvas.Brush.Color:=clblue;
false:form1.DBGrid1.Canvas.Brush.Color:=claqua;
end;
if not form1.DBGrid1.SelectedRows.CurrentRowSelected then
form1.DBGrid1.Canvas.Brush.Color:=clred;
form1.DBGrid1.Canvas.Pen.Mode:=pmmask;
form1.DBGrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if( gdSelected in State)then
//如果是被选中的
begin
DBGrid1.Canvas.Brush.Color:=clBlue;
//选中的背景色为clBlue
DBGrid1.Canvas.Font.Color:=clYellow;
//选中的字体颜色为clYellow
end
else
if self.DataSource1.DataSet.RecNo mod 2=1 then
//用self.DataSource1.DataSet.RecNo mod 2
//来判断行数产生隔行
DbGrid1.Canvas.Brush.Color:=clRed
else
DBGrid1.CanVas.Brush.Color:=clWhite;
DBGrid1.DefaultDrawcolumnCell(rect,DataCol,Column,State);
//其他默认
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
case form1.DBGrid1.DataSource.DataSet.RecNo mod 2=0 of
true:form1.DBGrid1.Canvas.Brush.Color:=clblue;
false:form1.DBGrid1.Canvas.Brush.Color:=claqua;
end;
form1.DBGrid1.Canvas.Pen.Mode:=pmmask;
form1.DBGrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
begin
if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
begin
Canvas.Font.Color :=clblack;
Canvas.Brush.Color :=SelectColor;
end
else begin
if DataSource1.DataSet.RecNo mod 2<>0 then {判断当前数据是奇数还是偶数行}
Canvas.brush.Color :=Color1
else
Canvas.brush.Color :=Color2;
end;
Canvas.Font.Color :=clblack;
DefaultDrawColumnCell(Rect, DataCol, Column, State); {这行很关键的,一定不要遗漏了}
end;