起步软件技术论坛-X3

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

【结贴】关于DataGrid垂直滚动条上下拖动时系统卡住的问题

[复制链接]
发表于 2009-9-8 08:45:21 | 显示全部楼层 |阅读模式
关于DataGrid垂直滚动条上下拖动时系统卡住的问题,不知道是何意?
补:当按下鼠标上下快速拖动滚动条时 鼠标箭头并离开滚动条栏 到DATAGRID 中的单元格时 系统卡住  过俩三分钟后方可正常运行  不知道是何意? 还望高手解惑!

snap.jpg

13.3 KB, 下载次数: 134

回复

使用道具 举报

 楼主| 发表于 2009-9-8 09:12:08 | 显示全部楼层
怎么没有人回答呀?
回复 支持 反对

使用道具 举报

发表于 2009-9-8 09:26:43 | 显示全部楼层
datagrid的OnCustomDrawCell事件中是否有复杂代码?
数据集的相关事件是否有复杂代码?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-8 09:37:12 | 显示全部楼层
procedure TSALES_RECORD_AUDIT_BETA_FORMDOC.DataGridSALES_RECORD_AUDIT_DTCustomDrawCell(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 not (ASelected or AFocused) and ((ANode.Index mod 2) = 1) then
         AColor := $0FFF4E6;
      if DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.Active then
      begin
         if (Business.System.Variants.VarToStr(DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.FieldByName('MODIFY_DATE').OldValue) <> Business.System.Variants.VarToStr(DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.FieldByName('MODIFY_DATE').Value)) or (Business.System.Variants.VarToStr(DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.FieldByName('STATUS').OldValue) <> Business.System.Variants.VarToStr(DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.FieldByName('STATUS').Value)) then
            AColor := $062E75A;
      end;
end;
回复 支持 反对

使用道具 举报

发表于 2009-9-8 09:38:30 | 显示全部楼层
去掉这个代码看看。
数据集的事件上是否做代码处理呢?如果有,那也去掉看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-8 09:40:57 | 显示全部楼层
我先试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-8 09:47:44 | 显示全部楼层
当我 注释掉 这句代码时   if DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.Active then
      begin
         if (Business.System.Variants.VarToStr(DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.FieldByName('MODIFY_DATE').OldValue) <> Business.System.Variants.VarToStr(DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.FieldByName('MODIFY_DATE').Value)) or (Business.System.Variants.VarToStr(DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.FieldByName('STATUS').OldValue) <> Business.System.Variants.VarToStr(DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.FieldByName('STATUS').Value)) then
            AColor := $062E75A;
      end;
不出现这样的情况 但我又必须要这句代码 不知道应该怎么代替 还是 避免出这样的错呀?
回复 支持 反对

使用道具 举报

发表于 2009-9-8 09:53:35 | 显示全部楼层
尝试一下,把这个条件做到某个字段上去(计算字段或者临时字段等),只能多种方式尝试一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-8 09:58:04 | 显示全部楼层
不用了 我刚刚实验过了 把or (Business.System.Variants.VarToStr(DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.FieldByName('STATUS').OldValue) <> Business.System.Variants.VarToStr(DataSetBrokerSALES_RECORD_AUDIT_DT.DataSet.FieldByName('STATUS').Value))  这句去掉  就不会出错了 应该是复杂的判断引起系统运行缓慢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-8 10:06:35 | 显示全部楼层
好了 结贴把
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-16 23:03 , Processed in 0.041173 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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