CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

怎样让TScrollBox响应鼠标滚轮操作?

楼主stanely(俺是邢她汉子)2004-08-03 20:46:01 在 Delphi / VCL组件开发及应用 提问

rt 问题点数:100、回复次数:26Top

1 楼longtusoft(神灯之主)回复于 2004-08-03 21:12:10 得分 10

TSCROLLBOX有几个事件:  
  ONMOUSEWHEEL  
  ONMOUSEWHEELDOWN  
  ONMOUSEWHEELUP专门用来响应鼠标滚轮操作.Top

2 楼ghchen()回复于 2004-08-04 08:52:29 得分 0

先顶一下Top

3 楼liuqifeiyu(liuqi)回复于 2004-08-04 09:07:43 得分 0

我不知道,帮你顶Top

4 楼waini12(魔刀王子)回复于 2004-08-04 09:19:27 得分 0

你应该演示一下呀   说几个事情谁明白呢Top

5 楼GoldShield(李柏岑)回复于 2004-08-04 09:21:24 得分 0

记得不是是D7才有那几个事件哦.搞忘了.Top

6 楼GoldShield(李柏岑)回复于 2004-08-04 09:22:02 得分 0

参透DELPHI那本书上讲了,比较详细Top

7 楼stanely(俺是邢她汉子)回复于 2004-08-05 10:38:16 得分 0

Re:  
   
  TSCROLLBOX有几个事件:  
  ONMOUSEWHEEL  
  ONMOUSEWHEELDOWN  
  ONMOUSEWHEELUP专门用来响应鼠标滚轮操作.  
   
  我也看到了这几个事件,但是根本就形同虚设,无论滚轮怎么滚,都不会触发阿?  
  Top

8 楼GoldShield(李柏岑)回复于 2004-08-05 10:54:10 得分 0

如果楼主今天不结贴,那我晚上回去帮你翻一下.Top

9 楼prophet2004(泡菜)回复于 2004-08-05 11:03:09 得分 50

先检测鼠标滚轮是否响应,然后就向发送下面的消息  
  用SendMessage(TreeView->Handle,WM_VSCROLL,SB_LINEDOWN,0)来实现向下滚动一行  
   
  SB_LINEDOWN                     下移一行  
  SB_LINEUP                         上移一行  
  SB_PAGEDOWN                     下移一页  
  SB_PAGEUP                         上移一页  
  Top

10 楼stanely(俺是邢她汉子)回复于 2004-08-05 11:17:13 得分 0

Re:  
   
  先检测鼠标滚轮是否响应,然后就向发送下面的消息  
  用SendMessage(TreeView->Handle,WM_VSCROLL,SB_LINEDOWN,0)来实现向下滚动一行  
   
  SB_LINEDOWN                     下移一行  
  SB_LINEUP                         上移一行  
  SB_PAGEDOWN                     下移一页  
  SB_PAGEUP                         上移一页  
   
  谢谢,但是如何知道鼠标滚轮滚动了多少呢?Top

11 楼prophet2004(泡菜)回复于 2004-08-05 11:58:22 得分 10

处理消息   WM_MBUTTONDOWN  
  如果等于MK_MBUTTON就是中键按下了  
  怎么处理不同我再说了吧Top

12 楼capoatguitar(菠萝蜜汁红塔山)回复于 2004-08-05 14:03:08 得分 10

具体方法查看DELPHI帮助     WM_VSCROLL   里面有全部介绍。Top

13 楼stanely(俺是邢她汉子)回复于 2004-08-05 15:03:29 得分 0

谢谢各位的热心帮助!  
  我知道了那些OnMouseWheelXXX无相应的原因就是scrollbox没有焦点,而令其得到焦点的办法除了调用setfocus之外,还有就是让其内部控件得到焦点,而单纯的鼠标点击其本身无法使其得到焦点。但是如果内部是一对无法通过鼠标点击得到焦点的东西怎么办呢?比如tpanel和tspeedbutton  
   
  我想捕捉scrollbox的鼠标按下消息,但是我用重载wndproc的办法,WM_LBUTTONDOWN似乎永远收不到。难道鼠标按下不是这个消息么?  
   
  另外,请问pageup和pagedown的vkCode分别是什么?  
   
  谢谢!Top

14 楼stanely(俺是邢她汉子)回复于 2004-08-05 15:04:33 得分 0

对了,还有一点,我不想用onmousedown这个事件得到鼠标按下,因为子类还要使用它。Top

15 楼xufenglong(天天向上)回复于 2004-08-05 15:13:37 得分 10

procedure   TForm1.FormMouseWheel(Sender:   TObject;   Shift:   TShiftState;  
      WheelDelta:   Integer;   MousePos:   TPoint;   var   Handled:   Boolean);  
  begin  
      if   WheelDelta   <   0   then  
        SendMessage(sbxBL.Handle,WM_VSCROLL,   SB_LINEDOWN,   0)  
      else  
        SendMessage(sbxBL.Handle,WM_VSCROLL,   SB_LINEUP,   0);  
  end;Top

16 楼xufenglong(天天向上)回复于 2004-08-05 15:15:17 得分 0

補充  
  sbxbl為ScrollBox的名字Top

17 楼prophet2004(泡菜)回复于 2004-08-05 15:18:12 得分 0

另外,请问pageup和pagedown的vkCode分别是什么?  
   
  我也不知道怎么得到!这个不能帮你了  
  不过你可以发消息啊  
   
  向SB_PAGEDOWN       下移一页  
  和SB_PAGEUP           上移一页  
  Top

18 楼xufenglong(天天向上)回复于 2004-08-05 15:26:34 得分 0

pageup               VK_UP   =   38;                                            
  pagedown         VK_DOWN   =   40;Top

19 楼stanely(俺是邢她汉子)回复于 2004-08-05 15:41:13 得分 0

谢谢各位的帮助,可是我一直不明白为什么其他控件的WM_LBUTTONDOWN消息能够收到,而scrollbox收不到这个消息?Top

20 楼stanely(俺是邢她汉子)回复于 2004-08-05 15:44:11 得分 0

Re:  
   
  pageup               VK_UP   =   38;                                            
  pagedown         VK_DOWN   =   40;  
   
  如果这样,那么上下方向键的又是多少呢?Top

21 楼prophet2004(泡菜)回复于 2004-08-05 15:46:29 得分 0

错了,上下键是38、40Top

22 楼capoatguitar(菠萝蜜汁红塔山)回复于 2004-08-05 16:03:01 得分 10

查哪个键的键值,就找一个控件,在ONMOUSEDOWN事件中写:showmessage(inttostr(key));Top

23 楼stanely(俺是邢她汉子)回复于 2004-08-05 16:35:31 得分 0

我不想用onmousedown这个事件得到鼠标按下,因为子类还要使用它Top

24 楼stanely(俺是邢她汉子)回复于 2004-08-05 21:07:45 得分 0

?Top

25 楼GoldShield(李柏岑)回复于 2004-08-06 18:15:56 得分 0

老大.回去翻了所有的资料.自己也试了N次.但我的机子上它可以响应啊.  
    我的机子为:WINXP+D6.USB接口鼠标.Top

26 楼beyondtkl(大龙驹<*好久没来了,兄弟们好吧。*>)回复于 2004-08-07 02:34:14 得分 0

回复人:   stanely(俺是邢她汉子)   (   )   信誉:108     2004-08-05   15:44:00     得分:   0      
     
     
        Re:  
   
  pageup               VK_UP   =   38;                                            
  pagedown         VK_DOWN   =   40;  
   
  如果这样,那么上下方向键的又是多少呢?  
       
  自己打开   DELPHI   输入VK_UP   然后再上面按   ctrl+鼠标左键   然后打开得文件里面有所有得键值  
     
  Top

相关问题

  • 如何响应鼠标滚轮消息?
  • 鼠标滚轮消息的响应问题
  • 如何使DW不响应鼠标的滚轮翻页?100分相送!
  • jdk1.4中如何响应鼠标中间滚轮滚动消息(100分)?
  • 在vb6中如何响应鼠标中键和滚轮的事件?
  • 怎样在对话框中响应鼠标的滚轮事件啊?
  • 怎么样才能让水晶报表响应鼠标的滚轮啊?
  • 怎么才能获得鼠标滚轮事件,并对其进行响应?
  • 请问各位大虾,我在CScrollView中响应鼠标滚轮事件时怎么使滚动条滚动啊?
  • jbuilder7的鼠标滚轮

关键词

  • 鼠标
  • 消息
  • 滚轮
  • 响应鼠标滚轮操作
  • linedown
  • 一行
  • sb
  • 下移
  • 滚动
  • pageup

得分解答快速导航

  • 帖主:stanely
  • longtusoft
  • prophet2004
  • prophet2004
  • capoatguitar
  • xufenglong
  • capoatguitar

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo