vb中用vscroll来控制msflexgrid的滚动

有时想起 2013-10-28 02:59:55
把MSFlexGrid的横向滚动条保留,纵向用自己的滚动条代替
读入数据时全部读入到内存中,每次显示grid.height/grid.fontheight个,
通过控制自己的滚动条来控制数据
这样在GRID中最多只有几十条数据,速度会非常快的.



请问的是横向滚动条保留,纵向用自己的滚动条代替,我在做这个的时候 MSFlexGrid1.ScrollBars = flexScrollBarHorizontal(保留横向)。但是一旦这样做。。自己用vscroll做的滚动条就没用,,,只有在MSFlexGrid1.ScrollBars = flexScrollBarvertical 或者both 时 才有用,但这样做就又会显示MSFlexGrid1自己的进度条了。。。。和我用vscroll做的重复了。求教
...全文
443 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
有时想起 2013-10-29
  • 打赏
  • 举报
回复
MSFlexGrid1.ScrollBars 该选择什么呢
舉杯邀明月 2013-10-28
  • 打赏
  • 举报
回复
效果图:
舉杯邀明月 2013-10-28
  • 打赏
  • 举报
回复
这个很简单啊,按数据总量,和 MSFlexGrid 可见数据行的多少,正确设置滚动条的参数就行了。 参考代码:
Option Explicit

Private mData(175) As Long       ' 0到175,共176个数据(数据行数)


Private Sub Form_Load()
   Dim i As Long
   ' 窗口上的 MSFlexGrid1 总行数为25。没有垂直滚动条。
   ' 但实际只显示了19行,再去除固定行(表头)1行,显示数据的为18行
   ' 垂直滚动条的初始化
   VScroll1.Min = 0
   VScroll1.Max = 176 - 18
   ' 每次卷动 15行,可按你的想法选择。
   ' (正常情况不应该大于每页的数据行数。你要设置很大也行。)
   VScroll1.LargeChange = 15
   ' 点滚动条的箭头,每次1行(一般应该为1行)
   'VScroll1.SmallChange = 1      ' 控件默认为1
   ' 随机数填充数据
   Randomize
   For i = 0 To 175
      mData(i) = Rnd() * 6000
   Next
   Call VScroll1_Scroll    '填充第一页数据
End Sub

Private Sub VScroll1_Change()
   Call VScroll1_Scroll
End Sub

Private Sub VScroll1_Scroll()
   Dim i As Long, v As Long
   v = VScroll1.Value
   MSFlexGrid1.Clear
   For i = 1 To 18
      MSFlexGrid1.Row = i
      MSFlexGrid1.Col = 0        ' 固定列行标号
      MSFlexGrid1.Text = v + 1   ' 数据“行号”
      MSFlexGrid1.Col = 1        ' 第1列数据
      MSFlexGrid1.Text = mData(v)
      v = v + 1
   Next
End Sub
有时想起 2013-10-28
  • 打赏
  • 举报
回复

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧