您的位置:程序门 -> vb -> 基础类



项目中用的表格控件全是msflexgrid,可是现在客户要求表格都要支持滚轮,我不知如何办了。客户至上呀!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


项目中用的表格控件全是msflexgrid,可是现在客户要求表格都要支持滚轮,我不知如何办了。客户至上呀![已结贴,结贴人:hui_hui_2007]
发表于:2007-01-01 21:02:41 楼主
我的项目中没用到第三方的表格控件,都是自带的msflexgrid,可是这个控件不支持鼠标滚轮呀。现在客户提出这个要求如何办呀。
更换表格控件一定是不可能了。工作量大了。只想在使用msflexgrid的前提下想办法。
请大家帮我。
发表于:2007-01-01 21:32:051楼 得分:2
1、hook,网上有代码,现成的。
ps:找不到可以找我购买。

2、换其他的,推荐listview报表式。
发表于:2007-01-01 22:17:472楼 得分:0
2、换其他的,推荐listview报表式。
-----------------------
呵,可是listview毕竟不是真正的表格呀。也想到过用它。



1、hook,网上有代码,现成的。
---------------
目前还没找到,找到几个代码,可是测试不行。再找找。
发表于:2007-01-02 08:57:363楼 得分:0
我有代码,4号上班后给你,等等吧

ps:vansoft大哥好久不来了啊,呵呵,难得见到
发表于:2007-01-02 11:02:434楼 得分:0
有可用代码的...
如果找不到可找我...
发表于:2007-01-02 11:10:315楼 得分:0
请将代码贴到网上,大家共享,谢谢.
发表于:2007-01-03 21:52:116楼 得分:0
我有代码,4号上班后给你,等等吧

ps:vansoft大哥好久不来了啊,呵呵,难得见到
------------------------
谢谢了,期待中。
发表于:2007-01-03 21:54:277楼 得分:0
郁闷中,这两天感冒了。没退烧。也不直没上来。呵。现在刚好点。
发表于:2007-01-04 14:11:538楼 得分:0
我有代码,4号上班后给你,等等吧
------------------
在吗,朋友!
发表于:2007-01-04 15:34:489楼 得分:18
以下程序放在一个公共模块中,
在窗体中的form_load事件中 写 hookwheel me.hwnd
在窗体中的form_unload事件中 写 unhookwheel me.hwnd
在表格的gotfocus事件中 set   ctlwheel=msflexgrid1     '(   表格名称,根据具体情况,修改这个名称)

在表格的lostfocus事件中 set   ctlwheel=nothing '(   表格名称,根据具体情况,修改这个名称)


option   explicit

private   declare   function   setwindowlong   lib   "user32 "   alias   "setwindowlonga "   (byval   hwnd   as   long,   byval   nindex   as   long,   byval   dwnewlong   as   long)   as   long
private   declare   function   callwindowproc   lib   "user32 "   alias   "callwindowproca "   (byval   lpprevwndfunc   as   long,   byval   hwnd   as   long,   byval   msg   as   long,   byval   wparam   as   long,   byval   lparam   as   long)   as   long

private   const   gwl_wndproc       as   long   =   (-4)
private   const   wm_mousewheel   as   long   =   &h20a


private   m_oldwindowproc   as   long

public   ctlwheel   as   object

public   sub   hookwheel(byval   frmhwnd)

        m_oldwindowproc   =   setwindowlong(frmhwnd,   gwl_wndproc,   addressof   pvwindowproc)
end   sub

public   sub   unhookwheel(byval   hwnd   as   long)
        dim   lngreturnvalue   as   long
        lngreturnvalue   =   setwindowlong(hwnd,   gwl_wndproc,   m_oldwindowproc)
       
end   sub

private   function   pvwindowproc(byval   hwnd   as   long,   byval   wmsg   as   long,   byval   wparam   as   long,   byval   lparam   as   long)   as   long
        on   error   goto   errh
       
        select   case   wmsg
       
                case   wm_mousewheel
                        if   not   ctlwheel   is   nothing   then
                                  if   typeof   ctlwheel   is   msflexgrid   then
                                          with   ctlwheel
                                       
                                                          select   case   wparam
                                                          case   is   >   0
               
                                                                if   ctlwheel.toprow   >   0   then
                                                                        ctlwheel.toprow   =   ctlwheel.toprow   -   1
                                                                end   if
                                                               
                                                          case   else
                                                             
                                                                ctlwheel.toprow   =   ctlwheel.toprow   +   1
                                                               
                                                          end   select
                                            end   with
                                    end   if
                                   
                      end   if
        end   select
       
errh:
       
        pvwindowproc   =   callwindowproc(m_oldwindowproc,   hwnd,   wmsg,   wparam,   lparam)
end   function

发表于:2007-03-18 00:21:3510楼 得分:0
新建了一个工程试验了你的代码,运行很正常,非常感谢

把这些代码加到我的一个程序中后,运行也正常.但是在vb环境中按f5执行的时候,一旦关闭程序,不仅程序关闭了,连vb也关闭了~~请问这是怎么回事??(在我新建工程试验的时候不会出现这种情况)


快速检索

最新资讯
热门点击