Колесико мыши в DBGrid
Мы просто изменим WndProc для DBGrid и поместим там то, что нам нужно.
type TomaInvento = class(TControl);
Так что мы можем позже заменить WndProc командой, подобно:
DBGrid1.WindowProc := DBGrid1PillaLaRueda;
например, в событии OnCreate формы.
Здесь мы имеем модуль формы, в котором помещено DBGrid, TTable и TDataSource.
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, Db, DBTables; type TForm1 = class(TForm) Table1: TTable; DataSource1: TDataSource; DBGrid1: TDBGrid; procedure FormCreate(Sender: TObject); private { Private declarations } procedure DBGrid1PillaLaRueda(var Message: TMessage); public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} type TomaInvento = class(TControl); procedure TForm1.DBGrid1PillaLaRueda(var Message: TMessage); var Cuanto : short; begin if (Message.Msg = WM_MOUSEWHEEL) then begin Cuanto:=HIWORD(Message.WParam); Cuanto:=Cuanto div 120; DbGrid1.DataSource.DataSet.MoveBy(-Cuanto) end else TomaInvento(DBGrid1).WndProc(Message); end; procedure TForm1.FormCreate(Sender: TObject); begin DBGrid1.WindowProc := DBGrid1PillaLaRueda; end; end.
В основном, когда мы перемещаем колесо вверх (двигаем палец от себя) сообщение дает нам положительное значение в HiWord для wParam, а когда мы перемещаем колесо вниз (перемещая палец к себе), мы получаем отрицательное значение.
А в остальном, читайте справку Win32.hlp относительно WM_MOUSEWHEEL.
Комментарии