我用的是以下这个方法,但是存在一个现象:在form1里面使用正常,但子窗体用不了,如果在子窗体也加这个代码的话只能用于子窗体,主窗体的鼠标滚动事件没有了.想在此请教以下高手解决方法.我用了DBGrid做了很多工作了,不想换成其它的控件了.在此谢过. private
Procedure OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
{ Private declarations }
public
{ Public declarations }
end;Procedure TForm1.OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
begin
if Msg.message = WM_MouseWheel then
begin
if Msg.wParam > 0 then
begin
if DBGrid1.Focused then
SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEUP,0);
end
else
begin
if DBGrid1.Focused then
SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEDOWN,0);
end;
Handled:= True;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage:=OnMouseWheel;
end;
Procedure OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
{ Private declarations }
public
{ Public declarations }
end;Procedure TForm1.OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
begin
if Msg.message = WM_MouseWheel then
begin
if Msg.wParam > 0 then
begin
if DBGrid1.Focused then
SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEUP,0);
end
else
begin
if DBGrid1.Focused then
SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEDOWN,0);
end;
Handled:= True;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage:=OnMouseWheel;
end;
解决方案 »
- 请问如何使用realplayer的activeX控件,连续播放rm视频文件
- 我用delphi写了dll,想初始化一个全局的对象,然后dll退出时,能够销毁这个变量。请问怎么办
- 关于托拽的问题
- integer与extended类型如何互换
- 为什么我在Type Library中定义了两个类接口,但是在注册的时候只能注册一个呢?
- 100大洋奉送.急急急!!!!!!!!!!!!!!!!!!!!!!!
- 大家帮看看这句代码是什么意思,没有看懂
- 关于字符串的菜问题
- 为什么执行程序时保存的对话框目录是default user用户的目录?
- CORBA的例子为什么不能正常运行
- 我在ole显示word文档时怎么去掉工具栏
- 请问对象释放问题
if (Msg.message=WM_MOUSEWHEEL) and ((Screen.ActiveForm.ActiveControl is TDBGrid)) then
begin
if Msg.wParam >0 then
SendMessage(Screen.ActiveForm.ActiveControl.Handle,WM_KEYDOWN,VK_UP,0)
else
SendMessage(Screen.ActiveForm.ActiveControl.Handle,WM_KEYDOWN,VK_DOWN,0);
Handled:=True;
end;