PDA

View Full Version : تفکیک همزمان با ثبت اعداد سه رقمی در فرم



صبا9841
چهارشنبه 27 تیر 1386, 21:51 عصر
دوستان سلام
توی تکس یک فرم اگر بخواهیم اعداد را همزمان با تایپ بصورت اتوماتیک سه رقمی از یکدیگر جدا کنیم به چه صورت عمل میشود. مثلاً 23،000،000
متشکرم

Ali_Fallah
چهارشنبه 27 تیر 1386, 22:10 عصر
در قسمت input Mask تکست به این شکل وارد کن 000.000.000

جواد ملاولی
چهارشنبه 27 تیر 1386, 22:11 عصر
سلام دوست عزیز؛ خوبید؟ این تکه برنامه که جواب شماست کار خومه:

function delete_kama(s:string):string;
var p:integer;
begin
for p := 1 to length(s) do
if s[p]=',' then
delete(s,p,1);
delete_kama:=s;
end;
procedure Form1.Edit1Change(Sender: TObject);
var i:integer; mystr,s:string;
begin
s:=',';
if Edit1.Text<>'' then
begin
mystr:='';
mystr:=delete_kama(mablagh.Text);
i:=length(mystr);
while i>3 do
begin
insert(s,mystr,i-2);
i:=i-3
end;
mystr:=mystr;
Edit1.Text:=mystr;
Edit1.SelStart:=length(mystr);
end;
end;

مهدی قربانی
پنج شنبه 28 تیر 1386, 01:13 صبح
سلام
دوست عزیز می تونید در محیط Design فرم و Properties تکس باکس ، خصوصیت Format رو با Standard ست کنید و خصوصیت Decimal Places رو هم اگر مایلید که عدد وارده اعشار نداشته باشه صفر قرار بدین به این ترتیب عدد شما به شکل مورد نظر وارد میشه .

جواد ملاولی
پنج شنبه 28 تیر 1386, 05:00 صبح
سلام مجدد؛ در کدی که در بالا گذاشتم؛ شما به جای mablagh.Text باید اسم کنترل خودتو بنویسی. مثلاً Edit1.Text

moustafa
پنج شنبه 28 تیر 1386, 18:33 عصر
آقا جواد زبان پشت پرده اکسس وی بی ءنه دلفی !
اگه ممکن اون به وی بی تبدیل کن

جواد ملاولی
جمعه 29 تیر 1386, 00:12 صبح
اِ اِ اِ راست می گی مصطفی؛ اصلاً حواسم نبود. جداً معذرت می خام.

صبا9841
جمعه 29 تیر 1386, 08:41 صبح
در قسمت input Mask تکست به این شکل وارد کن 000.000.000
باتشکر از شما ولی مقادر متغیرند و بهمین علت برای اعدادوارقام کمتر یا بیشتر از مقدار داده شده در input Mask جواب نمیدند


سلام
دوست عزیز می تونید در محیط Design فرم و Properties تکس باکس ، خصوصیت Format رو با Standard ست کنید و خصوصیت Decimal Places رو هم اگر مایلید که عدد وارده اعشار نداشته باشه صفر قرار بدین به این ترتیب عدد شما به شکل مورد نظر وارد میشه .

دوست عزیز فعلاً هم طبق فرمایش شما عمل میکنه ولی میخواهیم همزمان با تایپ اعداد تفکیک بشن

moustafa
جمعه 29 تیر 1386, 10:02 صبح
در بخش وی بی دستورات وکداشو گذاشته بودند منتهی کند وسنگین عمل می کرد بااینحال اگه پیدا کردم لینکش رو میذارم

moustafa
جمعه 29 تیر 1386, 10:04 صبح
اِ اِ اِ راست می گی مصطفی؛ اصلاً حواسم نبود. جداً معذرت می خام.
مهم الگوریتم ء لطف کن الگوریتمش رو بگو خودمون یه جورای تبدیلش می کنیم به وی بی

moustafa
جمعه 29 تیر 1386, 10:11 صبح
اِ اِ اِ راست می گی مصطفی؛ اصلاً حواسم نبود. جداً معذرت می خام.
مهم الگوریتم ء لطف کن الگوریتمش رو بگو خودمون یه جورای تبدیلش می کنیم به وی بی

جواد ملاولی
جمعه 29 تیر 1386, 14:24 عصر
الگوریتم خیلی ساده ای داره: شما باید اول یه تابع بنویسید که یه رشته بگیره (که در واقع همون رشته ی جزء Edit هستش) و با استفاده از توابع رشته؛ کاماهایی رو که قبلاً اضافه شده پاک کنه. حالا رویه ی اصلی شروع می شه و اون اینه که این رویه یا تابع از آخر اون رشته شروع می کنه به حرکت به سمت اول و بعد از هر سه کاراکتر یه کاما به رشته اضافه می کنه. فقط با توجه به این که رشته ی Edit مدام در حال تغییره؛ قبل از اینکه این پروسیجر یا رویه کاما ها رو به رشته اضافه کنه باید تابع اول رو صدا بزنید که کاماهای قبلی رو پاک کنه(چون با تغییر رشته جای کاماها هم عوض می شه). این پروسیجر رو در رویداد OnChange جزء Edit بنویسین(در دلفی بهش می گیم OnChange؛ در وی بی نمی دونم اسمش چیه).
یه نکته هم اینکه کارهای مربوط به اضافه کردن و حذف کردن کاما بوسیله ی توابع مربوط به رشته ها انجام می شه.
امیدوارم این نوشته کمکتون بکنه.

صبا9841
جمعه 05 مرداد 1386, 09:45 صبح
مهم الگوریتم ء لطف کن الگوریتمش رو بگو خودمون یه جورای تبدیلش می کنیم به وی بی

جناب moustafa اگر فرصت حل مساله را داشتید ممنون میشم راهنمایی بفرمائید.

Shahram1974
دوشنبه 08 مرداد 1386, 00:53 صبح
سلام


در فرمت text box این عبارت رو وارد کن #,###;(#,###)

صبا9841
دوشنبه 08 مرداد 1386, 22:11 عصر
سلام




در فرمت text box این عبارت رو وارد کن #,###;(#,###)



از توجه شما متشکرم
فقط نکته ای که باید در نظر داشت هدف تفکیک ارقام بطور همزمان با ثبت (ورود) اعداد است.
به نظر شما با این فرمت میشود همزمان با تایپ اعداد در تکس باکس سه رقم سه رقم جدا شوند؟

M.Javad
سه شنبه 02 مهر 1387, 13:09 عصر
سلام دوست عزیز؛ خوبید؟ این تکه برنامه که جواب شماست کار خومه:

function delete_kama(s:string):string;
var p:integer;
begin
for p := 1 to length(s) do
if s[p]=',' then
delete(s,p,1);
delete_kama:=s;
end;
procedure Form1.Edit1Change(Sender: TObject);
var i:integer; mystr,s:string;
begin
s:=',';
if Edit1.Text<>'' then
begin
mystr:='';
mystr:=delete_kama(mablagh.Text);
i:=length(mystr);
while i>3 do
begin
insert(s,mystr,i-2);
i:=i-3
end;
mystr:=mystr;
Edit1.Text:=mystr;
Edit1.SelStart:=length(mystr);
end;

end;


کسي مي تونه اين کد رو به وي بي تبديل کنه؟

emami.sie
شنبه 24 تیر 1391, 11:39 صبح
با سلام و عرض ادب خدمت اساتید و دوستان عزیز
بنده در حال حاضر یک برنامه نوشتم که کلا سرو کار کاربر با اعداد بزرگ هستش (یک سیستم مالی)...
و مشکل اینه: کاربر که مثلا می خواد عدد 125635000000 رو وارد کنه باید چند بار عدد رو از لحاظ درستی تعداد رقم چک کنه...
حالا می خوام دقیقا درخواستی که توی این تاپیک عنوان شده رو با استفاده از راهنمایی اساتید به نتیجه رسونده و ما هم به جواب برسیم... (مطمئنا این کار با تغییر فرمت انجام نخواهد شد)
قبلا از همکاری دوستان کمال تشکر رو دارم...
یا علی

Abbas Amiri
شنبه 24 تیر 1391, 19:56 عصر
درروال Change تکست باکس ازکدهای زیر استفاده کنید


Private Sub t1_Change()
Dim s As String
s = t1.Text
t1.Format = "Standard"
t1.SelStart = Len(s) + 1
End Sub

emami.sie
یک شنبه 25 تیر 1391, 07:14 صبح
درروال Change تکست باکس ازکدهای زیر استفاده کنید


Private Sub t1_Change()
Dim s As String
s = t1.Text
t1.Format = "Standard"
t1.SelStart = Len(s) + 1
End Sub


با سلام و عرض ادب خدمت استاد عزیز
باز هم مثل همیشه کوتاهترین و بهترین جواب رو شاهد هستیم...
فقط یک نکته برای سایر دوستان که حتما توجه داشته باشن باید Decimal Place فیلد مربوطه صفر باشه...
انشالله که همیشه سالم و موفق باشید...
باز هم ممنون
یا علی