PDA

View Full Version : استفاده از کد کلید ESC در کل برنامه یا یک فرم



ariobarzan
شنبه 08 مرداد 1390, 22:17 عصر
با سلام
چطور میتونم از کد کلید ESC در کل برنامه برای منظور خاص مثلا خروج از فرم های فرعی و بازگشت به فرم اصلی و یا خروج از برنامه استفاده کنم ؟
ظاهرا کد اسکی این کلید 27 هستش . وقتی یه فرم خالی باشه و توی Event مربوط به OnKeyPress اون کلید را پردازش کنیم و دستورات مورد نظر رو بنویسیم کار میکنه ولی اگه سایر Object ها رو روی فرم بزاریم دیگه این دستورات کار نمی کنن چون در واقع OnKeyPress دیگه مال فرم نیست و مال اون Object هست.
اگه توی فرم Object ها زیاد باشن نمیشه برای همه اونها توی Event مربوط به OnKeyPress کد نوشت .
حالا راه حل چیه آیا یک Event بالاتر از همه Event ها وجود داره در هر فرم ؟
ممنون از توجه شما

Felony
شنبه 08 مرداد 1390, 22:21 عصر
خصیصه KeyPreview فرمتون رو با True مقداردهی کنید .

tdkhakpur
شنبه 08 مرداد 1390, 22:22 عصر
دستورات مورد نظر رو بنویسیم کار میکنه ولی اگه سایر Object ها رو روی فرم بزاریم دیگه این دستورات کار نمی کنن چون در واقع OnKeyPress دیگه مال فرم نیست و مال اون Object هست.

خب همه ابجکتها یک دونه قلاب برای onkeypress دارند باید روی همه اونها کد خروج را بنویسید اما بهترین را اینه که یک دانه ApplicationEvents1 روی فرم قرار بدید و اونجا این بررسی رو انجام بدید.

ariobarzan
شنبه 08 مرداد 1390, 22:48 عصر
ممنون با راهنمایی آقای تاجیک مشکلم حل شد (مثل همیشه )
راستی این true کردن KeyPreview فرم تاثیر جانبی روی سایر آبجکت ها نداره؟

Felony
شنبه 08 مرداد 1390, 23:27 عصر
نه ، فعال کردن KeyPreview باعث میشه قبل از اینکه کلید فشار داده شده توسط کنترلی که فکوس رو در اختیار داره پردازش بشه ، توسط فرم پردازش بشه و بعد به کنترل فکوس دار برسه .

ariobarzan
شنبه 08 مرداد 1390, 23:31 عصر
ممنون از توجه شما

tdkhakpur
دوشنبه 10 مرداد 1390, 02:30 صبح
محض تکمیل مطلب.
در این مساله درسته که کلید esc برای هیچ کنترلی تاثیری در نتیجه پیغامهای داخلی کنترل که میتونه تغییراتی در عملکرد کنترل داشته باشه ندارد اما در موارد پیچیده true شدن گزینه kerpreview نمیتونه مسیر همه کلیدهای کیبورد رو به طرف خودش بکشه. کلیدهایی که در خود کنترل هستند در این مورد استثنا هستند.
به همین دلیلApplicationEvents گزینه کلی هست.


Description
If KeyPreview is true, keyboard events occur on the form before they occur on the active control. (The active control is specified by the ActiveControl property.)
If KeyPreview is false, keyboard events occur only on the active control.
Navigation keys (Tab, BackTab, the arrow keys, and so on) are unaffected by KeyPreview because they do not generate keyboard events. Similarly, when a button has focus or when its Default property is true, the Enter key is unaffected by KeyPreview because it does not generate a keyboard events.
KeyPreview is false by default.

mohsen@
شنبه 05 آذر 1390, 20:08 عصر
مرسي از راهنمائي تون