程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 讓Delphi的DBGrid支持鼠標輪(2)

讓Delphi的DBGrid支持鼠標輪(2)

編輯:Delphi

Delphi已經定義了兩個和鼠標輪相關的事件,叫TmouseWheelEvent, TmouseWheelUpDownEvent,分別代表鼠標輪事件和鼠標輪上,下滾動事件。因此,我們先在TmyDbGrid中定義三個私有的事件變量:

fMouseWheel:TMouseWheelEvent;
fMouseWheelUp:TMouseWheelUpDownEvent; //鼠標輪上滾事件
fMouseWheelDown: TMouseWheelUpDownEvent; //鼠標輪下滾事件

然後定義publised中定義事件屬性:

property OnMouseWheel:TMouseWheelEvent read fMouseWheel write fMouseWheel;
property OnMouseWheelUp:TMouseWheelUpDownEvent read fMouseWheelUp write fMouseWheelUp;
property OnMouseWheelDown:TMouseWheelUpDownEvent read fMouseWheelDown write fMouseWheelDown;

然後重載TDBGrid的WndProc函數,

procedure WndProc(var Msg: TMessage);override;

我們在WndProc中捕獲鼠標輪的消息,如下:

var
MousePoint:TPoint;
Handled:Boolean;
shift:TShiftState;
begin
if(Msg.Msg=WM_MOUSEWHEEL) then //捕獲鼠標輪事件
begin
MousePoint.X:=LOWord(Msg.lParam);
MousePoint.Y:=HIWord(Msg.lParam);
Handled:=false;
if(Msg.wParam>0) then //上滾
fMouseWheelUp(self,shift,MousePoint,Handled)
else //下滾
fMouseWheelDown(self,shift,MousePoint,Handled);
fMouseWheel(self,shift,HIWord(Msg.wParam),MousePoint,Handled);
if Handled then exit;
end;
inherited;
end;

這樣,我們就基本可以處理鼠標輪事件了,編譯我們的組件,然後選擇菜單Components-Inatll Component,將我們的組件安裝在Samples頁下。

讓我們來試驗一下我們做的組件,新建一個應用,然後選擇Samples下的MyDBGrid組件,其它的用法,和DBGRrid完全一樣,但你可以看見,在你的MyDbGrid的事件中,已經有OnMouseWheel, OnMouseWheelUp, OnMouseWheelDown的選項了。

這樣,你可以在OnMouseWheel, OnMouseWheelUp, OnMouseWheelDown中處理你的動作了,我們也完成了客戶的要求,當客戶移動鼠標輪時,我們在OnMouseWheelUp中加入相應代碼,圓滿解決了客戶的要求。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved