| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2406 人关注过本帖, 1 人收藏
标题:如何使表格的最后一列里输入 2 个数字后自动换行
只看楼主 加入收藏
dodolau
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-12-4
收藏
得分:0 
以下是引用hu9jj在2014-12-5 07:51:01的发言:


良药苦口,忠言逆耳。话虽然不中听,但道出关键所在:用现成的控件必定会受到某些限制的,因为控件制作时很难做到满足所有人的需求。解决的办法通常有:一是绕道而走,如楼主的解决办法;二是重起炉灶,但需要一定的功底。

我相信,一定有办法可以控制,控件也有控件的好处,作为业余使用者来说,快速,学习了,感谢!
2014-12-05 08:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用dodolau在2014-12-5 01:33:36的发言:

啥叫爱用现成的,说话这么难听,谁学习的过程不是模仿的过程呢,

问题已经解决了,只会说风凉话有啥意思。


解决思路。。。
在text1的 interracativechange
中 调用api。。。模拟回车。。。。搞定。
IF LEN(ALLTRIM(this.value))=2
Declare keybd_event In Win32API Short bVk,Short bScan,Integer dwFlags, Integer deExtraInfo
keybd_event(13, 0, 0, 0)
keybd_event(13, 0, 2, 0)
ENDIF

keypress中
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nkeycode=13
   KeyBoard "{DnArrow}"
ENDIF



说的不错

DO IT YOURSELF !
2014-12-05 08:32
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
在 InteractiveChange 事件里判断再 SKIP 也可以吧?
2014-12-05 11:04
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:0 
看来,很常规的操作,总是有作为‘新问题’提出的,正常现象。
grid 的功能很强大,里面的道道非常多,看起来是个表格,实际上是若干小小控件构成。一个小格子,就是一个功能众多的控件。在里面操作,可以做即时计算操作、提取远程数据或存取数据至远程的操作、调用其他控件操作、跳出grid,进入其他界面的控件中...等等,在小小的格里里都可以做到的。
2014-12-05 15:59
dodolau
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-12-4
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
SELECT cursjcjb2   &&表格的数据源
GO RECNO()
tmpcj1=ALLTRIM(cursjcjb2.zgcjlr1dm)

DO CASE 
   CASE LEN(tmpcj1)=2
        *!*    If Between(VAL(This.Value),10,99)
        If LEN(ALLTRIM(this.Value))=2
           tmpcj2=ALLTRIM(This.Value)
           IF tmpcj1!=tmpcj2
              thisform.t_ylcj.Value=tmpcj1
              thisform.t_elcj.Value=tmpcj2
              IF MESSAGEBOX("两次成绩不想等,是否确认二录成绩?",4+32,"警告:二录成绩与一录成绩不一致!")=7
                 this.Value=""
                 this.SetFocus
                 RETURN
              ENDIF
           ENDIF
            With ThisForm.Grid1
                If .ActiveRow<Reccount()
                    &&Keyboard '{DNARROW}'
                    Go .ActiveRow+1
                   .Refresh
                ELSE
                   MESSAGEBOX("到了最后一行")
                Endif 
            ENDWITH
        ENDIF
    CASE LEN(tmpcj1)=1
        If LEN(ALLTRIM(this.Value))=1
           tmpcj2=ALLTRIM(This.Value)
           IF tmpcj1!=tmpcj2
              thisform.t_ylcj.Value=tmpcj1
              thisform.t_elcj.Value=tmpcj2
              IF MESSAGEBOX("两次成绩不想等,是否确认二录成绩?",4+32,"警告:二录成绩与一录成绩不一致!")=7
                 this.Value=""
                 this.SetFocus
                 RETURN
              ENDIF
           ENDIF
            With ThisForm.Grid1
                If .ActiveRow<Reccount()
                    &&Keyboard '{DNARROW}'
                    Go .ActiveRow+1
                   .Refresh
                ELSE
                   MESSAGEBOX("到了最后一行")
                Endif 
            ENDWITH
        ENDIF
ENDCASE    
2014-12-07 23:35
dodolau
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-12-4
收藏
得分:0 
最后的结果:一录成绩分为两种情况,个位数,和2位数
还要判断 一录成绩与二录成绩是否相等

去掉 中间的 Keyboard '{DNARROW}'
不然 不一致的时候会跳两行,
一致的时候没问题
这个应该是不影响运行效果。
还有个奇怪的事情,如果在 表单的 int实践中,对 表格控件的 height 属性进行变化,那么 表格就不会换行了,不知道是为什么,
2014-12-07 23:38
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
其实,在任何时候可用SKIP换到下一行,用SKIP -1换到上一行,当然要控制好EOF()和BOF()。
可用SetFocus刷新GRID和定位焦点,这些都与表格控件的height无关。
2014-12-08 07:35
dodolau
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2014-12-4
收藏
得分:0 
为什么  在 最后一列的text1中的keypress中

LPARAMETERS nKeyCode, nShiftAltCtrl
IF nkeycode=13
   KeyBoard "{DnArrow}"
ENDIF

始终无法换行呢
2014-12-08 21:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
因为有个回车事件动作,用 NODEFAULT 命令禁止。
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nkeycode=13
    NODEFAULT
   KeyBoard "{DnArrow}"
ENDIF
2014-12-08 23:30
快速回复:如何使表格的最后一列里输入 2 个数字后自动换行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019096 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved