您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> 关于在dbgird 中加鼠标滚动遇到的问题

关于在dbgird 中加鼠标滚动遇到的问题

来源:网络整理     时间:2016/8/10 20:41:20     关键词:

关于网友提出的“ 关于在dbgird 中加鼠标滚动遇到的问题”问题疑问,本网通过在网上对“ 关于在dbgird 中加鼠标滚动遇到的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 关于在dbgird 中加鼠标滚动遇到的问题
描述:

我在网上查到一个关于鼠标滚动的方法.
  private
   Procedure OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
在formcreate下加入
Application.OnMessage:=OnMouseWheel;截获鼠标滚动事件
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;
功能我已经实现在了.但是我再加上一个form2.
同样的在form2里面加入此功能.运行后.form1里面的滚动没有了.form2的功能可以实现.
请问一下.这是什么原因造成的.谢谢


解决方案1:

来晚了,如1楼所说即可。
记得改好对应过程的名称,如Form1.过程名 ....Form2.....Form3.....

解决方案2:

帮你顶下...我也想知道

解决方案3:

我看了你的代码,你都写死了,怎么会有呢
SendMessage(DBGrid1.Handle
这样只对DBGrid1起作用了,建议改成1楼的方法.

解决方案4:

是在dbgird 中不,用2007吧.2007直接支持.

解决方案5:

你的那个OnMessage里写死了!


procedure TForm1.OnMouseWheel(var Msg: TMsg; var Handled: Boolean);
var
  WinCtrl: TWinControl;
begin
  if Msg.message = WM_MouseWheel then
  begin
    WinCtrl := FindControl(GetFocus);
    if WinCtrl is TDBGrid then
    begin
      if Msg.wParam > 0 then
        SendMessage(WinCtrl.Handle, WM_VSCROLL, SB_PAGEUP, 0)
      else
        SendMessage(WinCtrl.Handle, WM_VSCROLL, SB_PAGEDOWN, 0);
    end;
    Handled := True;
  end;
end;

以上介绍了“ 关于在dbgird 中加鼠标滚动遇到的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3197232.html

相关图片

相关文章