起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 400|回复: 11

【结帖】DBGrid行颜色控制问题**

[复制链接]
发表于 2007-12-7 15:01:32 | 显示全部楼层 |阅读模式
procedure TREPORTLIST.DataGridCustomDrawCell(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TTreeListNode; AColumn: TTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean; var AText: string; var AColor: Integer; AFont: TFont; var AAlignment: TAlignment; var ADone: Boolean);
begin
  if qryData.FieldByName('SCSL').AsString=qryData.FieldByName('RKSL').AsString then
  begin
    AFont.Color:=Graphics.clBlue;
    AColor := $CCFFFF;
  end;
end;

以上代码为什么会出现这种情况,点到符合条件的记录上,整个grid(不管符不符合条件)都变色,执行代码,而点到不符合条件的记录上面也是整个Grid都变色(本来颜色)
回复

使用道具 举报

发表于 2007-12-7 15:19:12 | 显示全部楼层
这个grid的数据源是qryData吗?
回复 支持 反对

使用道具 举报

发表于 2007-12-7 15:27:30 | 显示全部楼层
必须判断datagrid的数据源的字段值。已经测试了,以下代码没问题。
if DataSetBrokerBZSJJ1.dataset.FieldByName('zd1').AsString=DataSetBrokerBZSJJ1.dataset.FieldByName('zd2').AsString then
  begin
    AFont.Color:=Graphics.clBlue;
    AColor := $CCFFFF;
  end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-8 09:51:59 | 显示全部楼层
我这个qryData是一个TQuery控件,通过一个datasource控件和DBGrid连接在一起的
请问这种情况你那里正常吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-8 10:14:38 | 显示全部楼层
我这里用DataSetBroker也是一样的情况
我的版本是2828
而且是GraphicPageControl1中的一个dbgrid
你可不可以测试一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-8 10:24:37 | 显示全部楼层
不关GraphicPageControl1的事情
我这里确实就是这样的
你们有没有提供QQ远程协助
看看就知道了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-8 10:26:47 | 显示全部楼层
我新拖了一个DBGRID,运行正常
我以前用的DBGrid是从其它模块copy过来的
请问是不是有什么设置会导致这种情况
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-8 10:29:42 | 显示全部楼层
请问DBGrid中的什么属性设置会影响OnCustomDrawCell事件正常运行?
回复 支持 反对

使用道具 举报

发表于 2007-12-8 10:41:17 | 显示全部楼层
procedure TSJWG1.DataGridCustomDrawCell(Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TTreeListNode; AColumn: TTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean; var AText: string; var AColor: Integer; AFont: TFont; var AAlignment: TAlignment; var ADone: Boolean);
begin
{if DataSetBrokerBZSJJ1.dataset.FieldByName('zd1').AsString=DataSetBrokerBZSJJ1.dataset.FieldByName('zd2').AsString then
  begin
    AFont.Color:=Graphics.clBlue;
    AColor := $CCFFFF;
  end;  }
  if Query1.FieldByName('zd1').AsString=Query1.FieldByName('zd2').AsString then
  begin
    AFont.Color:=Graphics.clBlue;
    AColor := $CCFFFF;
  end;
end;

正常
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-8 12:12:34 | 显示全部楼层
我知道了
是OptionDB下面的edgoLoadAllRecords属性的问题
取消掉就好了
但是不知道取消这个属性有没有其它负作用?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-5 00:48 , Processed in 0.039044 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表