各位大虾帮忙吧
解决方案 »
- DELPHI远程视频传输问题?
- Richviewedit保存自定义的文件后缀名????
- DELPHI 对db2数据库 查询错误!! 大虾们帮忙!!
- 散尽所有分数,求助一道简单的adoquery的多表查询统计问题,高手请进!
- 一段完整的代码?花五分钟时间帮我统计一个表里的合计数!
- 有谁知道?
- 问题来了。在线等.
- 如何使得RxDBLookupCombo空白中默认填写下拉框内的第一条记录
- 简单问题。
- 用sql统计的问题
- 遇到一个难题,请高手帮忙解决!!--------------------在线等待!!!!!!!!
- 在delphi中怎样对字符串进行urlencode编码?急!!! 在线等待.....
2.在OnKeyUp事件里写入var
len1, len2, P_pos:integer;
begin
len1:=length(trim(edit1.text));
P_pos:=Pos('.',trim(edit1.text));
len2:=length(Copy(trim(edit1.text), P_pos+1, len1-P_pos));
if len2>2 then
begin
Application.MessageBox('小数点后超过两位','警告',0);
edit1.SetFocus;
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
DotPos,Len:integer;
begin
DotPos:=pos('.',(Sender as TEdit).Text);
Len:=length((Sender as TEdit).Text);
if key in ['0'..'9',#8,'.','+','-'] then
begin
if (key in ['+','-']) then
begin
//只能在光标处于第一的位置,才能输入'+'或者'-'
if ((Sender as TEdit).SelStart>0) then
begin
key:=#0;
exit;
end;
//'+','-'互斥
if (pos('+',(Sender as TEdit).Text)>0) or
(pos('-',(Sender as TEdit).Text)>0) then
begin
key:=#0 ;
exit;
end;
end ;
if key in ['.'] then
begin
//只能输入一个'.'
if (DotPos>0) then
begin
key:=#0 ;
exit;
end;
//只能在'+','-'后面输入'.'
if (pos('+',(Sender as TEdit).Text)>0) or
(pos('-',(Sender as TEdit).Text)>0) then
if ((Sender as TEdit).SelStart<=0) then
begin
key:=#0 ;
exit;
end;
//小数点必须在最后两位
if (DotPos<=0) and ((Sender as TEdit).SelStart<Len-2) then
begin
key:=#0 ;
exit;
end;
end;
if key in ['0'..'9'] then
//小数点后面最多两位
if (DotPos>0) and(DotPos<=Len-2) and
((Sender as TEdit).SelStart>=DotPos) then
key:=#0 ;
end
else
key:=#0;
end;
procedure Tfrmnewproject.edtfloatExit(Sender: TObject);
var tempstr,tempstrline:string;
begin
if pos('.',(sender as Tedit).Text)=1 then
begin
messagebox(handle,'您输入的数据非法,数字首位不可以为小数点,请重新输入',strwyd,mb_iconstop+mb_ok);
(sender as Tedit).Text:='';
(sender as Tedit).SetFocus;
exit;
end;
if pos('-',(sender as Tedit).Text)<>0 then
begin
tempstrline:=copy((sender as Tedit).Text,pos('-',(sender as Tedit).Text)+1,length((sender as Tedit).Text));
if pos('-',(sender as Tedit).Text)<>1 then
begin
messagebox(handle,'您输入的数据非法,数字首位才可以为负号,请重新输入',strwyd,mb_iconstop+mb_ok);
(sender as Tedit).Text:='';
(sender as Tedit).SetFocus;
exit;
end;
if (copy(tempstrline,1,1)='.') then
begin
messagebox(handle,'您输入的数据非法,请重新输入',strwyd,mb_iconstop+mb_ok);
(sender as Tedit).Text:='';
(sender as Tedit).SetFocus;
exit;
end;
if pos('-',tempstrline)>0 then
begin
messagebox(handle,'您输入的数据非法,请重新输入',strwyd,mb_iconstop+mb_ok);
(sender as Tedit).Text:='';
(sender as Tedit).SetFocus;
exit;
end;
end;
if pos('.',(sender as Tedit).Text)>0 then
begin
tempstr:=copy((sender as Tedit).Text,pos('.',(sender as Tedit).Text)+1,length((sender as Tedit).Text));
if (pos('.',tempstr)>0) then
begin
messagebox(handle,'您输入的数据非法,请重新输入',strwyd,mb_iconstop+mb_ok);
(sender as Tedit).Text:='';
(sender as Tedit).SetFocus;
end;
if trim(tempstr)='' then begin (sender as Tedit).Text:=copy((sender as Tedit).Text,1,pos('.',(sender as Tedit).Text)-1);exit; end;
if length(tempstr)>4 then
(sender as Tedit).Text:=copy((sender as Tedit).Text,1,pos('.',(sender as Tedit).Text))+copy(tempstr,1,4);
end;
end;