P
pengq
Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Edit2Change(Sender: TObject);
var
str:string;
strn:string; //用于保存从分组中去掉','而分离出的数字 如1,234 变成1234
i:integer;
m:integer;//分组的长度,包括 ','的长度
begin
str:=edit2.Text ;
m:=length(str);
if str <> str_sep then
begin
strn:='';
if m <= 4 then strn:=str //光标在右边
else if m > 5 then //光标在最左边
begin
for i:=2 to length(str) do
if str<>',' then strn:=strn+ str ;
strn:=strn+str[1]; //把刚才从最左边输入的数字移到最右边
end;
str_sep:= format('%1.0n',[strtofloat(strn )*1.0]); //str_sep 全局变量
end;
edit2.text:=str_sep;
end;
我是这样实现的,发现一个问题就是输三位数字的时候,光标是从左到右,输第5位时,光标就一直停留在最左边,所以程序需要判定大于5时要把在光标处输入的数字换到右边,重新FORMAT,这样才能基本达到要求,但是也不全部满意,因为光标都在最左边,请问各位还有别的方法吗?另外TEDIT中能让其文本右对齐吗?谢谢!
var
str:string;
strn:string; //用于保存从分组中去掉','而分离出的数字 如1,234 变成1234
i:integer;
m:integer;//分组的长度,包括 ','的长度
begin
str:=edit2.Text ;
m:=length(str);
if str <> str_sep then
begin
strn:='';
if m <= 4 then strn:=str //光标在右边
else if m > 5 then //光标在最左边
begin
for i:=2 to length(str) do
if str<>',' then strn:=strn+ str ;
strn:=strn+str[1]; //把刚才从最左边输入的数字移到最右边
end;
str_sep:= format('%1.0n',[strtofloat(strn )*1.0]); //str_sep 全局变量
end;
edit2.text:=str_sep;
end;
我是这样实现的,发现一个问题就是输三位数字的时候,光标是从左到右,输第5位时,光标就一直停留在最左边,所以程序需要判定大于5时要把在光标处输入的数字换到右边,重新FORMAT,这样才能基本达到要求,但是也不全部满意,因为光标都在最左边,请问各位还有别的方法吗?另外TEDIT中能让其文本右对齐吗?谢谢!