键值问题(50分)

M

muxj

Unregistered / Unconfirmed
GUEST, unregistred user!
想在edit中只允许输入数值,在edit的keypress事件中加入以下事件
if not (key in ['0'..'9','.']) then key:=chr(0);
在编辑时del和退格键也被屏蔽掉了请问如何加进上面语句?
 
if not (Key in ['0'..'9', '.', #8]) then key := #0;
至于Del,应该不受影响.Del是在OnKeyUp中捕捉VK_DELETE的.
 
在edit1的OnChange事件中,写下如下程序:
var code:integer;
num:double;
const sss:string='';
begin
val(edit1.text,num,code);
if code<>0 then edit1.text:=sss
else sss:=edit1.text;
edit1.SelStart :=length(edit1.text);
end;
 
你那句改一下就行了:
if not (key in ['0'..'9','.',#8,#46]) then key:=#0;
//#8是退格键键值,#46是Del键键值
 
在onkeypress事件中处理,阻止不了粘贴字符的动作的。
先对字符来一个CTRL+C,然后再来一个SHIFT+INSERT,
就可以粘贴字符比如:“abc ”的。
 
//if not (key in ['0'..'9','.'])
此方式能保证输入数值的正确性吗? (如 12354.12.34)
按照 dedema 的思路去处理比较合适,最好加上 try...except..
 

Similar threads

顶部