CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  非技术区

edit有点小问题

楼主wqrz15()2005-08-04 10:45:30 在 Delphi / 非技术区 提问

procedure   TForm.Edit1KeyPress(Sender:   TObject;   var   Key:   Char);  
  begin  
          if   Not   (Key   in   ['1','2','3','4','5','6','7','8','9','0',chr(8)])   then  
          begin  
              Key   :=   #0;  
              exit;  
          end;  
      if   Edit1.Text=''   then   exit;       //这里     我想在edit1里写数字   然后计算一些东西     可是要是edit1里只有一位数字的时候,Edit1.Text老是为空         要怎么办啊???  
      ...  
      ...  
   
  end; 问题点数:100、回复次数:13Top

1 楼Erice(白雪公猪)回复于 2005-08-04 10:55:09 得分 0

此时,KEY的值还没有写入EDIT的TEXT属性,当然为空了。你在这个事件里写判断是有错误的!!Top

2 楼hangguojun(布丁)回复于 2005-08-04 11:01:30 得分 0

同意白雪公猪  
   
  如果是方向键,DEL,怎么办,好象没有处理  
  Top

3 楼hangguojun(布丁)回复于 2005-08-04 11:05:04 得分 0

begin  
      if   not   (Key   in   ['0'..'9'])   then  
      begin  
          key:=#0;  
          exit;  
      end;  
  end;  
  Top

4 楼hqhhh(枫叶)回复于 2005-08-04 11:10:50 得分 0

你可以放在Edit1失复查焦点的时候写,  
   
  ----------------------  
      if   Edit1.Text=''   then   exit;       //这里     我想在edit1里写数字   然后计算一些东西     可是要是edit1里只有一位数字的时候,Edit1.Text老是为空         要怎么办啊???Top

5 楼myheartzhang(乔乔)回复于 2005-08-04 11:21:09 得分 0

如果EDIT不想为空的话,你在它失去焦点的时候写判断如:  
   
  procedure   TFrm1.Edit1Exit(Sender:   TObject);  
  begin  
      if   Trim(Edit1.Text)   <>   ''   then  
              exit;  
  end;  
   
  就可以了。Top

6 楼myheartzhang(乔乔)回复于 2005-08-04 11:23:09 得分 0

不好意思,把‘<>’改为‘=’打错了。Top

7 楼wqrz15()回复于 2005-08-04 13:57:44 得分 0

可是我后面要进行计算啊     要是不能用edit1.text的话       那只能用key了??  
  可是key又很不方便     并且我画的那个窗体   要用Edit1Exit事件   几乎不行  
   
  还有别的方法能让别人在写完字后     按确定按钮前就能计算出想要的结果吗?Top

8 楼hangguojun(布丁)回复于 2005-08-06 15:51:49 得分 0

你可以这样:  
  比如你要算   a   *   b   =   c;  
  a   即edit1  
   
  procedure   tform1.edit1keypress(...)  
  begin  
      if   key   in   ['0'..'9']   then  
          c   :=   strtoint(edit1.text)   *   b;  
  end;  
  Top

9 楼tengxiang05(一座桥)回复于 2005-08-06 20:08:03 得分 0

当焦点失去之后再计算就是了  
  没有必要一边输一边计算  
  或者敲回车   计算也行Top

10 楼jkx01whg(爱迪01)回复于 2005-08-07 15:19:16 得分 0

同意楼上和"桥桥"Top

11 楼Nobu(老板有理,客户有钱,两头受气,什么玩意)回复于 2005-08-07 16:57:03 得分 0

if   key   =   #13   then//当按下回车后  
  {计算代码}  
   
  不知道是不是楼主的意思Top

12 楼maxtool(≮From NingBoo≯)回复于 2005-08-11 10:07:06 得分 0

用打回车来计算Top

13 楼huiwww(十足菜鸟)回复于 2005-08-11 10:49:25 得分 0

TForm.Edit1KeyPress  
  表示在按键盘的时候触发,所以此时的edit.text内容还没有接受到键盘输入的key   值  
  你的  
  if   Edit1.Text=''   then   exit;  
  在Edit1.Text=''   是没有意义的Top

相关问题

  • 有点小问题!!!
  • 有点小棘手!!!
  • 又有点小麻烦!!
  • Socket有点小麻烦
  • 高手请进.......有点小难度.....
  • 终于有点小成绩!!!citymeteor(流星)
  • 今天日子有点小不同
  • 没有出错,但有点小问题
  • DBGrid统计结果有点小问题
  • goody9807老大,还有点小问题??

关键词

  • 数字
  • edit1
  • 计算
  • 回车
  • edit
  • keypress
  • exit
  • key
  • 焦点
  • tform

得分解答快速导航

  • 帖主:wqrz15

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo