PDA

View Full Version : جدا کننده ارقام



kheyri
یک شنبه 30 بهمن 1384, 14:31 عصر
چطوری میشه هنگام ورود اعداد در EDITBOX بصورت اتوماتیک 3 رقم 3 رقم جدا بشه. البته با maskedit این کارو کردم ولی میخوام با EDITBOX این کار انجام بشه.
ممنونم

mzjahromi
یک شنبه 30 بهمن 1384, 14:59 عصر
توی on change بنویس Setnum(Sender) این تابع هم اینه



Procedure TMB.SetNum(Sender:TObject);
var
i,L:Integer;
begin
i:=TEdit(Sender).SelStart;
L:=Length(TEdit(Sender).Text);
TEdit(Sender).Text:=IntToStr1(StrToInt1(TEdit(Send er).Text));
TEdit(Sender).SelLength:=0;
TEdit(Sender).SelStart:=i-(l-Length(TEdit(Sender).Text));
if TEdit(Sender).Text='0' Then
TEdit(Sender).SelectAll;
End;


توابع InttToStr1,StrToInt1 هم توابعی هستند که اعداد را جدا می کنند و به حالت اول بر میگردونن. البته شاید راههای ساده تر هم وجود داشته باشه

m-khorsandi
دوشنبه 01 اسفند 1384, 08:34 صبح
Function TForm1.Fnc_ReturnNum(Prm_Str: String): String;
begin
while Pos(',', Prm_Str) > 0 do
Delete(Prm_Str, Pos(',', Prm_Str), 1);

Result := Prm_Str;
end;

procedure TForm1.Edit1Change(Sender: TObject);
var
iPos: Integer;
begin
if Length(Edit1.Text) <> 0 then
begin
iPos := Edit1.SelStart;
Edit1.Text := FormatFloat('#,', StrToInt(Fnc_ReturnNum(Edit1.Text)));
Edit1.SelStart := iPos + 1;
end;
end;



کنترلهای دیگه ای هم مانند ورود اعداد نیاز دارید.

kheyri
پنج شنبه 04 اسفند 1384, 09:07 صبح
خیلی ممنون.... عالی بود
جناب خرسندی از راهنمائیتون خیلی ممنون . از آقای جهرمی هم بخاطر لطفشون ممنونم.

davoodmz
دوشنبه 08 اسفند 1384, 09:21 صبح
آقای جهرمی
باسلام
لطفاً اگر ممکن است بیشتر توضیح بدهید.
باتشکر

mzjahromi
دوشنبه 08 اسفند 1384, 10:16 صبح
کد که توضیح نمی خواد عینا استفاده کنید. میمونه StrToInt1(TEdit(Sender).Text) که اونهم میتونید خودتون با استفاده از روشهائی که آقای خرشندی گفتن پیاده سازی اش کنید

davoodmz
پنج شنبه 18 اسفند 1384, 10:58 صبح
آقای جهرمی
با سلام
من در فرم یک ادیت باکس گذاشتم و در ONCHANGE کد شما را به این صورت نوشتم


procedure TForm1.Edit1Change(Sender: TObject);
var
i,L:Integer;
begin
i:=EDIT1.SelStart;
L:=Length(EDIT1.Text);
EDIT1.Text:=IntToStr(StrToInt(EDIT1.Text));
EDIT1.SelLength:=0;
EDIT1.SelStart:=i-(l-Length(EDIT1.Text));
if EDIT1.Text='0' Then
EDIT1.SelectAll;
End;
ولی جواب نگرفتم
لطفاً راهنمایی کنید

davoodmz
پنج شنبه 18 اسفند 1384, 11:04 صبح
آقای جهرمی
با سلام
من در فرم یک ادیت باکس گذاشتم و در ONCHANGE کد شما را به این صورت نوشتم


procedure TForm1.Edit1Change(Sender: TObject);
var
i,L:Integer;
begin
i:=EDIT1.SelStart;
L:=Length(EDIT1.Text);
EDIT1.Text:=IntToStr(StrToInt(EDIT1.Text));
EDIT1.SelLength:=0;
EDIT1.SelStart:=i-(l-Length(EDIT1.Text));
if EDIT1.Text='0' Then
EDIT1.SelectAll;
End;
ولی جواب نگرفتم
لطفاً راهنمایی کنید

mzjahromi
پنج شنبه 18 اسفند 1384, 11:04 صبح
اگر به کدی که من نوشتم دقت کنید از StrToInt و StrToInt استفاده نکردم.
توابعی که من استفاده کردم StrToInt1 و IntToStr1 هستند که خودت باید اونها رو تعریف کنی

davoodmz
پنج شنبه 18 اسفند 1384, 11:35 صبح
با سلام
این توابع را کجا بنویسم
با تشکر
اگر ممکن است بیشتر توضیح بدهید

mzjahromi
پنج شنبه 18 اسفند 1384, 12:24 عصر
تو فرمت دیگه.
دو تا تابع هست که باید چزء توابع فرمت (یا یه فرم دیگه) بنویسی

kheyri
شنبه 20 اسفند 1384, 11:17 صبح
جناب جهرمی با سلام
اگه ممکنه کد Strtoint1 رو توی این تاپیک بگذارید.
ممنون

mzjahromi
شنبه 20 اسفند 1384, 13:39 عصر
این کد همونی هست که آقای خرسندی تحت عنوان Fnc_ReturnNum نوشتند


Function TForm1.StrToInt1(Prm_Str: String): String;
begin
while Pos(',', Prm_Str) > 0 do
Delete(Prm_Str, Pos(',', Prm_Str), 1);
if ParamStr='' Then
ParamStr='0'
StrToInt1 := Prm_Str;
end;

zman123456
دوشنبه 15 آبان 1385, 14:18 عصر
سلام
می دونم خیلی وقت از این تاپیک گذشته ولی برای پربارتر کردن فروم و داشتن روشهای متفاوت این کد رو می گذارم.


procedure TForm1.Edit1Exit(Sender: TObject);
var
counter: integer;
str: string;
begin
counter:=1;
while counter <= Length(Edit1.Text) do
begin
if (((counter - 1) mod 3) = 0) and ((counter - 1) <> 0)then
begin
str:=str+',';
str:=str+copy(Edit1.Text,counter,1);
end
else
str:=str+copy(Edit1.Text,counter,1);
counter := counter + 1;
end;
Edit1.Text:=str;
end;