DBGrid支持鼠标滚轮滚动的解决办法

来源:互联网 发布:淘宝静物拍摄价格 编辑:程序博客网 时间:2024/05/28 23:11

方法一:

在窗体添加一个TApplicationEvents组件(在Additional中),然后在它的OnMessage事件中添加如下代码:

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;  var Handled: Boolean);begin  // 当在 DBGrid1 上发生鼠标滚轮事件时  if (DBGrid1.Focused) And (Msg.message = WM_MOUSEWHEEL) then  begin    if Msg.wParam > 0   then    // 滚轮上滚      SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_UP, 0)   // 向DBGrid1发送 VK_UP按键消息    else                        // 下滚      SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_DOWN, 0);    Handled := True;   // 消息已经处理完毕  end;end;
DBGrid1表示需要响应滚轮事件的DBGrid名,这样就能顺利解决滚轮支持的问题。

方法二:

首先在窗体定义前面新写一个类,继承于DBGrids.TDBGrid,添加一个DoMouseWheel的函数,如下:

type  TDBGrid=class(DBGrids.TDBGrid)  public    function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;        MousePos: TPoint): Boolean; override;  end;  TFormMain = class(TForm)  //....省略   end;var  FormMain: TFormMain;implementation{$R *.dfm}  //....其他省略{ TDBGrid }function TDBGrid.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;  MousePos: TPoint): Boolean;begin  if WheelDelta < 0 then    DataSource.DataSet.Next;  if wheelDelta > 0 then    DataSource.DataSet.Prior;end;end.



0 0
原创粉丝点击