点击dbgrid的右侧的垂直滚动条,当前记录会跟着改变?怎么解决这个有关问题

点击dbgrid的右侧的垂直滚动条,当前记录会跟着改变?如何解决这个问题
点击dbgrid的右侧的垂直滚动条,当前记录会跟着改变?如何解决这个问题

如果有第三方组件,是什么?

------解决方案--------------------
这个问题好像问过,我也遇到过,是这样解决的:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, Grids, DBGrids;

type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
ADOTable1: TADOTable;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
private
procedure ApplicationEvents1Message(var Msg: tagMSG;var Handled: Boolean); //在下面的过程写好后直接按Ctrl+Shift+C将自动生成此段代码
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
//------------------------------------------
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;var Handled: Boolean);
begin
 if (DBGrid1.Focused) And (Msg.message = WM_MOUSEWHEEL) then
begin
if Msg.wParam > 0 then
SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_UP, 0)
else
SendMessage(DBGrid1.Handle, WM_KEYDOWN, VK_DOWN, 0);
Handled := True;
end;
 if (DBGrid2.Focused) And (Msg.message = WM_MOUSEWHEEL) then //如果有两个DBGrid
begin
if Msg.wParam > 0 then
SendMessage(DBGrid2.Handle, WM_KEYDOWN, VK_UP, 0)
else
SendMessage(DBGrid2.Handle, WM_KEYDOWN, VK_DOWN, 0);
Handled := True;
end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage:=ApplicationEvents1Message; // 截获鼠标滚动事件
end;


或者

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin 
Application.OnMessage:=ApplicationEvents1Message; // 截获鼠标滚动事件
end;