A rotina abaixo mostra como utilizar o botão wheel para correr registros de uma DBGrid. Como a DBGrid do Delphi não dá suporte a este recurso existe uma forma de capturar as mensagem do windows e fazer na unha mesmo.
Neste exemplo utilizei o Delphi7 e não testei com versões posteriores (D2005,D2006,D2007), talvez este recurso já tenha sido incorporado nestas versões, mas não posso confirmar neste momento.
{ Código Fonte do Exemplo }
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Buttons, Grids, Provider, DBClient, DB, FMTBcd, ExtCtrls,
SqlExpr, StdCtrls, ComCtrls, DBCtrls,DBGrids;
type
TForm1 = class(TForm)
DBGrid1:TDBGrid;
...
...
...
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure WheelDBGrid(var Message: TMessage);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
type
PegaEvento = class(TControl);
procedure Tform1.FormCreate(Sender: TObject);
begin
DBGrid1.WindowProc := WheelDBGrid;
end;
procedure TForm1.WheelDBGrid(var Message: TMessage);
var
vQuanto : short;
begin
if (Message.Msg = WM_MOUSEWHEEL) then
begin
vQuanto := HiWord(Message.WParam);
vQuanto := vQuanto div 120;
DBGrid1.DataSource.DataSet.MoveBy(-vQuanto)
end
else
PegaEvento(DBGrid1).WndProc(Message);
end;
end.
Obrigado a todos e espero ter ajudado !!!