# پایگاه‌های داده > سایر پایگاه‌های داده > Foxpro >  'گرفتن عدد در textbox با فرمت خاص

## rezamim

سلام به همگی
میخواستم ببینم کسی کلاسی برای گرفتن عدد بصورت سه تا سه تا در تکست باکس دارد یا نه ؟ البته به این صورت که مثلا کاربر با وارد کردن عدد 1234 در تکست باکس اول 123 و بعد 1.234 را ببیند نه 123.4 را .
البته خودم یک کلاس دارم ولی کمی ضعیف عمل میکند . بخصوص در مورد کلیدهای حذف و backspace
منتظر جوابهای شما هستم

----------


## س.حمیدیانفر

سلام 
از INPUT MASK استفاده کردید ؟

----------


## naderigh

آقا اگر امکان دارد کلاس را اراپه نمایید که من هم این مشکل را دارم مخصوصا با تکست باکسی که ابتدا عدد داشته و عدد مربوطه را حذف و سپس عدد جدید را ثبت میکنم ویرگولها باقی میمانند  وقتی عدد کامل شد و اینتر زده شد یک مقداری جم و جور میشود که چندان دلچسب نیست

----------


## rezamim

دوست عزیز آقای حمیدیانفر
 بله InputMask جوابی را که من میخواهم نمیدهد و یا شاید من نمیدانم چطوری جوابی را که میخواهم از آن بگیرم.
کلاسی را گفتم بعداٌ در اینجا میگذارم

----------


## naderigh

با سلام خدمت همه
من از آدرس http://www.universalthread.com/  نمونه فرم فرم مورد نظرتان را دانلود کردم  تغریبا چیز خوبی است  البته یک سری مشکلاتی دارد اگر اشکال آن رفع شود عین همان چیزی است که جنابعالی دنبال آن هستید 
مثلا من در فرمها تکست باکسها با جدول(بانک) متصل نمیکنم اگر خواستم ردیفی را ویرایبش یا اضافه نمایم با repl  این کار را انجام میدهم در صورتی که این فرم valu از داخل برنامه نمیگیرد  
حال چنانچه شما حوصله کردید و جوابگوی نیاز جنابعالی بود یک نداپی به ما هم بدهید
فایل هم این است Right aligned numeric input with textboxes

----------


## new_day

با سلام 



> میخواستم ببینم کسی کلاسی برای گرفتن عدد بصورت سه تا سه تا در تکست باکس دارد یا نه ؟ البته به این صورت که مثلا کاربر با وارد کردن عدد 1234 در تکست باکس اول 123 و بعد 1.234 را ببیند نه 123.4 را .


من هم اين مشكل را دارم
با توجه به اينكه زمان زيادي از اخرين پست گذشته اما اگر كسي  ميتونه كمكم كنه

----------


## new_day

كسي اطلاعاتي در اين مورد نداشت؟

----------


## binyaz2003

لطفا دقيق بگيد که input mask رو چي ميزاريد و شرايط textbox چيه مثلا راست به چپه يا نه؟

----------


## new_day

با سلام 
999,999,999,999,999

----------


## new_day

مشكل هم اينه



> کاربر با وارد کردن عدد 1234 در تکست باکس اول 123 و بعد 1.234 را ببیند نه 123.4 را .


در مورد راست به چپ و يا چپ به راست هم فرقي نميكنه ويندوز xp  اضافه كردن egypt در زبانهاي عربي هم مشكل حل نشد

----------


## new_day

اين آدرس را هم پيدا كردم و از روي اون يك كلاس ساختم چندتا مشكل داشت البته ميدونم تفاوت داره ولي براي اينه بعد به اوني كه ميخواهم تبديلش كنم
اگه ممكنه اين ادرسه ببينيد و راهنمايي كنيد
http://fox.wikis.com/wc.dll?Wiki~NumericTextBox

----------


## new_day

اخر درست شد اما اين كلاس كارش اينه كه فقط عدد ميگيره و تا 3 عدد اعشاري اونا رند ميكنه وبجاي علامت اعشاري از جداسازي كه تعريف كني استفاده ميكنه
نمي دونم ميشه به كلاسي با شرايطي كه ميخواستيم تبديلش كرد يانه؟

----------


## binyaz2003

من اين و ديده بودم و تست کردم اما چيزي نيست که شما ميخواهيد.از جستجوهايي که کردم اين نتيجه شد که بعضي افراد در GotFocuse ميان inputmask رو برميدارن و در lostfocus اونو قرار ميدن که کاربر اين اشتباه رو نبينه و راه حل ديگه اي فکر نکنم باشه البته خواستم inputmask رو بصورت ديناميک براي textbox تنظيم کنم بر اساس مقدار عدد اما وقتي بازم نميشه.مگر اينکه شما يک کلاس براي خودتون بسازيد و بصورت کاراکتري عدد رو دريافت کنيد و خودتون در keypress جداکردن سه رقم رو خودتون مديريت کنيد و در آخر رشته رو به عدد تبديل کنيد.

----------


## new_day

با سلام 
نظرتون در مورد استفاده  از olecontrol  masktextbox  يا olecontrol  msmaskedittextچيه و ايا در مورد تنظيمات اون ميتونيد راهنمايي كنيد

----------


## new_day

ايا كسي در اين مورد كه از راست به چپ سه رقم سه رقم در حين واردكردن عدد جدا شود كلاسي سراغ نداره

----------


## new_day

با سلام



> کاربر با وارد کردن عدد 1234 در تکست باکس اول 123 و بعد 1.234 را ببیند نه 123.4 را .


ايا  كسي در اين مورد كلاسي  يا كدي داره

----------


## gm_phk

با سلام 
دوست گرامی اگر فقط هدفتان جداسازی اعداد می باشد در Input Mask هنگام تعریف فرمت
Text Box به جای , از Space یا همان فضای خالی استفاده نمائید
(999 999 999 999)

----------


## new_day

با سلام
دوست عزيز چه فضاي خالي باشه چه ,  فرقي نميكنه   موضوع اينه كه سه رقم سه رقم از راست جدا بشه نه از چپ يعني اگه فضاي خالي هم  بگذاريم وقتي رقم چهارم را وارد ميكنيم بجاي اينكه   4 123 را ببينيم 234 1 را
ببينيم  يا مثلا بجاي 7 456 123 ببينيم   567 234 1

----------


## ح.حاج حسینی

در صورتی که بخواهید یک عددی فاقد اعشاری وارد کنید فرقی نمی کند که برای جدا سازی عدد در InputMask  از , یا SPACE استفاده کرده باشید فقط کافی است در int فرم مقدار textbox مورد نظر را مساوی صفر قرار دهید
 مثال  thisform.text1.value=0 بعداز وارد کردن عدد مورد نظر با زدن دگمه enter عدد مورد نظر به صورت 234 1 در می آید

----------


## new_day

با سلام 
موضوع جدا ساز نيست . موضوع اينه كه هنگام ورود اطلاعات از راست به چپ جداسازي انجام بشه نه بعد از زدن اينتر يعني در حين ورود اطلاعات اگه از سه رقم بيشتر شد رقم هزارگان جدا بشه و اگه از شش رقم بيشتر شد همين طور الي اخر

----------


## بني حسيني

بعنوان يه پيشنهاد: (نمي دونم عمليه يا نه) تو keypress مرتب طول عدد مقدار وارد شده (به غير از ويرگول) چك بشه وقتي طول مضربي  از سه شد (باز به جز ويرگول)  به اون يه ويرگول اضافه كنه و نمايش بده و موقع فشار BackSpace اگر كاراكتر آخري ويرگول بود دو تا كاراكتر پاك بشه و ... خلاصه چند تا كليد بايد تعريف بشه. ضمنا فكر كنم بهترين راه استفاده از تابع transform باشه.

----------


## new_day

با سلام
در مورد transform  هنوز بررسي نكردم
اما يه چيزي نوشتم كه نه ميشه اسمش را گذاشت كلاس نه ... حالا اساتيد نگاهي به اون بكنند تا تكميلش كنم براي شروع بد نيست

----------


## aliporkareh

دوستان اگه از textbox fm2 استفاده مي‌كنيد اين تابع را در change آن قرار دهيد
هنگام تايپ اعداد بصورت آن لاين ارقام جدا ميشوند 
THIS.text = _SER(ALLT(THIS.Text))
THIS.text = seragh(ALLT(THIS.Text))
THIS.SelStart = LEN(ALLT(THIS.Text))
تابع هاي seragh و _ser نيز پيوست اين پست ميباشد كه بايد آنهارا دانلود كنيد

----------


## new_day

با سلام 
براي يرگردوندن مقدار عددي چه كار بايد كرد ميشه مثالي بزنيد

----------

