rt

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

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

  7.   

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

  8.   

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

  9.   

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

  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;
      

  11.   

    補充
    sbxbl為ScrollBox的名字
      

  12.   

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

  13.   

    pageup       VK_UP = 38;                     
    pagedown    VK_DOWN = 40;
      

  14.   

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

  15.   

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

  16.   

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

  17.   

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

  18.   

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

  19.   

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