在DBGrid 上如何利用 鼠标滑轮 浏览记录?
谢谢!!!
谢谢!!!
解决方案 »
- delphi可以开发ERP吗
- ListBox中插入数据。
- 关于两个form的问题
- 有关delphi中的InsertRecord()问题.
- 寻求一个高级三层结构解决方案
- 高手们!帮帮忙吧..好郁闷啊..
- 救急:为什么MediaPlayer控件不能播放mp3??播放avi,wav,mid都可以的?如果要播放mp3有什么办法解决?在线等!
- 蜗牛进阶,高手指点!
- mydata.ClientDataSet2.Locate('name',edit1.Text,[loPartialKey])的问题
- 关于读取本机的主机名和IP地址的问题?
- ADOQUERY 简单问题?
- 請教一個procedure edtCodeButtonClick(Sender: TObject; AbsoluteIndex: Integer)是什麼控件!
Windows, Messages, SysUtils, Classes, Controls, Grids, DBGrids;type
TDBGrid1 = class(TDBGrid)
protected
function DoMouseWheel(Shift : TShiftState; WheelDelta : Integer;
MousePos : TPoint) : Boolean; override;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('SPA', [TDBGrid1]);
end;
{ TDBGrid1 }function TDBGrid1.DoMouseWheel(Shift : TShiftState; WheelDelta : Integer;
MousePos : TPoint) : Boolean;
Var FKey : Word;
begin
Result := inherited DoMouseWheel(Shift, WheelDelta, MousePos);
if WheelDelta < 0 then FKey := VK_DOWN
else FKey := VK_UP;
KeyDown(FKey, []);
Refresh;
end;end.原文出自DELPHIBBS
TWheelDBGrid = class(DBGrids.TDBGrid)
private
FWheelWnd : TWndMethod;
procedure MouseWheelWnd (var Message : TMessage);
public
constructor Create(AOwner : TComponent);override;
end;{ TWheelDBGrid }constructor TWheelDBGrid.Create(AOwner: TComponent);
begin
inherited;
Self.FWheelWnd:=Self.WindowProc;
Self.WindowProc:=MouseWheelWnd;
end;procedure TWheelDBGrid.MouseWheelWnd(var Message: TMessage);
var
IsNeg : Boolean;
begin
if Message.Msg = WM_MOUSEWHEEL then
begin
IsNeg := Short(Message.WParamHi) < 0;
if IsNeg then
self.DataSource.DataSet.MoveBy(1)
else
self.DataSource.DataSet.MoveBy(-1)
end else
Self.FWheelWnd(Message);
end;引用:
TDBGrid = class(TWheelDBGrid);這個方法可以不重新寫組件,直接引用就可以了.
再他的onMessage事件里
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;
end;
TWheelDBGrid = class(DBGrids.TDBGrid)
private
FWheelWnd : TWndMethod;
procedure MouseWheelWnd (var Message : TMessage);
public
constructor Create(AOwner : TComponent);override;
end;{ TWheelDBGrid }constructor TWheelDBGrid.Create(AOwner: TComponent);
begin
inherited;
Self.FWheelWnd:=Self.WindowProc;
Self.WindowProc:=MouseWheelWnd;
end;procedure TWheelDBGrid.MouseWheelWnd(var Message: TMessage);
var
IsNeg : Boolean;
begin
if Message.Msg = WM_MOUSEWHEEL then
begin
IsNeg := Short(Message.WParamHi) < 0;
if IsNeg then
self.DataSource.DataSet.MoveBy(1)
else
self.DataSource.DataSet.MoveBy(-1)
end else
Self.FWheelWnd(Message);
end;引用:
TDBGrid = class(TWheelDBGrid);上面这一段程序怎样使用呀,能说详细些吗???
我把上面这一段程序是写在一个单元内,然后哪个窗体用到DBGrid时,再在Uses里引用这个单元,可是没什么反应呀!!!请高手指点!!!