PDA

View Full Version : سوال: رویداد های ماوس یا صفحه کلید و مشکل shiftیاbuttonبا دکمه(command)



hesamkj
دوشنبه 15 مهر 1392, 21:06 عصر
با عرض سلام.
دوستان دیروز یه امتحان عملی داشتیم زبان ویژوال ...استاد سوالی رو طرح کرد که بعدا خودش هم نتونست به صورت عملی حلش کنه :|
این بود سوال:
برنامه ای که وقتی کلید حرکت سمت چپ(کلیدها جهت کلید سمت چپ) فشار داده شد رنگ پس زمینه مشکی وقتی کلید حرکت سمت راست فشرده شد رنگ پس زمینه ابی وقتی کلید حرکت سمت بالا فشار داده شد شکل زیر چاپ شود:
*
**
***
یک دکمه روی فرم بسازید و تعریف کنید کنید که اگر دکمه حرکت سمت پایین فشار داده شد دکمه به سمت پایین حرکت کند.
_________________________________
همه به غیر از مورد دوم کار میکند.یعنی اگر به جای دکمه(command)از تکست باکس یا عکس استفاده کنم درست میشه ولی وقتی از دکمه استفاده میکنم هیچ اتفاقی رخ نمیدهد. ممنون میشم کسی راهنمایی کنه:قلب:

nimar9
دوشنبه 15 مهر 1392, 21:21 عصر
سلام شما اگر کد زیر را دقیق کپی کنید به درستی کاری که میخواهید انجام داده میشه.
اگر میخواهید پشت سر هم هی چاپ کنه نوشته CLS رو پاک کنید.
سوالی بود درخدمتم.

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
' جهت چپ
If KeyCode = vbKeyLeft Then Form1.BackColor = vbBlack
' جهت راست
If KeyCode = vbKeyRight Then Form1.BackColor = vbBlue
' جهت بالا
If KeyCode = vbKeyUp Then
Cls
Print "*"
Print "**"
Print "***"
End If
' جهت پایین
If KeyCode = vbKeyDown Then Command1.Top = Command1.Top + 10
End Sub

موفق باشید

hesamkj
سه شنبه 16 مهر 1392, 13:52 عصر
سلام شما اگر کد زیر را دقیق کپی کنید به درستی کاری که میخواهید انجام داده میشه.
اگر میخواهید پشت سر هم هی چاپ کنه نوشته CLS رو پاک کنید.
سوالی بود درخدمتم.

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
' جهت چپ
If KeyCode = vbKeyLeft Then Form1.BackColor = vbBlack
' جهت راست
If KeyCode = vbKeyRight Then Form1.BackColor = vbBlue
' جهت بالا
If KeyCode = vbKeyUp Then
Cls
Print "*"
Print "**"
Print "***"
End If
' جهت پایین
If KeyCode = vbKeyDown Then Command1.Top = Command1.Top + 10
End Sub

موفق باشید
ممنون اما عزیز خودت تست کردی ؟ ببین اگه دکمه بذاری نمیشه.. یعنی هیچکدوم عمل نمیکنه حتی اگر keypreviewمقدارtrueهم بگیره باز هم عمل نمیکنه.

nimar9
سه شنبه 16 مهر 1392, 14:36 عصر
ممنون اما عزیز خودت تست کردی ؟ ببین اگه دکمه بذاری نمیشه.. یعنی هیچکدوم عمل نمیکنه حتی اگر keypreviewمقدارtrueهم بگیره باز هم عمل نمیکنه.

Enabled دکمه رو روی False بزار درست میشه.

hesamkj
سه شنبه 16 مهر 1392, 17:35 عصر
Enabled دکمه رو روی False بزار درست میشه.
ممنون.. درست شد. اگه میشه یه توضیح کوچیک هم در موردش بدی ممنون میشم. :x

nimar9
سه شنبه 16 مهر 1392, 22:09 عصر
ممنون.. درست شد. اگه میشه یه توضیح کوچیک هم در موردش بدی ممنون میشم. :x
ببین
رویداد Keydown برای زمانی هست که روی کیبورد دکمه ای فشار داده می شود.
این رویداد یک پارامتر به اسم KeyCode دارد. این پارامتر برای دکمه ای هست که فشار داده میشود. که یه مقدار های خاصی دارد.
فکر نکنم دیگه چیز عجیبی باشه
از دستور If استفاده کردم که اگر مثلا کلید سمت راست فشار داده شد رنگ backcolor فرم آبی شود. و دستور CLS هم برای پاک کردن اطلاعاتی مثل print هایی که نوشتی روی فرم هست.
موفق باشید

hesamkj
چهارشنبه 17 مهر 1392, 13:46 عصر
ببین
رویداد Keydown برای زمانی هست که روی کیبورد دکمه ای فشار داده می شود.
این رویداد یک پارامتر به اسم KeyCode دارد. این پارامتر برای دکمه ای هست که فشار داده میشود. که یه مقدار های خاصی دارد.
فکر نکنم دیگه چیز عجیبی باشه
از دستور If استفاده کردم که اگر مثلا کلید سمت راست فشار داده شد رنگ backcolor فرم آبی شود. و دستور CLS هم برای پاک کردن اطلاعاتی مثل print هایی که نوشتی روی فرم هست.
موفق باشید
نه عزیز اینا رو میدونم منظورم دکمه بود ببین دکمه اگه فعال باشه کار نمیکنه ولی اگه غیرفعال باشه این دستورا کار میکنن اینو میخواستم بدونم

nimar9
چهارشنبه 17 مهر 1392, 14:43 عصر
نه عزیز اینا رو میدونم منظورم دکمه بود ببین دکمه اگه فعال باشه کار نمیکنه ولی اگه غیرفعال باشه این دستورا کار میکنن اینو میخواستم بدونم

ببین به طور معمول اگر کنترلی رو صفحه ات باشه اولویت انتخاب با اونه یعنی روی اون دکمه ، کلید پایین رو میزنید.
با فالس کردن Enabled می تونید اولویت رو به فرم بدهید.