PDA

View Full Version : سوال: سوالي در مورد تكس باكس



alifatehi
شنبه 09 شهریور 1387, 04:34 صبح
سلام

تكس باكسي دارم كه زماني كه داخل آن عدد نوشته مي شود به طريق زير عمل مي كند كه مي خوام اين طور نباشه چه كار كنم ؟

مشكل من : زماني كه عدد رو وارد مي كنم به اين طريق عمل مي كنم 038-3358887-5

مي خوام زماني كه سه رقم اول رو تايپ مي كنه اول بنويسه بعد علا مت - رو بذاره بعد بقيه اعداد و در آخر علامت - وعدد آخر

شكل دلخواه من : 5-3358887-038
در اين صورت بايد از سمت راست نوشت تا شكل دلخواه وارد شود اما من نمي خوام اين طوري باشه مي خوام از سمت چپ بنويسه و مشكل بالا رو نداشت باشه

راستي روش معرفي format براي تكس باكس به چه صورت است؟

و نمي خوام از ماسك استفاده كنم

alifatehi
شنبه 09 شهریور 1387, 18:05 عصر
كسي نيست اطلاعاتي بده

ابوذر محمودی
شنبه 09 شهریور 1387, 18:16 عصر
منظورتون اینه که در مکان 4 و 12 خط تیره بذاره ؟

alifatehi
یک شنبه 10 شهریور 1387, 00:22 صبح
منظورتون اینه که در مکان 4 و 12 خط تیره بذاره ؟

اون فقط يك مثال است

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

يعني در حالت پيش فرض وقتي عددي را مي نويسيد خوبه اما با گذاشتن علامت - همه چيز به هم مي خوره و اون چيزي كه مي خواهي نمي شه

ابوذر محمودی
یک شنبه 10 شهریور 1387, 01:06 صبح
خب حتما مشکل از right to left مربوط به تکست باکس هستش

alifatehi
یک شنبه 10 شهریور 1387, 01:25 صبح
خب حتما مشکل از right to left مربوط به تکست باکس هستش

نه مشكل اين نيست

Mbt925
یک شنبه 10 شهریور 1387, 13:44 عصر
فکر نکنم تکس باکس همچنین مشکلی داشته باشه.

مشکل تکس باکس های وی بی در ترکیب حروف فارسی و دیگر حروفه.

یه نمونه از این مشکل ایجاد کنید.

alifatehi
یک شنبه 10 شهریور 1387, 15:11 عصر
مشكلم حل شد براي فارسي كردن اعدا righttoleft فعال بود . و زماني كه غير فعال شد .

حالا اگر بخواهيم اين مشكل را حل كنيم چه بايد بكنيم

ali_habibi1384
دوشنبه 11 شهریور 1387, 07:39 صبح
این نمونه کد رو اجرا کن. گویای همه چیز هست:

Private Sub Text1_Change()
If Text1.SelStart = 3 Then Text1.Text = Text1.Text + "-"
If Text1.SelStart = 9 Then Text1.Text = Text1.Text + "-"
Text1.SelStart = Len(Text1.Text)
End Sub

.:KeihanCPU:.
دوشنبه 11 شهریور 1387, 08:16 صبح
از این کد استفاده کنید

Text2.Text = Format$(Text1.Text, "00000 - 00 - 000")

vbhamed
دوشنبه 11 شهریور 1387, 10:05 صبح
سلام

بايد از فونتهايي استفاده كنيد كه شكل اعداد انگليسي نيز در آنها به صورت فارسي طراحي شده
مثل فونت هايي با نام B Nazanin, B Mitra و ...

Mbt925
دوشنبه 11 شهریور 1387, 10:55 صبح
و مناسب تر از همه فونت Tornado Tahoma:

مهران رسا
دوشنبه 11 شهریور 1387, 12:25 عصر
حالا که در مورد Textbox بحث شد منم سوالم رو بگم :

وقتی خاصیت RightToLeft این کنترل رو به True مقدار دهی کنیم دیگه مشکلی در استفاده از حروف فارسی و انگلیسی و همچنین اعداد در کنار هم نداریم و هیچگونه به هم ریختگی در عبارات مشاهده نمیشه . ولی این خاصیت روی کامپیوترهایی که VB روی اونها نصب نیست وجود نداره . علت چیه ؟ آیا به dll و یا ocx خاصی نیاز داریم ؟

Mbt925
دوشنبه 11 شهریور 1387, 12:42 عصر
همه حرف هایی که دوستان در مورد مشکلات تکس باکس وی بی میزنن و بعضی هاش رو من تایید می کنم،
در واقع مشکل نیستن.

این ابزار به خوبی عمل می کنه. اینکه گاهی اوقات مطابق اون چیزی که دوستان می خوان عمل نمی کنه، یه بحث دیگست.

امکان RTF فقط در کامپیوترهایی که زبان های راست به چپ روشوت نصبه، فراهمه.
در غیر اینصورت بطور خودکار چپ به راست عمل خواهند کرد.

مهران رسا
دوشنبه 11 شهریور 1387, 12:51 عصر
امکان RTF فقط در کامپیوترهایی که زبان های راست به چپ روشوت نصبه، فراهمه.
در غیر اینصورت بطور خودکار چپ به راست عمل خواهند کرد.

چطور میشه امکان راست به چپ رو به ویندوزی که فاقد این قابلیت هست اضافه کرد ؟

alifatehi
سه شنبه 12 شهریور 1387, 00:56 صبح
از این کد استفاده کنید

Text2.Text = Format$(Text1.Text, "00000 - 00 - 000")

اين كدي كه نوشتي بايد به چه صورت مورد قرار گيرد . بايد رخ داد آن كليك باشه
راستي فرمت مثل ماسك عمل مي كنه ؟؟؟
زماني كه كد شما داد مي شه وقتي عددي رو مي زنيم بقيه 0 مي زاره

.:KeihanCPU:.
سه شنبه 12 شهریور 1387, 00:59 صبح
اين كدي كه نوشتي بايد به چه صورت مورد قرار گيرد . بايد رخ داد آن كليك باشه
میتونه Text_Change باشه

راستي فرمت مثل ماسك عمل مي كنه ؟؟؟
منظورت رو نمیفهمم

زماني كه كد شما داد مي شه وقتي عددي رو مي زنيم بقيه 0 مي زاره
نه اینطور نیست

mahmood_s
سه شنبه 12 شهریور 1387, 01:24 صبح
يك راه هم من پيشنهاد ميكنم

ديديد در هنگام ثبت تاريخ در تكس باكس بايد اونو از چپ به راست وارد كنيد و بين اونا هم از علامت / استفاده كنيد من يك تيكه برنامه نوشتم كه به راحتي مي تونيد تاريخ رو بصورت عمومي اون ثبت كنيد روز ماه سال و نيازي به علامت / هم نيست

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



براي درست خوندن كد زير اونو در وي بي و در خواست text-chang قرار بديد


Private Sub text1_Change()
Select Case Len(Text1)
Case Is = 2
Text1 = "/" + Text1
SendKeys "{Home}"
Case Is = 5
Text1 = "/" + Text1
SendKeys "{Home}"
Case Is = 10
SendKeys "{Home}"
End Select
End Sub

alifatehi
سه شنبه 12 شهریور 1387, 01:40 صبح
Private Sub text1_Change()
Select Case Len(Text1)
Case Is = 2
Text1 = "/" + Text1
SendKeys "{Home}"
Case Is = 5
Text1 = "/" + Text1
SendKeys "{Home}"
Case Is = 10
SendKeys "{Home}"
End Select
End Sub

كد تو خودت امتحان كردي راستي خاصيت هاي تكس باكس بايد به چه شيوه اي تنظيم بشه.

براي تاريخ نمي خوام براي كد ملي نياز دارم

mahmood_s
سه شنبه 12 شهریور 1387, 13:00 عصر
من الان تمام برنامه هام كه نياز به درج تاريخ داره رو با همين روش تاريخ رو ميگيرم

ضمنا گفتم كه اين يك روش بود نه جواب شما

شما بايد از دستور select case و len استفاده كنيد

اينم جواب شما

Private Sub text1_Change()
Select Case Len(Text1)
Case Is = 3
Text1 = Text1 + "-"
SendKeys "{end}"
Case Is = 10
Text1 = Text1 + "-"
SendKeys "{end}"
Case Is = 12
SendKeys "{end}"
End Select
End Sub

Mbt925
سه شنبه 12 شهریور 1387, 15:35 عصر
چطور میشه امکان راست به چپ رو به ویندوزی که فاقد این قابلیت هست اضافه کرد ؟

با نصب زبان های راست به چپ ( همون تیکی که موقع نصب زبان فارسی زده میشه)

Mohya_z332
شنبه 16 شهریور 1387, 14:27 عصر
این کد رو استفاده کن
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Len(Text1.Text) = 3 Or Len(Text1.Text) = 11 Then
Text1.Text = Text1.Text & "-"
If Len(Text1.Text) = 4 Then Text1.SelStart = 4
If Len(Text1.Text) = 12 Then Text1.SelStart = 12
End If
End Sub
باید تو قسمت keypress نوشته شه