起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 788|回复: 20

【结贴】DataGrid光标问题

[复制链接]
发表于 2010-1-27 10:17:38 | 显示全部楼层 |阅读模式
请导入资源包,DataGrid分组,第一列表现为复选框,在数据集的改变事件中,如果是选择列发生改变,即选中或不选中,滚动一遍数据集.当数据量大过一屏幕的时候,光标就会乱,初始运行后选中第一行,之后无法直接选到第二行,光标会向下跳,如果数据量小,则没有这个问题。请给解释一下,大数据量时如何连续选中而不让光标乱,谢谢.

数据集滚动.rar

1.9 MB, 下载次数: 144

回复

使用道具 举报

 楼主| 发表于 2010-1-27 12:50:01 | 显示全部楼层
没人在吗?
回复 支持 反对

使用道具 举报

发表于 2010-1-27 13:49:01 | 显示全部楼层
用bookmark做一下标记看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-27 14:11:06 | 显示全部楼层
没有作用 光标依然错位
回复 支持 反对

使用道具 举报

发表于 2010-1-27 14:22:06 | 显示全部楼层
你是怎么弄的?我这里是可以的:
procedure TMAINFORM.DataSetBroker1DataChange(Sender: TObject; Field: TDataField);
var lBookMark :String;
begin
    if Field<>nil then
    begin

        if Field.FieldName='XZ' then
        begin
            DataSetBroker1.DataSet.DisableControls;
            lBookMark := DataSetBroker1.DataSet.Bookmark;
            DataSetBroker1.DataSet.First;
            while not  DataSetBroker1.DataSet.Eof do
            begin
                DataSetBroker1.DataSet.Next;
            end;
            DataSetBroker1.DataSet.Bookmark :=lBookMark;
            DataSetBroker1.DataSet.EnableControls;

        end;
      //  DataSetBroker1.DataSet.First;

    end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-27 14:32:51 | 显示全部楼层
ok 谢谢尚工 我把标记赋值回去的时候放在enablecontrols 后面了 放前面就没问题了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-27 14:46:19 | 显示全部楼层
标记 DataSetBroker1.DataSet.Bookmark :=lBookMark; 语句放在DataSetBroker1.DataSet.EnableControls; 之前和之后有什么区别?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-27 15:21:08 | 显示全部楼层
当一组数据超过一屏幕的时候 还是有光标错位的问题 某一个分组下的数据多 组头滚动出docview的时候 就又错位了
回复 支持 反对

使用道具 举报

发表于 2010-1-27 15:51:36 | 显示全部楼层
为什么要在datachange中使用循环,楼主说说需求吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-27 16:19:43 | 显示全部楼层
每次选中一行或者取消选中一行 要重新计算整个数据集各个供应商的付款合计和总付款合计以及各供应商付款所占整体付款数据的百分比 而且计算结果必须显示在各个分组的最后一行上 其他行保持空
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-13 01:43 , Processed in 0.042759 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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