在edit中,怎么控制只能输入数字及小数点,并且小数点不能在最前面以及最后面!

lss983 2001-07-25 06:47:34
我以编下列代码,但不能控制小数点在最前面以及最后面!
if key=#13 then //回车进入下一个输入框
begin
key:=#0;
perform(wm_nextdlgctl,0,0);
end;
if not (((key>'0') and (key<'9')) or (key='.')) then
//只能输入数字以及小数点
begin
key := #0;
messagebeep(0);
end
else
if (pos('.', edit10.text) <> 0) then
if key='.' then
begin
key := #0;
messagebeep(0);
end;
...全文
103 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzm2000 2001-07-25
  • 打赏
  • 举报
回复
在edit的exit事件中判断
ss := copy(edit1.text, 1, 1);
se := copy(edit1.text, length(edit1.text), 1);
if ss = '.' or se = '.' then
showmessage('首尾出现小数点,请重输');
lss983 2001-07-25
  • 打赏
  • 举报
回复
由于程序的特殊原因,不能用TMskedit 。
lanren 2001-07-25
  • 打赏
  • 举报
回复
TmaskEdit
wuyh78 2001-07-25
  • 打赏
  • 举报
回复
换用控件TMaskEdit试试,你利用其EditMask属性,你自己定义其规则即可!不妨试试??
delphi_user 2001-07-25
  • 打赏
  • 举报
回复
同意楼上,不过这样只能在输入回车的时候才能判断。
Clus 2001-07-25
  • 打赏
  • 举报
回复
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var S:String;
begin
S:=Copy(Edit1.Text,1,Length(Edit1.Text)-1);
if Key=13 then
if (Pos('.',Edit1.Text)=Length(Edit1.Text)) or (Pos('.',Edit1.Text)=1) then
begin
Edit1.Text:=S;
Edit1.SelStart:=Length(Edit1.Text);
messagebeep(0);
Exit;
end;
if (Key<>110) and (Key<>190) and ((Key<ord('0')) or (Key>ord('9'))) then
begin
Edit1.Text:=S;
Edit1.SelStart:=Length(Edit1.Text);
end;
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧