起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 182|回复: 9

【结贴】datagrid 分组后多选取不到Bookmark[请求]**

[复制链接]
发表于 2009-6-12 18:11:55 | 显示全部楼层 |阅读模式
不分组,没事,一开就爆“List index out of bounds”
for i := 0 to dgAccountDetail.SelectedCount - 1 do
        begin
          dsbAccountDetail.DataSet.Bookmark := dgAccountDetail.SelectedRows;
end;
回复

使用道具 举报

发表于 2009-6-12 18:28:12 | 显示全部楼层
错误报道哪一个索引? 你尝试改改索引的取值。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-12 21:35:41 | 显示全部楼层
跟踪一下,进入循环第一个就会报错的
回复 支持 反对

使用道具 举报

发表于 2009-6-12 21:38:31 | 显示全部楼层
楼主,你的问题跟下面的连接差不多,你参考着改造吧。
http://bbs.justep.com/forum.php?mod=viewthread&tid=27970
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-12 22:10:44 | 显示全部楼层
还真的需要存入Stringlist才行,多谢了,结贴吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-12 22:15:49 | 显示全部楼层
不知道是不是改了TstringList问题,如果选中ExtMutilSelected 照样报错
回复 支持 反对

使用道具 举报

发表于 2009-6-13 09:58:57 | 显示全部楼层
什么意思?
不是很明白。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-13 14:13:46 | 显示全部楼层
我把代码改为:
        lBookMark := TStringList.Create;
        try
          for i := 0 to dgAccountDetail.SelectedCount - 1 do
          begin
            lBookMark.add(dgAccountDetail.SelectedRows);
          end;
          for i := 0 to lBookMark.Count - 1 do
          begin
            dsbAccountDetail.DataSet.Bookmark := lBookMark;  
          end;

        finally
          lBookMark.Free;
        end;
这样如果拉出一列到Grouppanle进行分组,多选取数据时不会报错。
但这样Shift多选是无效的,功能与Ctrl多选一样。
为了达到按Shift能多选,我就选中了Grid中的egoExtMultiSelect属性。
选中这个属性,多选取数据还是会报 List index out of bounds...错误的
回复 支持 反对

使用道具 举报

发表于 2009-6-13 15:27:32 | 显示全部楼层
有一个简单的方法,可以规避,但不知道是否能满足你的需求
就是在上面的代码处动态设置一下datagrid的options,形如
  DataGrid1.Options := DataGrid1.Options - [TGroupListOption.egoExtMultiSelect];
//。。。。中间你的代码
   DataGrid1.Options := DataGrid1.Options + [TGroupListOption.egoExtMultiSelect];
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-13 22:04:37 | 显示全部楼层
好主意,多谢了!请结贴。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-21 09:45 , Processed in 0.042843 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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