我现在实现了让dbgrid中的数据一条一条的自动向下滚动,问题是如何使走到每条记录时,该行背景颜色改变??高分答谢??

old_horse 2003-09-29 03:15:49
我现在实现了让dbgrid中的数据一条一条的自动向下滚动,问题是如何使走到每条记录时,该行背景颜色改变??高分答谢??
dbgrid中的滚动是用timer控件实现的。
很急,谢谢了!
...全文
52 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alanwn 2003-09-29
  • 打赏
  • 举报
回复
呵呵,改变他的属性:HideSelection
jpyc 2003-09-29
  • 打赏
  • 举报
回复
http://218.56.11.178:8020/web/index.aspx

-> 下载基地->例程-数据库/报表->控制数据表每行的颜色控制数据表每行的颜色
FrameSniper 2003-09-29
  • 打赏
  • 举报
回复
改变背景色的时候要在OnDrawColumnCell事件中写如下代码:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if gdSelected in State then
begin
Canvas.Font.Color :=clBackground;
Canvas.FillRect(Rect);
end;
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
tongki 2003-09-29
  • 打赏
  • 举报
回复
OPTIONS中的ROWSELECTED
lxl 2003-09-29
  • 打赏
  • 举报
回复
明白你的意思了,你是指DBGRID没有得到焦点的时候,COLOR就不会改变,那用如下代码吧
其中ID为一全局变量,是数据表的主键值

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var i : integer;
begin
if column.field.AsString=ID then
DBGrid1.Canvas.Brush.color:=clyellow
else
DBGrid1.Canvas.Brush.color:=clred;
for i:=0 to dbgrid1.Columns.Count-1 do
dbgrid1.DefaultDrawColumnCell(rect,i,column,state);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
with dbgrid1 do
begin
if datasource<>nil then
if datasource.dataset<>nil then
if datasource.dataset.active then
if datasource.dataset.Eof then
datasource.dataset.first
else
datasource.dataset.next;
end;
names:=dbgrid1.datasource.dataset.fieldbyname('name').asstring;
DBGrid1.Repaint ;
end;

其中DBGRID1的DEFAULTDRAWING=FALSE
sixgj 2003-09-29
  • 打赏
  • 举报
回复
昏……怎么这么复杂。
lxl 2003-09-29
  • 打赏
  • 举报
回复
不明白,“如何使走到每条记录时,该行背景颜色改变??”
当前的DATASET在哪条记录时,DBGIRD中的这一行当然会变色了,我的代码就可以实现啊
old_horse 2003-09-29
  • 打赏
  • 举报
回复
谢谢,我现在是想让其自动变色,不是选中后变色,谢谢了!
请问如何实现?
ltmb118 2003-09-29
  • 打赏
  • 举报
回复

取得选择记录的记录号,再做处理?
lxl 2003-09-29
  • 打赏
  • 举报
回复
另外要注意的是DBGRID的OPTIONS中的ROWSELECTED要设置为TRUE
lxl 2003-09-29
  • 打赏
  • 举报
回复
把自动DBGRID滚动的代码改成这样,作为选中行的背景色当然会改变
procedure TForm1.Timer1Timer(Sender: TObject);
begin
with dbgrid1 do
begin
if datasource<>nil then
if datasource.dataset<>nil then
if datasource.dataset.active then
if datasource.dataset.Eof then
datasource.dataset.first
else
datasource.dataset.next;
end;
end; end;

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧