5,392
社区成员
发帖
与我相关
我的任务
分享
procedure TRes_Hr_Report_F.Button1Click(Sender: TObject);
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;