ScrollHelper.pas

  1. unit ScrollHelper;
  2.  
  3. interface
  4.  
  5. Uses
  6. Classes,
  7. Windows,
  8. DBGrids,
  9. Messages,
  10. Controls;
  11.  
  12. Type
  13. TScrollHelper = Class(TObject)
  14. Private
  15. Protected
  16. FGrid : TDBGrid;
  17. FOldProc : TWndMethod;
  18. Procedure GridProc(Var Msg : TMessage);
  19. Public
  20. Constructor Create(Grid : TDBGrid);
  21. Destructor Destroy(); Override;
  22. Published
  23. End; {TScrollHelper}
  24.  
  25. implementation
  26.  
  27. Const
  28. WM_MOUSEWHEELUP = 120;
  29. WM_MOUSEWHEELDOWN = 65416;
  30.  
  31. { TScrollHelper }
  32.  
  33. constructor TScrollHelper.Create(Grid : TDBGrid);
  34. begin
  35. Inherited Create();
  36. FGrid := Grid;
  37. FOldProc := FGrid.WindowProc;
  38. FGrid.WindowProc := GridProc;
  39. end;
  40.  
  41. destructor TScrollHelper.Destroy;
  42. begin
  43. FGrid.WindowProc := FOldProc;
  44. Inherited;
  45. end;
  46.  
  47. procedure TScrollHelper.GridProc(var Msg: TMessage);
  48. begin
  49. If (Msg.Msg = WM_MOUSEWHEEL) Then
  50. Begin
  51. Case Msg.WParamHi Of
  52. WM_MOUSEWHEELUP: FGrid.DataSource.DataSet.Prior();
  53. WM_MOUSEWHEELDOWN: FGrid.DataSource.DataSet.Next();
  54. End; {Case}
  55. End Else Begin
  56. FOldProc(Msg);
  57. End;
  58. end;
  59.  
  60. end.
  61.