Datatbl控件能支持鼠标滚轮吗?

feicui999 2009-08-03 01:10:05
Datatbl控件能支持鼠标滚轮吗?

谢谢!
...全文
302 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
feicui999 2009-08-29
  • 打赏
  • 举报
回复
谢谢。找到了。是PAGE UP PAGE DOWN
嗷嗷叫的老马 2009-08-25
  • 打赏
  • 举报
回复
在工程里加入如下代码即可,测试通过.

Private Const WM_MOUSEWHEEL As Long = &H20A
Dim WithEvents objSubClass As cSubclass

Private Sub Form_Load()
Set objSubClass = New cSubclass

objSubClass.AddWindowMsgs Datatbl1.hWnd '挂上子类化
End Sub

Private Sub Form_Unload(Cancel As Integer)
objSubClass.DeleteWindowMsg Datatbl1.hWnd '取消子类化
Set objSubClass = Nothing
End Sub

Private Sub objSubClass_MsgCome(ByVal bBefore As Boolean, bHandled As Boolean, lReturn As Long, lng_hWnd As Long, uMsg As Long, wParam As Long, lParam As Long)
If bBefore Then
Select Case uMsg
Case WM_MOUSEWHEEL '拦截滚轮消息
Select Case (wParam / 65536) '判断是向上滚还是向下滚
Case 120
SendKeys "{UP}" '模拟按键
Case -120
SendKeys "{DOWN}" '模拟按键
End Select
End Select
End If
End Sub

cSubclass.cls就是我上面给出的代码里的.
嗷嗷叫的老马 2009-08-25
  • 打赏
  • 举报
回复
你先使用键盘操作完成你的要求

在键盘能达到的情况下,再看看你都按了哪些键,模拟之...........
feicui999 2009-08-25
  • 打赏
  • 举报
回复
datatbl 那个事件是 向上翻页 向下翻页?
我正在找。还没找到。你找到了吗?
feicui999 2009-08-25
  • 打赏
  • 举报
回复
我看明白了点,你的代码,你是模拟上下按键来模拟鼠标滚轮的。
控件中有个 滚动至此 向上翻页 向下翻页 就是我想触发的事件。我找不到可。你看的出来吗?谢谢!
feicui999 2009-08-25
  • 打赏
  • 举报
回复
谢谢!谢谢!终于测试成功了。
但我发现你绑定的是数据的每条记录的滚动事件,能不能改成整个屏幕的滚动事件。就是不论当前光标在哪一行,只要一个触发滚动事件,整体屏幕就能向上或向下移动!

马老师不知道我表述的清楚吗!不过现在这样已经很不错了。希望能更实用完美。因为我不懂,所以想的比较简单。给你添麻烦了。
嗷嗷叫的老马 2009-08-25
  • 打赏
  • 举报
回复
Dim WithEvents objSubClass As cSubclass

这一句就是定义这个变量啊

放在公共声明区.

Private Const WM_MOUSEWHEEL As Long = &H20A

这一句是声明常量,也是放在公共声明区.
feicui999 2009-08-25
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Set objSubClass = New cSubclass
objSubClass.AddWindowMsgs Datatbl1.hWnd '挂上子类化
End Sub
怎么提示我?

“变量未定义”
嗷嗷叫的老马 2009-08-25
  • 打赏
  • 举报
回复
我发的所有代码都在同一窗体里

窗体里面有一个你的那个控件.

然后下载我上面链接里的工程,将里面的cSubclass.cls添加到你的工程中,就可以了
feicui999 2009-08-25
  • 打赏
  • 举报
回复
Private Const WM_MOUSEWHEEL As Long = &H20A
Dim WithEvents objSubClass As cSubclass

这段放在那里? 谢谢!我怎么放哪都报错啊!

子程序或函数中的属性无效。
嗷嗷叫的老马 2009-08-25
  • 打赏
  • 举报
回复
cSubclass.cls就是我上面给出的代码里的.

笔误!!!抱歉抱歉!!!

是想打"链接"来着!!!汗!!

就在我上面发的那个链接里有........

加入到工程即可.
feicui99 2009-08-25
  • 打赏
  • 举报
回复
具体那段程序放在那?能帮我写清楚吗?
Private Sub Form_Load()
Set objSubClass = New cSubclass
objSubClass.AddWindowMsgs Datatbl1.hWnd '挂上子类化
End Sub

Private Sub Form_Unload(Cancel As Integer)
objSubClass.DeleteWindowMsg Datatbl1.hWnd '取消子类化
Set objSubClass = Nothing
End Sub
这两段是控件窗体程序中的。

Private Const WM_MOUSEWHEEL As Long = &H20A
Dim WithEvents objSubClass As cSubclass

Private Sub objSubClass_MsgCome(ByVal bBefore As Boolean, bHandled As Boolean, lReturn As Long, lng_hWnd As Long, uMsg As Long, wParam As Long, lParam As Long)
If bBefore Then
Select Case uMsg
Case WM_MOUSEWHEEL '拦截滚轮消息
Select Case (wParam / 65536) '判断是向上滚还是向下滚
Case 120
SendKeys "{UP}" '模拟按键
Case -120
SendKeys "{DOWN}" '模拟按键
End Select
End Select
End If
End Sub

都是cSubclass.cls文件中的代码吗?


现在 运行后!
编译错误:
对象不是源自动事件

我哪有问题。你外挂控件了吗?
feicui999 2009-08-25
  • 打赏
  • 举报
回复
子类代码是多少?谢谢!我哪里不全写的!我不太懂类。所以比较笨!不好意思!
feicui999 2009-08-25
  • 打赏
  • 举报
回复
WithEvents objSubClass As cSubclass

这段代码报错啊!

编译错误:
"子程序或函数中的属性无效"
feicui999 2009-08-25
  • 打赏
  • 举报
回复
多谢!testing 给分中。。。。。。
feicui999 2009-08-24
  • 打赏
  • 举报
回复
http://download.csdn.net/source/1601538
Datatbl控件能支持鼠标滚轮吗! 我说的就是这个控件,带注册的!
嗷嗷叫的老马 2009-08-24
  • 打赏
  • 举报
回复
myjian01<AT>126.com

发来吧,我帮你看看.
feicui999 2009-08-24
  • 打赏
  • 举报
回复
看不太明白你说!什么叫轻量控件!我把控件发上来,您帮我看看好吗。谢了!我搞了好久一直很疑惑,看了很多文章就是搞不定。鼠标滚轮就是无效。我发到资源了,正在审批等下我给你把地址发上来。
嗷嗷叫的老马 2009-08-24
  • 打赏
  • 举报
回复
控件是不是轻量控件?

如果不是,那就对它的主窗口进行子类化,拦截WM_MOUSEWHEEL消息后再模拟PD和PU键(或UP和DOWN)

这里有一个子类化类模块,用起来比较方便:

http://www.m5home.com/blog/article.asp?id=222
feicui99 2009-08-23
  • 打赏
  • 举报
回复
自己顶自己。
加载更多回复(9)

1,451

社区成员

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

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