软件注册站
热情软件屋

 
MSFlexGrid数据量大时,滚动条不能自由滚动定位
编号: QA004916    
建立日期: 2005年4月22日 最后修改日期: 2005年4月22日
所属类别: C/C++ - DBGrid

Visual Basic - DBGrid
   
    操作系统:Windows
    编程工具:VC6/VB6
    问题:利用MSFlexGrid/MSHFlexGrid控件进行数据显示,如果显示的数据行数不是很多时候,我利用该控件的滚动条可以实现自由拖拉滚动到指定位置。当数据量太大,以至于有上万甚至几十几百万行数据时候发现滚动条出现不能自由滚动定位的问题。
    就是说滚动条如果想直接点击住滚动条任意拖拉时候,发现不能到达任意位置,有时候发现滚动条到处乱跑根本不是我指定的位置了。
    这个问题如何解决?是不是该组控件的一个限制呢?利用别的类似的第三方控件时候没有发现这个问题。请专家指点。
    谢谢。
    水平: 中级(Chao Zhao )
   
    武永忠的意见:
    有两个办法:第一是使用TopRow属性,当你拉动滚动条时,这个属性会变化;第二个办法是不用其自带的滚动条,在旁边自己加一个VScrollBar,把当前值记在Tag属性中,滚动后比较Value和Tag之间的差值就可以了。
    
    
    张华的意见:
    这个问题我在在很多表中都看到过,比如Ms SQLServer中,好像有一个TopRow属性,你如果一定要实现这个功能,建议采用与Rows比例尝试一下,这是不是一个好办法,不过这个方法可能也能实现这个问题。
    
    Lee Rambow的意见:
    这个问题无解,与是否使用MSFlexGrid/MSHFlexGrid无关。
    在WINDOW中,滚动条的大小是根据已经装载的数据来决定的,你打开一个很大的WORD,一开始滚动条的拖拉句柄很大,然后迅速变小,就是这个道理。
    不管你用什么方式:RDO/ADO还是其他的什么方式获取纪录集的数量过于庞大,纪录集就不会一次性读入,只在需要显示的时候才会读入。这点你用SNIFF进行监控会看的很明白。
    因为滚动条是根据已经读取的数据量来计算位置的,所以在数据量很大的情况下不可能准确定位。
    
    zhiquan、王雪峰的意见:
    "上万甚至几十几百万行数据",我认为这时候就有必要分页了,如果不分页操作很难,没什么实际意义,系统差的可能死机。

    

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, Visual Basic, VB, DBGrid, dbgrid, dbcombo

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio