MSHFlexGrid 控件的MouseRow属性问题

caohuang 2005-11-01 09:44:43
一MSHFlexGrid 控件,两个固定行两个固定列,交替绑定两个数据表,一个表内的数据是固定不变的,另一个表里的数据可以添加删除,当两个表里都有数据时没有问题,当一个数据表里的数据完全删除空以后,回头再绑定另外一个,MouseRow 属性的值会比实际少一,比方点击第二行MouseRow 属性会是1,拉一下MSHFlexGrid 控件的滚动条再点击又对了,不知道问题出在哪里。

数据库用ADO,进程中动态绑定,因为想让第一列固定,若提前设MSHFlexGrid 控件的固定列为2则达不到预期效果,故在绑定前后这样写:

MSHFlexGrid1.FixedCols = 1
Set MSHFlexGrid1.Recordset = rc1
MSHFlexGrid1.FixedCols = 2
效果是达到了,但出现前面的问题,是不是问题出在这段代码?
...全文
560 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
xytzg 2005-12-08
  • 打赏
  • 举报
回复
我已经用这个办法了,但有个问题就是:数据表为空,你不绑定就还是显示原来那个数据表的内容,或者清空一下,但就什么都没有了,给客户的感觉不是太好.
caohuang 2005-11-13
  • 打赏
  • 举报
回复
问题解决,就是先判断数据表是否为空,若为空就不绑定
caohuang 2005-11-11
  • 打赏
  • 举报
回复
我原来用的就是Row属性,问题跟这个差不多
northwolves 2005-11-11
  • 打赏
  • 举报
回复
搞定了没有?

实在步行,用MSHFlexGrid1.Row 代替MSHFlexGrid1.MouseRow 试试
caohuang 2005-11-11
  • 打赏
  • 举报
回复
不行啊,还是老样子
of123 2005-11-11
  • 打赏
  • 举报
回复
试试用 Clear 方法清除一下再绑定。
caohuang 2005-11-11
  • 打赏
  • 举报
回复
看来只能想别的办法啦
caohuang 2005-11-09
  • 打赏
  • 举报
回复
northwolves(狼行天下)所说的“搞不明白为什么这样,但既然"拉一下MSHFlexGrid 控件的滚动条后就又恢复正常了",不妨就发送消息先拉一下滚动条”倒是可以,代码变成这样:
MSHFlexGrid1.FixedCols = 1
Set MSHFlexGrid1.Recordset = rc1
MSHFlexGrid1.FixedCols = 2
MSHFlexGrid1.Refresh
If emp = True Then‘判断先前所绑定的数据表是否为空,若是空则为true
MSHFlexGrid1.TopRow = 2
End If

这样倒是正常了,可是一旦绑定的数据表中数据很少不足以出现滚动条时,问题还是老样子。
注:拉水平滚动条不管用
caohuang 2005-11-03
  • 打赏
  • 举报
回复
只隐藏提前加进去的那一行呢?别的数据都显示
freewzf 2005-11-02
  • 打赏
  • 举报
回复
设行高为0就隐藏了
caohuang 2005-11-02
  • 打赏
  • 举报
回复
两处都是这样写的,绑定的是一查询:

Set rc1.ActiveConnection = cn1

rc1.CursorType = adOpenStatic
rc1.LockType = adLockOptimistic
rc1.Open str

MSHFlexGrid1.FixedCols = 1
Set MSHFlexGrid1.Recordset = rc1
MSHFlexGrid1.FixedCols = 2
MSHFlexGrid1.Refresh

rc1.Close
cn1.Close
caohuang 2005-11-02
  • 打赏
  • 举报
回复
还是不行啊,问题出在绑定一空的数据表之后再绑定另一个非空的数据表,但拉一下MSHFlexGrid 控件的滚动条后就又恢复正常了,真是奇怪呀
上官云峰 2005-11-02
  • 打赏
  • 举报
回复
http://www.5ivb.net/Down/6/20056252201421/

自己看这个代码,这个算比较稳定了,网络上有些根本不稳定

所以还是不建议对msflexgrid使用滚轮功能

caohuang 2005-11-02
  • 打赏
  • 举报
回复
这样应该不会有什么问题,就是太麻烦
我想试试隐藏行的方法,不知行得通不
vbman2003 2005-11-02
  • 打赏
  • 举报
回复
不用Set MSHFlexGrid1.Recordset = rc1这样的方式呢?一行行往Set MSHFlexGrid1中写数据试试
caohuang 2005-11-02
  • 打赏
  • 举报
回复
to: vbman2003(家人)
若MSHFlexGrid1.FixedCols = 1 去掉,数据第一列就不能固定了
caohuang 2005-11-02
  • 打赏
  • 举报
回复
上面的问题和我的是两个问题。

偶还发现只要这个MSHFlexGrid 控件先绑定一个空数据表再回头绑定一个非空的数据表后,就全部不对了,选定单元格、选定行、列等等都不好使了,好像锈住了一样,但拉一下滚动条就又恢复正常了
可不可以这样,数据表里预先放一条数据用户无法删除,然后显示时再隐藏这一行,问题是怎么隐藏这一行?
vbman2003 2005-11-02
  • 打赏
  • 举报
回复

MSHFlexGrid1.FixedCols = 1 有必要吗?去掉试试
caohuang 2005-11-02
  • 打赏
  • 举报
回复
northwolves(狼行天下)提到的http://www.tek-tips.com/viewthread.cfm?qid=602638这个页面上的问题好像和我的问题不是一个问题啊,原文粘贴如下,偶的英文太臭了。

I have encountered a problem where my VB6 MSFLEXGRID auto scrolls to the top row in the grid when one does Mouse Click+Drag on a fixed hdr cell in the first row = 0, and the grid has been previously scrolled down manually so the top visible row is not the actual first row in the grid.

The Mouse Down event is executed before the auto scrolling starts, but I have not found a way to use this to intercept and prevent the auto scrolling to the top row in the grid while one has the mouse pressed down on a fixed header cell in row 0.

Does any one know a way to prevent this problem from ocurring.
northwolves 2005-11-02
  • 打赏
  • 举报
回复
MAYBE A GRID'S BUG WHICH CAUSED BY SCROLL.

SEE:

http://www.tek-tips.com/viewthread.cfm?qid=602638
加载更多回复(8)

1,451

社区成员

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

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