如在 Form 上面放一个 ListView ,如何截获它的 WM_VSCROLL 消息

解决方案 »

  1.   

    重写 WndProc !
    具体呢,像这样:procedure TForm1.WndProc(var Message: TMessage);
    begin
      case Message.Msg of
        WM_VSCROLL:
          begin
            //...
          end;
      end;
      inherited WndProc(Message);
    end;这样只能截获到 Form 的 WM_VSCROLL 消息啊。
    就和单独声明一个
    private:
        procedure WMVScroll(var Message: TWMPaint); message WM_VSCROLL;
    是一样的小弟愚钝,高人指点!
      

  2.   

    在Form类中声明一个域:
    TForm1= class(TForm)
    private
      FOldProc: TWndMethod;
      ....
    public
      再声明一个方法:
      procedure ListViewProc(var Message: TMessage);
      .....
    end;然后在Form的OnCreate事件中写:
     FOldProc:= ListView.WindowProc;
     ListView.WindowProc:= ListViewProc;最后在上面的方法中写:
    procedure TForm1.ListViewProc(var Message: TMessage);
    begin
      ......//写你的消息处理代码
      ...
      FoldProc(Message);  //最后再调用老的处理过程。
    end;
      

  3.   

    谢谢 linzhengqun(风。爱的翔舞) ,我试一下