PDA

View Full Version : سوال: تایپ شماره نامه های ترکیبی ( حروف و عدد فارسی )



zahedi121
پنج شنبه 12 خرداد 1390, 00:26 صبح
باسلام
دوستان برنامه ای می نویسم که باید داخلش کد یکسری اجناس و یا شماره نامه های وارده ثبت شود.
مشکل اینجاست که هم کدها و هم اغلب شماره نامه ها از حروف و عدد تشکیل شده اند ، حالا وقتی
در VB می خواهیم به عنوان مثال تایپ کنیم 500/س/6/4 تایپ می شود : 6/4/س/500 .
اگر ممکن است راهنمایی کنید.
ضمنا با راستچین کردن و بلعکس کردن نیز مشکل حل نشد !
حتی در دیتاگرید هم همینطور نشان می دهد!

vbhamed
پنج شنبه 12 خرداد 1390, 06:28 صبح
سلام

من كه تكست باكس رو RightToLeft كردم و مشكلي نداشت
نهايتا اگر فرمت هميشه همين است مي تونيد از 4 تا تكست باكس جدا استفاده كنيد

zahedi121
پنج شنبه 12 خرداد 1390, 08:56 صبح
فرمت کدها یکی نیست ، اگر امکان داره نمونه ای که ساختید بگذارید . یعنی هم عدد هم حرف و هم "/" گذاشتید مشکل نداشت ؟!

vbhamed
پنج شنبه 12 خرداد 1390, 16:51 عصر
سلام

نمونه اي نساختم
فقط يك تكست باكس گذاشتم و RightToLeft = True كردم و Alignment هم از سمت راست
بعدش هم همين متني كه شما نوشتين رو از اينجا كپي كردم اونجا

zahedi121
پنج شنبه 12 خرداد 1390, 17:38 عصر
از اینکه بحث را پیگیری می کنید متشکرم
ولی
این تصویر تکست باکس با همان خواصی که شما گفتید، که بنده عبارت " 500/س/6/4 " را در آن paste کردم :
http://up.iranblog.com/images/7bdkcr338k27q128y5f7.jpg[/URL]

این هم خود فایل قرم :
[URL]http://up.iranblog.com/images/0tniiq5d0eqyi36l0kgl.zip (http://up.iranblog.com/images/7bdkcr338k27q128y5f7.jpg)

اگر امکان داره بفرمائید اشکال کار کجاست؟
متشکرم

vbhamed
پنج شنبه 12 خرداد 1390, 17:43 عصر
سلام

خب اينكه طبق پست اول شما درسته

zahedi121
پنج شنبه 12 خرداد 1390, 17:46 عصر
500/س/6/4
!!!!!!!!!!!!!!!!
500/س/4/6

اگر هم تنظیماتی که شما گفتید اعمال نشود که همان که در پست اول نوشتم تایپ می شود.

یادمه قدیما در ویرایشگر انجمنها هم بعضی وقتها این مشکل وجود داشت مثلا علامت سوال می رفت اول خط ..

نمی دونم چطور میشه این مشکل را حل کرد، لطفا دیگر دوستان هم کمک کنند.

vbhamed
پنج شنبه 12 خرداد 1390, 19:32 عصر
سلام

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

zahedi121
جمعه 13 خرداد 1390, 07:16 صبح
سلام
شما گفتید : "خب اينكه طبق پست اول شما درسته "
من عبارتی که در وی بی نوشته میشه را زیر عبارتی که میخوام تایپ کنم نوشتم تا تفاوتش مشخص شود.

عبارت مورد نظر " 500/س/6/4 " است.
ضمنا چون شماره نامه های شرکتها یک تیپ نیست نمی تونم از تکست باکسهای جدا استفاده کنم.

vbhamed
جمعه 13 خرداد 1390, 17:41 عصر
سلام

خب اينم كه درست نوشته ميشه
شما لطفا به ترتيب هر قسمت رو در يك خط جدا بنويسيد

zahedi121
شنبه 14 خرداد 1390, 06:43 صبح
سلام
4
/
6
/
س
/
500
با تنظیماتی که گفتید وقتی در تکست باکس می نویسیم جای 6 و 4 عوض می شود.

متشکرم

vbhamed
یک شنبه 15 خرداد 1390, 08:23 صبح
سلام

شما كافيه قبل و بعد از هر / يك فاصله هم تايپ كنين
اگه هم براي كاربر سخته كه اين كار رو انجام بده بعد از خروج از تكست باكس خودتون اين كار رو براش انجام بدين، بعد از ورود به تكست باكس هم اون فاصله ها رو برش دارين

Private Sub Text1_GotFocus()

Text1 = Replace(Text1, " ", "")

End Sub

Private Sub Text1_LostFocus()

Text1 = Replace(Text1, " ", "")
Text1 = Replace(Text1, "/", " / ")

End Sub

zahedi121
یک شنبه 15 خرداد 1390, 17:51 عصر
سلام

خیلی خیلی متشکرم ، دیگه داشتم نا امید می شدم ، چون در یک سایت دیگم این سوال را نوشته بودم اونجا کسی نتونست جوابم را بدهد.

mnodehi
پنج شنبه 09 آبان 1392, 14:18 عصر
بهترین کار استفاده از کاراکترهای تعیین جهت قراردادن کاراکترها است من تو لینک زیر دیدم متن اون و مثال فارسی شدش رو هم اینجا کپی می کنم.

http://stackoverflow.com/questions/6594915/unicode-strings-in-net-with-hebrew-letters-and-numbers



The unicode characters "RTL mark" (U+200F) and "LTR mark" (U+200E) were created precisely for this purpose.

In your example, simply place an LTR mark after the Hebrew character, and the numbers will then be displayed to the right of the Hebrew character, as you wish.

So your code would be adjusted as follows:

string A = "123";
string AA = "ب";
string LTRMark = "\u200E";
string B = "45";
string AB = A + LTRMark + AA + LTRMark + B;
textBox2.Text = AB;