鼠标滚轮的一些用法

楼主
我是社区第70504位番薯,欢迎点我头像关注我哦~
      鼠标滚轮大家平时都很常用,但是FR本身用滚轮的操作很少,其实有些操作加点滚轮效果还是非常好的,比如文本框和日期控件。今天就给大家介绍下该如何做能实现。
      1.控件在参数面板的情况
    在参数面板比较好办,结构比填报页面简单多了,大家只需要在加载结束事件写入以下JS就可以实现。
      文本框控件如下


  1.         $('input[name=MM]').bind('mousewheel', function(event) {
  2.                           if(event.originalEvent.wheelDelta>0)
  3.                           {  
  4.    var k=contentPane.parameterEl.getWidgetByName("mm").getValue();
  5.    var kk=parseInt(k)+1;
  6.    contentPane.parameterEl.getWidgetByName("mm").setValue(kk);
  7.                           }
  8.                           else
  9.                           {
  10.                                    var k=contentPane.parameterEl.getWidgetByName("mm").getValue();
  11.    var kk=parseInt(k)-1;
  12.    contentPane.parameterEl.getWidgetByName("mm").setValue(kk);
  13.                                   }
  14. });
复制代码


       下面是日期控件的js

  1. function addDate(date, days) {
  2. if (days == undefined || days == '') {
  3. days = 1;
  4. }
  5. var date = new Date(date);
  6. date.setDate(date.getDate() + days);
  7. var month = date.getMonth() + 1;
  8. var day = date.getDate();
  9. return date.getFullYear() + '-' + getFormatDate(month) + '-' + getFormatDate(day);
  10. }//加减日期的一个函数,参数为日期和天数,可以为负,这里可以用FR内置函数。
  11. function getFormatDate(arg) {
  12. if (arg == undefined || arg == '') {
  13. return '';
  14. }
  15. var re = arg + '';
  16. if (re.length < 2) {
  17. re = '0' + re;
  18. }
  19. return re;
  20. }//为上面的日期函数服务

  21. $('div[widgetname=U]>div>input').bind('mousewheel', function(event) {
  22. if(event.originalEvent.wheelDelta>0)
  23. {
  24. var k=contentPane.parameterEl.getWidgetByName("U").getValue();

  25. //var kk=parseInt(k)+1;
  26. var kk=addDate(k);
  27. contentPane.parameterEl.getWidgetByName("U").setValue(kk);
  28. }
  29. else
  30. {
  31. var k=contentPane.parameterEl.getWidgetByName("U").getValue();
  32. //var kk=parseInt(k)-1;
  33. var kk=addDate(k,-1);
  34. contentPane.parameterEl.getWidgetByName("U").setValue(kk);
  35. }
  36. });
复制代码

          注意一点,里面的input[name=]这里填写你的控件名,下面的getWidgetByName("U").这里的U也填你的控件名!上面的参数控件实现的是加1的操作,下面的日期控件是实现的多一天少一天的操作,如果要修改,为多天,addDate(k,-1),将-1改为你想要的,比如。3,-3.还有,必须 要有初始值。
    2.控件不在参数面板
    注意,这种情况,必须是直接显示控件才有效,如果不直接显示控件只有文本框可以写在编辑前事件。日期控件要实现的话比较复杂,这里没有给出这种做法,如果有特别需要可以回帖。
       与前面的JS类似有小差别。文本框的如下:
      
  1. $('input[name=K]').bind('mousewheel', function(event) {
  2.                           if(event.originalEvent.wheelDelta>0)
  3.                           {  
  4.    var k=contentPane.curLGP.getCellValue("B4");
  5.    var kk=parseInt(k)+1;
  6.    contentPane.setCellValue("B4",null,kk);
  7.                           }
  8.                           else
  9.                           {
  10.                                    var k=contentPane.curLGP.getCellValue("B4");
  11.    var kk=parseInt(k)-1;
  12.   contentPane.setCellValue("B4",null,kk);
  13.                                   }
复制代码
       这里K是控件名,B4是单元格。注意不要填混了!
       下面是日期控件的
      
  1. function addDate(date, days) {
  2.             if (days == undefined || days == '') {
  3.                 days = 1;
  4.             }
  5.             var date = new Date(date);
  6.             date.setDate(date.getDate() + days);
  7.             var month = date.getMonth() + 1;
  8.             var day = date.getDate();
  9.             return date.getFullYear() + '-' + getFormatDate(month) + '-' + getFormatDate(day);
  10.         }
  11. function getFormatDate(arg) {
  12.             if (arg == undefined || arg == '') {
  13.                 return '';
  14.             }

  15.             var re = arg + '';
  16.             if (re.length < 2) {
  17.                 re = '0' + re;
  18.             }

  19.             return re;
  20.         }//日期计算函数,同上面一样
  21.     $('div[widgetname=KK]>div>input').bind('mousewheel', function(event) {
  22.                           if(event.originalEvent.wheelDelta>0)
  23.                           {  
  24.    var k=contentPane.curLGP.getCellValue("D4");

  25.    //var kk=parseInt(k)+1;
  26.   var kk=addDate(k);
  27.   contentPane.setCellValue("D4",null,kk);
  28.                           }
  29.                           else
  30.                           {
  31.                                      var k=contentPane.curLGP.getCellValue("D4");
  32.    //var kk=parseInt(k)-1;
  33.     var kk=addDate(k,-1);
  34.   contentPane.setCellValue("D4",null,kk);
  35.                                   }

  36.   
  37.    
  38. });
复制代码
           这里同样,KK是控件名,D4是单元格。还有如果你是写到加载结束事件,那么前面的日期计算函数可以不用再写一次。同样必须要有初始值。
            不在参数面板还有一点很关键,当操作对象是日期控件的时候,日期控件不能是第一个被操作的对象,否则可能不生效,如果遇到不生效的情况,那么就是你第一个点的是日期控件,这个bug和FR的本身数据类型有关,解决的话,有点麻烦。
          介于上面可能有同学理解的不是很清楚,这里 有模版。
    WorkBook249.cpt (8.64 KB, 下载次数: 2, 售价: 150 个F豆) 编辑于 2018-1-23 16:24  
分享扩散:

沙发
发表于 2018-1-23 16:52:33
板凳
发表于 2018-1-24 09:26:50
已提名精华帖,待论坛运营委员会评分后可评为精华帖,帆软论坛精华帖奖励计划http://bbs.fanruan.com/thread-91079-1-1.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表