| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1721 人关注过本帖, 2 人收藏
标题:如何让12345678900在TEXT框中录入的时候自动就变成123,456,789.00
取消只看楼主 加入收藏
zhjm
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-3-22
结帖率:50%
收藏(2)
已结贴  问题点数:20 回复次数:5 
如何让12345678900在TEXT框中录入的时候自动就变成123,456,789.00
如何让12345678900在文本框中录入的时候自动就变成123,456,789.00
而不是要他把123456789都输入完后才变 ,要边输入边变.
 
举例:
 
输入 1 显示 0.01,继续输入 2 显示 0.12     
输入123456 显示1,123.56
输入12345678900 显示123,456,789.00
根据输入数字长度自动显示显示小数点和千分位
输入时插入点在最右边,数字逐个左移

[ 本帖最后由 zhjm 于 2011-6-26 19:34 编辑 ]
搜索更多相关主题的帖子: 文本框 小数点 
2011-06-26 01:57
zhjm
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-3-22
收藏
得分:0 
以下是引用hu9jj在2011-6-26 07:35:08的发言:

动态计算text控件显示的值。
动态计算text控件显示的值可以做到,插入点如何处理。
2011-06-26 19:32
zhjm
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-3-22
收藏
得分:0 
www. 的 dkfdtf(都市夜猫)帮忙解决了

1. 文本框的 Inputmask 设为 999,999,999,999.99

2. Init 事件中写:
This.Value = 0
Keyboard '0'


3. KeyPress 事件中写:
LPARAMETERS nKeyCode, nShiftAltCtrl

cc = Chr(nKeyCode)
If Between(cc, '0', '9')
    This.Value = This.Value * 10 + Val(cc) * 0.01
    This.SelStart = Len(Transform(This.Value, This.InputMask))
    NoDefault
EndIf

[ 本帖最后由 zhjm 于 2011-6-27 12:27 编辑 ]
2011-06-26 20:55
zhjm
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-3-22
收藏
得分:0 
百度知道 FreeSoftnc编写的代码,堪称完美

什么都不要设置哦。。。用代码控制!!!
在TEXT的InteractiveChange 事件里加入下面代码!!!
lcstr=ALLTRIM(TRANSFORM(this.Value))
lcstr=STRTRAN(lcstr,',','')
lcstr=STRTRAN(lcstr,'.','')
IF !EMPTY(lcstr)
    IF LEN(lcstr)<3
        lcstr=PADL(lcstr,3,'0')
        lcstr=STUFF(lcstr,2,0,'.')
    ELSE
        lc1=left(lcstr,LEN(lcstr)-2) &&left(lcstr,LEN(lcstr)-2)
        n=0
        ln0=LEN(lc1)
        FOR i=1 TO LEN(lc1)-1
            IF MOD(i,3)=0
                *            n=n+1
                *        lc1=STUFF(lc1,i+n,0,',')
                lc1=STUFF(lc1,ln0-i+1,0,',')
                *从右到左的顺序显示
            ENDIF
        ENDFOR
        IF left(lc1,1)=','
            lc1=right(lc1,LEN(lc1)-1)
        ENDIF
        lcstr=lc1+'.'+RIGHT(lcstr,2)
        *-消除前导0
        lcstr=LTRIM(LEFT(lcstr,AT('.',lcstr,1)-1),'0')+'.'+;
            RIGHT(lcstr,LEN(lcstr)-AT('.',lcstr,1))
        *-防止出现.12的情况
        IF VAL(lcstr)<1
            lcstr=TRANSFORM(VAL(lcstr))
        ENDIF
    ENDIF
ENDIF
this.Value=lcstr
this.SelStart=LEN(lcstr)
thisform.Refresh
2011-06-29 13:07
zhjm
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-3-22
收藏
得分:0 
回复 9楼 hu9jj
如果你是一个财会人员,你就不会这样认为
2011-07-15 20:37
zhjm
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-3-22
收藏
得分:0 
回复 9楼 hu9jj
如果你是一个财会人员,你就不会这样认为
2011-07-15 20:37
快速回复:如何让12345678900在TEXT框中录入的时候自动就变成123,456,789.00
数据加载中...
 
   



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

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