描述:
自做了个ActiveX表格控件,在IE下使用,需要显示的数据可能有数十万行以
上。根据我做的测试,ActiveX控件能绘制的坐标范围在[-32767, 32768]之间,超
过此坐标范围的就无法显示。也可以说最大能使用的坐标范围是0到65536之间,
如果每行按占用10个点计,也只能绘制出6千多行,离几十万行的目标还差的太
远。我知道分页的方式可以实现,但客户不同意。
我还想到使用坐标映射的方式,我发现填充了数十万行数据的表格,超过几千
行之后,后面的内容虽然不能显示出来,但滚动条却可以继续往下滚动。我想可以
把数十万行表格的坐标范围映射到滚动条的范围,然后在滚动时,将要显示的表格
范围通过坐标映射,绘制到显示区,如此只需要一屏的坐标范围即可,不知此想法
是否可行,如果可行,如何在ActiveX中自己设置IE的滚动条范围,并能响应滚动
时的消息,以便绘制。或者能有其它的解决方法也可以,需要确实可行的,能实现
的。
这个问题也可以总结为,如何突破系统GDI坐标范围的限制。
解决方案1:
当前窗口有多少行记录,其它的都放内存或动态生成。
每次滑动更新列表数据就可了,无须考虑(坐标范围在[-32767, 32768])
晕倒。。。
怎么这么执着于滑块位置和记录位置的对应关系呢???
比如说由1亿条记录,[-32767, 32768]和1亿条记录一一对应肯定不够,即使一个位置与一个屏幕(比如说是100条记录)也肯定不够。
那为什么不能是一个位置与1000条记录(10屏待显示数据)对应?
用户操作确定滑块位置以后定位显示与之对应的1000条记录中的前100条。如果用户点击翻页,则选择下100条记录显示,但是控制滑块位置不变即可
上一个给你回复了,只绘制看得到的