关于ado+access+dbgrid的两个问题(40分)

  • 主题发起人 主题发起人 风之彼端
  • 开始时间 开始时间

风之彼端

Unregistered / Unconfirmed
GUEST, unregistred user!
问题一,通过dbgrid修改了行的背景色,但是却发现行的背景色改变之后,当
选择了当前列之后,本来整个列应该是蓝色的,但是,现在却变成了另外的颜色
,于是判断如果状态为select,就改为蓝色,发现改成蓝色的仅仅是第一列。
问:如何改变背景色,但是,当选取当前列(rowselect:=true)的时候,仍然是
原来的蓝色。
问题二,我有一个字段是判断每个用户当前已使用机器的时间,需要不断刷新,
但是,每次刷新,dbgrid就要从第一行到最后一行,全部修改一遍,当
disablecontrols后,发现显示不正常了,所有行里面需要动态修改的字段都与
第一行的一样。
问:有没有好的办法处理需要不断从头到位修改adodataset,但是dbgrid的记录
不要一直刷个不停。
 
adodataset.DisableControls;
刷新数据集.
adodataset.EnableControls;
 
第二个问题具体点是这样的,有这么两个字段:开始时间(在开始使用的时候记录
now值),用时(now-开始时间,然后转化为 time格式),所以要隔一段时间就刷新
一次。
当我用adodataset.disablecontrols的时候,居然每一行的用时都与第一行相同。
disablecontrols时,next没问题吧???
帖段源码????
 
1.這是我的:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if not (gdSelected in state) then
begin
if Odd(TDbgrid(sender).DataSource.DataSet.RecNo) then
TDbgrid(sender).Canvas.Brush.Color:=ClBlue
else
TDbgrid(sender).Canvas.Brush.Color:=ClRed;
end;
TDbgrid(sender).DefaultDrawColumnCell(rect,datacol,column,state);
end
 
zxb200:
我也是这样弄的,但是我的dbgrid的option中设置了rowselect,这样一来当选择了
一行之后,只有第一列变成了蓝色,其他的还是红色.
 
问题已经解决了
 
后退
顶部