首先你必須要先抓到 MouseWheel
先在你的Form Class 裡面宣告如下
TWndMethod oldDBGridProc; //儲存原始訊息處理函式
void __fastcall DBGridWndProc(Messages::TMessage &Message); //攔截訊息函式
然後可以在 FormCreate 裡面去換掉原來的訊息處理函式
oldDBGridProc = DBGrid1->WindowProc;
DBGrid1->WindowProc = DBGridWndProc;
再來實作你的的訊息處理函式操作你的 DataSet
void __fastcall TForm::DBGridWndProc(Messages::TMessage &Message)
{
short int Delta;
if ( Message.Msg == WM_MOUSEWHEEL )
{
Delta = Message.WParamHi;
if ( Delta < 0 )
ADOQuery1->Next();
if ( Delta > 0 )
ADOQuery1->Prior();
}
else
{
oldDBGridProc(Message); //記得要送回給原來的訊息處理函式
}
}
資料來源:
http://delphi.ktop.com.tw/board.php?cid=168&fid=913&tid=87852