PDA

View Full Version : سوال: کلید مکان نمای پائین کیبورد



hr0694
جمعه 04 شهریور 1390, 17:17 عصر
سلام

من این کد را برای اینکه با زدن کلید مکان نما پائین کیبورد خط چشمک زن داخل تکست1 به تکست2 برود نوشته ام
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 40 Then Text01.SetFocus
End Sub

اما وقتی خاصیت Multiline تکست1 True باشد این کد از کار می افتد حالا چکار کنم با این وجود هم از کار نیافتد و فقط هم از کلید مکان نما پائین کیبورد استفاده کنم نه کلید دیگری

محسن واژدی
جمعه 04 شهریور 1390, 18:36 عصر
سلام علیکم
اگر TextBox بر روی multi-line تنظیم شده است بایستی از کلیدی بجز کلید down برای فوکوس بر روی textbox ها استفاده کنید چون این میتواند برای texbox های multi-line مشکل ایجاد کند، به عنوان مثال بر روی Tab که میتواند ایده آل تر هم باشد

موفق باشید

محسن واژدی
جمعه 04 شهریور 1390, 19:03 عصر
در کد زیر مشکل از لحاظ TextBox با خاصیت Multiline وجود ندارد و البته برای TextBox Array ، پیشنهاد بنده نیز این است که textbox را کنترل آرایه کرده تا مشکلی از لحاظ تکرار دستور نداشته باشید:

Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
On Error Resume Next
If KeyCode = vbKeyDown Then
Index = Index + 1
If Index > Text1.UBound Then Index = Text1.LBound
Text1(Index).SetFocus
KeyCode = 0
End If
End Sub


به هرحال در کد اولتون کافیست پس از دستور SetFocus کد KeyCode را صفر کرده تا فوکوس به کنترل بعد منتقل شود، یعنی بصورت زیر:

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 40 Then Text01.SetFocus: KeyCode =0
End Sub


موفق باشید

hr0694
جمعه 04 شهریور 1390, 20:18 عصر
خیلی ممنون جناب mohsenvj مشکلم حل شد فقط یه سؤال دیگه هم دارم اینه که چطوری کلیدهای Tab و همچنین Shift + Tab را از کار بندازم کدشو چطوری بنویسم

setroyd
جمعه 04 شهریور 1390, 22:28 عصر
از کار انداختنش سخته ولی میتونی مثلا بگه اگه فشرده شد tab تکس باکس شما دوباره فوکوس بیوفته روش و به کنترل بعدی نره و....... اینجوری فکنم بهتر باشه !

hr0694
جمعه 04 شهریور 1390, 23:53 عصر
حالا چطوری کدشو بنویسم

king ag
شنبه 05 شهریور 1390, 08:29 صبح
برا هر تکست باکست که میخوای رو اون فوکوس نیوفته تب استاپش رو غیر فعال میکنی
هر جا خواستی مثلا تکست 1 رو غیر فعال کنی از کد زیر استفاده میکنی
Text3.TabStop = False
دیگه با شیفت تب و تب خالی فوکوس روش نمیره

محسن واژدی
شنبه 05 شهریور 1390, 14:43 عصر
میتوانید با فرایند هوک کردن توسط کامپوننت EventVB.dll کلیدهای Shift و Tab را غیر فعال کنید که با جستجو در تالار یا پست های بنده میتوانید بیابید
البته هوک کردن توصیه نمیشود مگر در مواقع ضروری ، چون موجب اضافه شدن بار اضافه ویندوز میشود

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

موفق باشید