| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1618 人关注过本帖
标题:关于不允许出现2个小数点问题
只看楼主 加入收藏
zjwlhxy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-14
收藏
 问题点数:0 回复次数:3 
关于不允许出现2个小数点问题
如下这段程序
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var c: Integer;
begin
  if key='.' then
  begin
    for c:=1 to length(TEdit(Sender).text) do     //这里的语句是控制不输入2个小数点
    begin
      if Tedit(Sender).text[c]='.' then key:=#0;   
    end;
  end
  else
    if key=#13 then PerForm(WM_NEXTDLGCTL,0,0)
    else
        if key=#8 then key:=#8
        else
          if (key<'0') or (key>'9') then
            key:=#0;
end;
他里面的for c:=1 to length(TEdit(Sender).text) do   
    begin
      if Tedit(Sender).text[c]='.' then key:=#0;
我是理解他这个语句就是不允许输入小数点,但是实际上这个语句的作用就是不允许输入2个小数点,但能输入一个小数点,高手能不能回答下,谢谢。
搜索更多相关主题的帖子: 小数点 the Sender els 
2008-04-09 21:22
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
要完整的看

  if key='.' then //如果按了小数点才会进行下面的判断
  begin
    for c:=1 to length(TEdit(Sender).text) do     //遍历前面输入的所有字符
    begin
      if Tedit(Sender).text[c]='.' then key:=#0;    //如果已经有小数点,则禁止输入小数点
    end;
  end
  else //如果输入的不是小数点,执行下边的程序
 .......

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-04-10 14:38
provoke
Rank: 2
来 自:广州
等 级:新手上路
威 望:5
帖 子:175
专家分:0
注 册:2007-6-14
收藏
得分:0 
在keypress事件中限制很复杂
如果要通过限制按键来强制只能输入数字,还应当考虑
1、小数点不能出现在第一位/最后一位;
2、允许在首位输入负号;
3、允许在末位输入百分号;
4、禁止形如00.5等非法数值;
……
越想越多,好麻烦!最好还是对所输入的字符串转换为数值,嵌入到try...except中,若转换失败再给出相应的提示,否则不可能考虑到所有的情况。总不能用穷举法一一禁用吧!
在控件的change事件里

爱我至爱,至死不渝!
2008-04-10 21:24
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:0 
在执行这段代码的时候,输入的字符其实还没有进入输入框啊,
这时的判断就是:如果已经有小数点了的话,则不再允许输入了。
2008-04-10 23:35
快速回复:关于不允许出现2个小数点问题
数据加载中...
 
   



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

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