procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with DBGrid1 do
begin
if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
begin
Canvas.Font.Color :=ClYellow;
Canvas.Brush.Color :=ClNavy;
end
else
begin
if DBGrid1.DataSource.DataSet.RecNo mod 2 <> 0 then
Canvas.brush.Color :=clRed {如果是奇数行,DBGrid背景以红色显示}
else
Canvas.brush.Color :=$00EAEAEA {如果是偶数行,DBGrid背景以浅灰色显示}
end;
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;end;
另外看Delphi6 的帮助文件DataSet 还有个CurrentRecord:integer 属性!
可是在IDE里根本找不到。
这又是什么原因呢?
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with DBGrid1 do
begin
if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
begin
Canvas.Font.Color :=ClYellow;
Canvas.Brush.Color :=ClNavy;
end
else
begin
if DBGrid1.DataSource.DataSet.RecNo mod 2 <> 0 then
Canvas.brush.Color :=clRed {如果是奇数行,DBGrid背景以红色显示}
else
Canvas.brush.Color :=$00EAEAEA {如果是偶数行,DBGrid背景以浅灰色显示}
end;
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;end;
另外看Delphi6 的帮助文件DataSet 还有个CurrentRecord:integer 属性!
可是在IDE里根本找不到。
这又是什么原因呢?
解决方案 »
- 请教一下用Delphi如何实现波形显示
- GetMessage休眠后如何唤醒
- delphi 操作 ini 文件
- 关于菜单MainMenu的问题?????,在线等待.........
- 双击delphi工程文件可以打开一个新的delphi IDE环境吗?
- 报表问题
- 各位提供一个象ACD See这样的图片预览控件
- Delphi6 的dbExpress的速度问题 急!!!1
- 请ggjjddmm救命啊
- 致kxy:关于TCP Socket的问题?
- 关于MSDE 的两个问题 1、安装我的系统时如何自动安装MSDE???2、如何自动设置启动操作系统时启动MSSQLSERVER服务???
- 串口通信问题I AM WAITING……
是Protected 级的属性!但没有子类去实现它.
所以没有办法了,就算想点办法能访问到它也没有什么用,那只有一个-1
DataSet.last;
再取DataSet.RecNo试一下
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;
不过你回答的这些我都知道的,
我的问题是你的Query1.RecNo :
会不准的。这种情况下。Query1.RecNo = -1
你的结果是所有的网格显示的颜色都一样的。
不论怎么样!谢谢你的热情
对于remote database server 无能为力
2、CurrentRecord为Propected属性,确实不能直接使用,但是变通一下还是可以的:
①在你需要使用的单元里声明一个新类,譬如说TMyDataSet:
type TMyDataSet = class(TTable);//假设从TTable继承,换成其他DataSet也可
②直接引用:
TMyDataSet(Table1).CurrentRecord //假设由一个Table1表
ARow: Longint; AState: TGridDrawState; ABrush: TBrush; AFont: TFont;
var Highlight: Boolean);
begin
if HighLight then
begin
HighLight := False;
ABrush.Color := clSelectedColor;
end;
with grdTradeDec.Fields[ACol], AFont do
case Tag of
1: Color := clMaroon;
2: Color := clGreen;
3: Color := clOlive;
4: Color := clNavy;
5: Color := clPurple;
6: Color := clTeal;
7: Color := clGray;
8: Color := clSilver;
end;
end;
看来诸位说的也不会假的,为什么?不稳定!?