想在DBGrid中加入一个鼠标滚轮滚动时触发的事件,VCL自义事件要怎么写
高手有没有例子拿一个来参考一下

解决方案 »

  1.   

    2006-1-5 16:57:15 6.支持鼠标滚轮方法一:
    private
    { Private declarations }
    procedure GridMouseWheel(Sender: TObject; Shift: TShiftState;
    WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);Form.OnCreate:
    TControlAccess(DBGrid1).OnMouseWheel := GridMouseWheel;procedure TForm1.GridMouseWheel(Sender: TObject; Shift: TShiftState;
    WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
    begin
    TDBGrid(Sender).DataSource.DataSet.MoveBy(-WheelDelta div WHEEL_DELTA);
    Handled := True;
    end;方法二:
    private
    { Private declarations }
    FGridWndProc: TWndMethod;
    procedure GridWndProc(var Message: TMessage);Form.OnCreate:
    FGridWndProc := DBGrid1.WindowProc;
    DBGrid1.WindowProc := GridWndProc;Form.OnDestroy:
    DBGrid1.WindowProc := FGridWndProc;procedure TForm1.GridWndProc(var Message: TMessage);
    begin
    case Message.Msg of
    WM_MOUSEWHEEL:
    begin
    DBGrid1.DataSource.DataSet.MoveBy(-Smallint(Message.WParamHi) div WHEEL_DELTA);
    end;
    else FGridWndProc(Message);
    end;
    end; 
    2006-1-5 16:59:05 6.支持鼠标滚轮(补充)type
    TControlAccess = class(TControl);