PDA

View Full Version : استخراج حروف از کلمات داخل تکست باکس



samiasoft
شنبه 27 اردیبهشت 1393, 14:26 عصر
سلام دوستان

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

ممنون میشم راهنمایی کنین


http://samisoft.ir/1/images/EvVnS.jpg

من این کد رو نوشتم

Text6 = Mid(Text1, 5, 1)
Text5 = Mid(Text1, 4, 1)
Text4 = Mid(Text1, 3, 1)
Text3 = Mid(Text1, 2, 1)
Text2 = Mid(Text1, 1, 1)

اما خب مشکل من اینجاست نمیدونم تعداد کاراکترهای کلمه چقدره...یعنی میخوام به تعداد کاراکترها بصورت اتوماتیک تکشت باکس ایجاد بشه و کاراکترها داخلش بیان

sa1378
شنبه 27 اردیبهشت 1393, 15:11 عصر
تعداد حرفاشو از تابع( len( txt1.text بدست بیار
بعد فکر کنم با دستور For بشه درستش کرد

samiasoft
شنبه 27 اردیبهشت 1393, 15:17 عصر
تعداد حرفاشو از تابع( len( txt1.text بدست بیار
بعد فکر کنم با دستور For بشه درستش کرد

مشکل منم دقیقا همینجاست چطوری این دستور for رو بنویسم؟
بطوری که در این دستور به تعداد کاراکتر تکست باکس ایجاد بشه و هرکدوم درون ان قرار بگیرند

sa1378
شنبه 27 اردیبهشت 1393, 15:20 عصر
یه راه به ذهنم رسید
10 تا تکست باکس درست کن(مثلا)
visible شونو فالس کن
بعد حلقه بنویسی به تعداد( len(text1.text ویزیبلشونو true کن
البته باید از آرایه بندی توی نام گذاری textbox ها استفاده کنی (خاصیت index)

setroyd
شنبه 27 اردیبهشت 1393, 16:40 عصر
هرجاشو نفهمیدی بگو سعی کردم راحت بنویسم واسه جلوگیری از پیچیدگیش مجبور شدم یکم غیر اصولی بنویسم

samiasoft
شنبه 27 اردیبهشت 1393, 17:30 عصر
ممنونم از شما دوستان

یه سوال دیگر هم در این زمینه داشتم اینکه

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

ممنون میشم این را هم راهنمایی کنین

http://samisoft.ir/1/images/VUrZ.jpg

sa1378
شنبه 27 اردیبهشت 1393, 17:42 عصر
باید از خاصیت randomize استفاده کنی
ولی خودمم بلد نیستم:لبخند:

samiasoft
شنبه 27 اردیبهشت 1393, 17:56 عصر
هرجاشو نفهمیدی بگو سعی کردم راحت بنویسم واسه جلوگیری از پیچیدگیش مجبور شدم یکم غیر اصولی بنویسم


امکانش هست در این سورس وقتی دو کلمه مینویسم که بینشون جای خالی میفته در این حالت اون تکس باکس فاصله مثلا رنگش سبز بشه؟

setroyd
شنبه 27 اردیبهشت 1393, 17:58 عصر
یعنی چی حرف مشخص بشه ! تصادفیش چیزی نیست کدش سادس میگی در صورت مشخص شدن میخوای توش بنویسی تا مثل بالا بشه ؟ کامل توضیح بدین این 1000 بار .

samiasoft
شنبه 27 اردیبهشت 1393, 18:13 عصر
یعنی چی حرف مشخص بشه ! تصادفیش چیزی نیست کدش سادس میگی در صورت مشخص شدن میخوای توش بنویسی تا مثل بالا بشه ؟ کامل توضیح بدین این 1000 بار .

سوال اولم اینه مثلا طبق این تصویر
http://samisoft.ir/1/images/V1Ek.jpg
وقتی خانه ای خالی موند رنگش سبز بشه.


سوال دومم این بودش که مثلا 5 تا تکست باکس داریم داخلشون حرفی قرار داره من میخوام با زدن دکمه، این حروف یکی یکی بصورت تصادفی در خانه های پایینیشون قرار بگیره امیدوارم منظورمو رسونده باشم

مثلا کلمه س ا م ا ن
اول بصورت س - - - -
سپس س - م - -
سپس س - م - ن
سپس س - م ا ن
سپس س ا م ا ن

sa1378
شنبه 27 اردیبهشت 1393, 22:24 عصر
یعنی چی حرف مشخص بشه ! تصادفیش چیزی نیست کدش سادس میگی در صورت مشخص شدن میخوای توش بنویسی تا مثل بالا بشه ؟ کامل توضیح بدین این 1000 بار .

شما بگو چجوری عدد تصادفی انتخاب کنیم من مینویسم
مثلا از 1 تا 10 یه عدد تصادفی انتخاب کنیم (i)
بعدش از 1 تا 10 به جز i یه عدد دیگه انتخاب کنیم


هرجاشو نفهمیدی بگو سعی کردم راحت بنویسم واسه جلوگیری از پیچیدگیش مجبور شدم یکم غیر اصولی بنویسم
میشه بگین ubound چیه؟
و چجوری شما توی برنامه b رو تعریف نکردین ولی ازش استفاده کردین؟؟؟؟؟!!!!

setroyd
دوشنبه 29 اردیبهشت 1393, 18:08 عصر
Private Sub Text1_Change()
For b = 1 To Text2.UBound
Unload Text2(b)
Next
For a = Text2.UBound + 1 To Len(Text1.Text)
Load Text2(a)
Text2(a).Top = Text2(0).Top
Text2(a).Visible = True
Text2(a).Text = Right(Left(Text1.Text, a), 1)
Text2(a).Left = Text2(a - 1).Left + Text2(0).Width + 100
If Text2(a).Text = " " Then Text2(a).BackColor = vbGreen
Next
End Sub



این رو جایگزین کن برای رنگ سبز

sa1378
دوشنبه 29 اردیبهشت 1393, 20:49 عصر
Private Sub Text1_Change()
For b = 1 To Text2.UBound
Unload Text2(b)
Next
For a = Text2.UBound + 1 To Len(Text1.Text)
Load Text2(a)
Text2(a).Top = Text2(0).Top
Text2(a).Visible = True
Text2(a).Text = Right(Left(Text1.Text, a), 1)
Text2(a).Left = Text2(a - 1).Left + Text2(0).Width + 100
If Text2(a).Text = " " Then Text2(a).BackColor = vbGreen
Next
End Sub



این رو جایگزین کن برای رنگ سبز

unbound رو هم لطفا بگین:قلب:

Mori Bone
دوشنبه 29 اردیبهشت 1393, 21:09 عصر
ubound: کران بالای یک آرایه رو بر میگردونه مثلا:
dim a(1 to 100) as string *10
msgbox ubound(a)
که عدد 100 رو نمایش میده.
lbound برعکسه یعنی یک رو میده سوال بود بپرس

setroyd
دوشنبه 29 اردیبهشت 1393, 22:49 عصر
همونطور که دوستمون گفتند ابتدا و انتهای یک ارایه رو نشون میده و اما در مورد b که b شمارنده است و ما میتونیم بدون تعریف متغیر از اون استفاده کنیم که در صورت تعریف نکردن به صورت variant تعریف میشه .

samiasoft
چهارشنبه 31 اردیبهشت 1393, 16:03 عصر
ubound: کران بالای یک آرایه رو بر میگردونه مثلا:
dim a(1 to 100) as string *10
msgbox ubound(a)
که عدد 100 رو نمایش میده.
lbound برعکسه یعنی یک رو میده سوال بود بپرس

خب الان من تعدادی تسکت باکس ایندکس داردارم الان چگونه بدونم اخرین تکست باکسم ایندکسش کدومه؟

من میخواستم در اخرین تکست باکسم مقداری رو قرار بدم اینرو نوشتم اما ارور میده

k = UBound(Text3)
Text3(k).Text = ""

setroyd
چهارشنبه 31 اردیبهشت 1393, 17:10 عصر
Text3(Text3.UBound).Text = "Aa"

شما برای صدا زدن ایندکس یک Object از متد خودش استفاده میکنی مثل text3.ubound اما چون یک متغییر این پیش فرض رو نداره شما به این شکل تعریف میکنی (ubound(a


Private Sub Command1_Click()
Dim a(4) As String
MsgBox UBound(a)
MsgBox Text3.UBound
End Sub