آیا راهی هست که بشه اعداد رو سه رقم سه رقم از سمت راست با علامت کاما جداکرد ؟
{در قسمت}
var
loc1,loc2:word;
Masking:boolean=False;
Adding_Digit:boolean=True;
implementation
{$R *.dfm}
{ کد زیر رابنویسید Edit1Change و در رویداد Edit1, eventsدر قسمت}
procedure TForm1.Edit1Change(Sender: TObject);
var
i,j,n,m: Integer;
a:array of string;
My_Final_Text:string;
begin
if Masking then
Masking:=false
else
begin
n:=0;
m:=0;
My_Final_Text:='';
for i := 1 to length(edit1.text) do
if Edit1.Text[i] in ['0'..'9'] then
n:=n+1
else
m:=m+1;
if (n>3) or ((n<=3) and (Length(edit1.Text)>3))then
begin
loc1:=edit1.SelStart;
setlength(a,n);
j:=0;
for i := 1 to length(edit1.text) do
if Edit1.Text[i] in ['0'..'9'] then
begin
a[j]:=Edit1.Text[i];
j:=j+1;
end;
j:=0;
for i := n downto 1 do
begin
if ((n-i) mod 3=0) and ((n-i)<>0) then
begin
My_Final_Text:=','+My_Final_Text;
j:=j+1;
end;
My_Final_Text:=a[i-1]+My_Final_Text;
end;
if edit1.Text<>My_Final_Text then
begin
Masking:=True;
edit1.Text:=My_Final_Text;
end;
if Adding_Digit then
edit1.SelStart:=loc1+j-m
else
Edit1.SelStart:=loc2+j-m
end;
end;
end;
{ کد زیر رابنویسید Edit1KeyDown و در رویداد Edit1, eventsدر قسمت}
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=Vk_Delete) and (edit1.SelLength=0) and ((edit1.SelStart+1)<=length(edit1.text)) and (edit1.Text[edit1.SelStart+1]=',')then
begin
loc2:=edit1.SelStart+1;
edit1.SelStart:=edit1.SelStart+1;
Adding_Digit:=False;
end
else
if (key=Vk_Back) and (edit1.SelLength=0) and ((edit1.SelStart-1)>=1) and (edit1.Text[edit1.SelStart]=',') then
begin
loc2:=edit1.SelStart-2;
edit1.SelStart:=edit1.SelStart-1;
Adding_Digit:=False;
end
else
Adding_Digit:=True;
end;
{ کد زیر رابنویسید Edit1KeyDown و در رویداد Edit1, eventsدر قسمت}
{برای جلوگیری از ورود کاراکتر های حروفی}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not( key in ['0'..'9',#8,#46]) then
key:=#0;
end;
end.
موفق وسربلند باشید .
*******************************************************************