我想在TScrollBar控件的横向和纵向的ScrollBar移动时,扑获该消息,实现TScrollBar内的另一个Image控件的自动刷新重新绘图, 请问通过什么方式?
谢谢!

解决方案 »

  1.   

    TScrollBar 不是有一个 OnScroll 事件吗?这个不行吗?
      

  2.   

    没发现有个onScroll事件哦! 不知你指的是....  
      

  3.   

    很早以前我做过类似的一个东东,也有你说的问题,好像捕捉消息也不行。
    但我放的是paintbox,它有刷新的方法。image是系统来维护的刷新,如果你要自已来维护刷新,不如你也改为paintbox.
      

  4.   

    我已经自己搞定了! 我把代码贴出来 大家共享一下吧!  :)主要是自己定义了一个从 TScrollBox继承的类,该类添加了鼠标消息的扑获,很easy的实现了!  呵呵:)不过还是感谢大家了哦!
      TScrollEvent = procedure(var Message: TWMHScroll) of object;  TExtScrollBox = class(TScrollBox)
      private
        FOnHScroll,
        FOnVScroll: TScrollEvent;    procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
        procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
      published
        property OnHScroll: TScrollEvent read FOnHScroll write FOnHScroll;
        property OnVScroll: TScrollEvent read FOnVScroll write FOnVScroll;
      end;implementation
    procedure TExtScrollBox.WMHScroll(var Message: TWMHScroll);
    begin
      if Message.ScrollCode = sb_ThumbTrack then
        HorzScrollBar.Position := Message.Pos;
      if Assigned(FOnHScroll) then
        FOnHScroll(Message);
      inherited
    end;procedure TExtScrollBox.WMVScroll(var Message: TWMVScroll);
    begin
      if Message.ScrollCode = sb_ThumbTrack then
        VertScrollBar.Position := Message.Pos;
      if Assigned(FOnVScroll) then
        FOnVScroll(Message);
      inherited
    end;