با سلام به تمامی ویبی کارها
آقا من یه سوال داشتم این که چطوری میشه
مثلآ وقتی یه دکمه a رو زدی کامندهای روی فرم زده بشند
دقیقآ کار مآوس رو انجام بده
دمتون گرم
Printable View
با سلام به تمامی ویبی کارها
آقا من یه سوال داشتم این که چطوری میشه
مثلآ وقتی یه دکمه a رو زدی کامندهای روی فرم زده بشند
دقیقآ کار مآوس رو انجام بده
دمتون گرم
ببین برای این کار به تابع key press فورم برو در اینجا هر وقت کلیدی زده بشه KeyAscii به تو داده می شه
KeyAscii کلید a فکر کنم 97 باشه
حالا با یه دستور if چک کن اگه KeyAscii مساوی با 97 باشه
call command1_click()
ببین وی بی در این مورد امکانات زیادی داره
1.هر جای برنامه هر وقت کلید مثلا a زده شد برنامه یک کاری رو انجام
2.فقط روی شیئی خاص وقتی کلید a زده شد برنامه عملی رو انجام بده
3.در هر شیئی وقتی کلید a زده شد برنامه کار مجزایی انجام بده
4.هر جای ویندوز کلید a زده شد برنامه عمل خاصی رو انجام بده(حتی اگر فوکوس روی برنامه نبود)
گزینه 2 و 3 تقریبا یکی هستن
برای گزینه اول:
باید مشخصه KeyPreview فرم رو با مقدار True قرار بدی:
بعد توی گزینه key press فرم شرطی رو که دوست عزیز vb_lord_AR گفتن رو چک کنی
حالا یا با If یا با Select case
الان فیلمش شروع شد بعدا بقیش رو تایپ می کنم:دی
خوب فیلمش تموم شد
برای بدست آوردن Keyasci دکه های کیبورد هم می تونی از کد زیر استفاده کنی:
البته روش راحتترش اینه که به جای اینکه کی اسکی رو چک کنی کاراکتر اسکی رو چک کنیکد:Private Sub Form_KeyPress(KeyAscii As Integer)
Me.Caption = KeyAscii
End Sub
فرقش هم اینه:
چک کردن کی اسکی:
و اینم چک کردن کاراکتر:کد:Private Sub Form_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 97 ' = a
Me.Caption = "a"
Case 98 ' = b
Me.Caption = "b"
Case 65 ' = A
Me.Caption = "A"
Case 66 ' = B
Me.Caption = "B"
End Select
End Sub
خوبی روش دوم اینه که نمی خواد کد سکی همه کاراکتر ها رو حفظ کنیکد:Private Sub Form_KeyPress(KeyAscii As Integer)
Select Case Chr(KeyAscii)
Case "a"
Me.Caption = "a"
Case "b"
Me.Caption = "b"
Case "A"
Me.Caption = "A"
Case "B"
Me.Caption = "B"
End Select
End Sub
البته برای اینکه نخواد همه رو حفظ کنی می تونی از روش اول استفاده کنی ولی به جای شماره از ثابت های ویبی استفاده کنی منظورم اینه:
ولی خوب اینجوری مشکلاتی داره که مثلا حرف های کوچک رو وی بی ندارهکد:Private Sub Form_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyA
Me.Caption = "A"
Case vbKeyB
Me.Caption = "B"
End Select
End Sub
اما برای اینکه فقط روی شیئی خاص وقتی کلیدی رو می زنی کاری صورت بگیره باید مشخصه KeyPreview فرمت رو False مقدار دهی کنی و در قسمت Keypress همون شیئی که می خوای کد رو بنویسی
و برای اینکه هر جای ویندوز کلیدی رو زدی برنامه بفهمه باید از Api استفاده کنی که اگه خواستی سرچ کن تو فروم هست
نکته
در گزینه Keypress فرم و شی ها بعضی دکمه ها کارایی ندارن مثل دکمه های جهت نما کلید های F و ...
که اگر می خوای از اینها هم استفاده کنی بهتره از گزینه Form_KeyDown یا Form_Keyup استفاده کنی که همه دکمه ها رو میشناسه و کدنویسیش هم تقریبا شبیه همون قلیست ولی فقط می تونی از گزینه اول استفاده کنی منظورم کد هست باید از کد زیر استفاده کنی:
با کد زیر هم می تونی کد هر کلید رو پیدا کنی:کد:Select Case KeyCode
End Select
اما اشکالی که اینجا باز داری اینه که نمی تونی کلید های ترکیبی رو تشخیص بدی منظورم مثلا:کد:Me.Caption = KeyCode
Ctrl + a هست که در قسمت Keypress همچین چیزی امکان داره:10:
ولی باز توی Keypress نمیشه ctrl تنها رو تشخیص داد که اینجا میشه
اگه می بینی اینقدر توضیح دادم برای اینه که خوب بفهمی و مثل من سر در گم نشی آخه خودم وقتی معلممون اینا رو توضیخ داد خیلی گیج شدم:41:
واسه همین یک جوری برات توضیح دادم که همش رو بفهمی:31:
البته توی Keydown هم میشه کلید های کنترل و شیفت و اینا رو تشخیص داد ولی سخت تره و باید از متغیر Shift استفاده کنی:46: