delphi 文本框的keypress事件为什么响应鼠标按键?在线等 ,急急!!!!

我做了一个Delphi程序,在一个文本框中只能输入数字、退格键、小数点,代码如下:
procedure TParamConfigForm.lbledt9KeyPress(Sender: TObject; var Key: Char);
begin
if not((key in ['0'..'9',#8,'.']) ) then // #8 表示在ASCII表中的第8个字符,此处为退格键
begin
Messagebox (0,'输入不是数字或小数点,请重新输入!','警告',MB_ICONEXCLAMATION);
key := #0; // #0 表示在ASCII表中的第0个字符,此处为空字符
end;
end;
可是我在调试时,按住鼠标左键选中文本框中的内容后不放松,然后把鼠标移到文本框之外,这时就产生了文本框的keypress事件,即弹出消息对话框“输入不是数字或小数点,请重新输入!”;或者用鼠标双击文本框时同样也可以触发文本框的keyPress事件。
小弟是新手,请各位前辈们解释一下为什么会这样?小弟不胜感激!

单纯看你的代码,我测试过了没有什么问题。
不过,如果你只是要实现输入数字的功能,推荐你使用TRzNumbericEdit控件。这个控件可以很简单的实现整数或浮点数的输入。通过IntegersOnly属性修改一下就可以了。

这个控件是Raize Components中的一个,里面还包含了其他许多有用的控件。Delphi最大的好处就是控件很多,多用控件可以大大提高效率。Raize的下载地址网上搜索一下即可。我就不提供了。追问

我找到原因了,原来是我的电脑问题!
我把程序拷到别的电脑上运行没有任何问题,但是在我的电脑上运行就不行!不知道是不是因为我电脑是笔记本的原因还是什么的,我现在不知道怎么解决这个问题,不过我会试一下你说的控件!谢谢你了!

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-03
应该不存在这个问题
你看看你的文本框控件的事件中,ONDbclick事件和ONdragdrop事件是不是也选上onkeypress事件了,如果选上了,删除了就正常了追问

我看了,没有ONDbclick事件和ONdragdrop事件,只有onkeypress事件!

追答

比较奇怪,是个诡异的问题

追问

我把程序拷到别的电脑上运行没有任何问题,但是在我的电脑上运行就不行!不知道是不是因为我电脑是笔记本的原因还是什么的,我现在不知道怎么解决这个问题,

追答

你再拷别的机器上,如果两三台机器都是没问题的话,就先别管它了,先做,等全做完了再说


Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答
大家正在搜