龙人在线
about me

Arron

抛砖只为引玉(QQ长期隐身在线)
不能富贵难成大器皆因懒,
胸无大志庸庸碌碌只为闲。

这里是我平时收集的和写的一些东西,希望和大家一起共同进步!

无聊看看电影 边听音乐边看 有空多交流
Google_search
Google
hot
latest
photos
还你真实的开幕式!震撼美图[转]【连载】 央行今日发行600万张面额10元奥运纪念钞(组图) 巧遇日本妹妹海滩拍片片 诱不可挡超级丰胸大美人
links
龙人在线 >> 学习资料 >> Delphi专栏 >> Delphi中限制文本框(TEdit)只能输入小数

Delphi中限制文本框(TEdit)只能输入小数

来源:来自网络 作者:不详 日期:2010-10-08 热度:

有些时候需要限制程序里的文本框(这里指TEdit控件)里只能输入某些特定字符。比如说限制只能输入数字,这时可以设置
TEdit的NumbersOnly属性来实现,这里的TEdit将被限制为只能输入0到9这十个字符。那么,如果需要限制输入小数呢,
小数点被阻止了,所以这时不能使用NumbersOnly属性,另外也没有别的属性能实现的。那就只有自己来做!

限制输入,可以在OnKeyPress事件中来做。见如下代码:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var 
  edt: TEdit;  
  str: string;  
  strL: string;  
  strR: string;  
begin 
  // 获取当前文本内容, 注意要去掉选中部分(因为会被改写).  
  edt := TEdit(Sender);  
  str := edt.Text;  
  if Length(edt.SelText) <> 0 then 
  begin 
    strL := LeftStr(edt.Text, edt.SelStart);  
    strR := RightStr(edt.Text, Length(edt.Text) - edt.SelStart - edt.SelLength);  
    str := strL + strR;  
  end;  
 
  // 限制输入数字/小数点/退格键  
  if not CharInSet(Key, ['0'..'9', '.', #8]) then Key := #0;  
  // not (Key in ['0'..'9', '.', #8])  
 
  // 第一位不能为小数点  
  if (Key = '.') and (edt.SelStart = 0) then Key := #0;  
 
  // 只能输入一个小数点  
  if (Key = '.') and (Pos('.', str ) > 0) then Key := #0;  
 
  // 不能在前面插入 0 (输入第一个 0 时除外)  
  if (Key = '0') and (edt.SelStart = 0) and (str <> '') then Key := #0;  
 
  // 不能连续输入 0  
  if (Key = '0') and (LeftStr(str, 1) = '0') and (Pos('.', str) <= 0) then Key := #0;  
end; 

 

以上考虑到了比较多的情况,可以很好的限制输入小数。

如果程序里有很多的TEdit要做此限制,当然不必给每个控件写代码,把事件指定到同一个过程就行了

 

 

========================================================

如何在delphi里面控制Edit只能输入数字
━━━━━━━━━━━━━━━━━━━━━━━━━━

if not (key in ['0'..'9',#8]) then key := #0;


只能输入汉字,而不能输入数字或其他字符
━━━━━━━━━━━━━━━━━━━━━━━━━━
在Edit的OnKeyPress事件中
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Ord(Key)<127) or (Ord(Edit1.Text[1])>127) then
Key:=#0;
end;


要使一文本框中只可输入数字,而且当输入的数字错误时还可以通过Backspace键来修改.
━━━━━━━━━━━━━━━━━━━━━━━━━━
由于BackSpace的ASCII值是8,所以像以下这样即可
if (key<>#46) and ((key < #48) or (key > #57)) and (key <> #8) then
//如果输入不是数字或小数点(#46代表小数点)
begin
key:=#0; //取消输入的内容(#0代表空值)
showmessage('输入错误!请输入数字!'); //发出提示信息
end;

方法二:
if not (key in ['0'..'9',#13,#8 ,#46]) then
key := #0;
这样就可以了


只能输入数字,而不能输入其他字符
━━━━━━━━━━━━━━━━━━━━━━━━━━
edit 属性Maxlength 设置2;
在edit的onkeypress里
procedure Tmainform.editkeypress(sender:tobject;var key: char );
var
Uflag: integer;
begin
Uflag:=Tedit(sender).Tag;
if (not (key in ['1'..'9'])) and (not (key=#8)) then key:=#0;
end;


方法二:
edit的maxlength设置为2;
在edit的onkeypress事件内
procedure Ttbdlform.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key <> #9 then// #9 是空格,你可以查找下数字1\2\3是什么值
showmessage('请输入数字')
end;


只能输入数字和小数点
━━━━━━━━━━━━━━━━━━━━━━━━━━
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9','.',#8,#32]) then
key:= #0;
end;
end.
但如果你想只输入数字而且有格式限制 那么你最好还是用第三方控件`

方法二:
可以在keypress里面加上如下代码,可以输入数字,并且可以使用退格删除数字,可以使用回车
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9', #8, #13, #27, '.' : ;
else
begin
MessageBox(Handle, '请输入数字', PChar('输入错误'), MB_OK + MB_ICONINFORMATION);
Key := #0;
end;
end;
end;

 

Tags: Delphi
广告位招租,广告代号:gg468
Class Navigation
search
站内
advertise
Copyright © www.jx19.Com All rights reserved.