PDA

View Full Version : سوال: استفاده از کلیدهای f1 تا f12 در فرم



Honestvip
چهارشنبه 30 اسفند 1391, 07:23 صبح
سلام
چطوری میشه از همه کلید های Function درفرم بدون ماکرو استفاده کرد؟
گویا یکسری ها رزو شده خود برنامه است

RESMAILY
چهارشنبه 30 اسفند 1391, 19:26 عصر
به نام خدا
با سلام. كد كليد ها را در يك فرمان مناسب مانند select caseقرار دهيد و در رويداد key down فرم قرار دهيد و خصوصيت key preview را روي yes تنظيم كنيد.
كد هاي كليد هم مانند 112 و 113 و 114 و ... هستند و مي توانيد با آزمون و خطا بدست آوريد.

Abbas Amiri
چهارشنبه 30 اسفند 1391, 23:08 عصر
سلام
همانطور جناب اسماعیلی ذکر کردند دقیقا عمل می کند اما یک نکته ظریف هست که در مورد کلیدهای ذخیره شده پس از نوشتن کد موردنظر مقدار KeyCode بایستی صفر شود تا عملیات ذخیره شده انجام نشود . مثلا در مورد F1 اگر این عمل انجام نشود ، Help نمایش داده میشود.


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyF1
MsgBox "F1"
KeyCode = 0
Case vbKeyF2
MsgBox "F2"
'Case vbKeyF3
'............
End Select
End Sub

RESMAILY
پنج شنبه 01 فروردین 1392, 17:57 عصر
به نام خدا
با سلام. همانطور كه اقاي اميري اشاره كردند بايد عمل كرد. ضمن اينكه اصولا در مورد كليد f1 هم يك مسئله اي وجود دارد. شما وقتي f1 را از كار بيندازيد كنترل+f1 جايگزين مي شود. آن را از كار بيندازيد شيفت + f1 جايگزين مي شود و اگر آن را از كار بيندازيم Alt+f1 جايگزين مي شود و هلم جرا! خلاصه اين help لاكردار يك جورايي داخل روال حضور دارد. نمي دانم ايا راه حلي برايش وجود دارد؟ اقاي اميري يكبار يك خط كد درباره پيغام هاي اختصاصي آكسس كه كد خطا ندارند ارايه كردند و متاسفانه من يادم رفت ثبت كنم و نمي دانم كجاست. آيا ان كد راه حل اين مورد هم هست؟ كدام كد؟ همان كه مي خواست به عنوان مثال، جلوي پيغام آكسس را در رويداد Notinlist كمبو باكس بگيرد و غيره.
ممنون

Abbas Amiri
پنج شنبه 01 فروردین 1392, 22:58 عصر
به نام خدا
با سلام. همانطور كه اقاي اميري اشاره كردند بايد عمل كرد. ضمن اينكه اصولا در مورد كليد f1 هم يك مسئله اي وجود دارد. شما وقتي f1 را از كار بيندازيد كنترل+f1 جايگزين مي شود. آن را از كار بيندازيد شيفت + f1 جايگزين مي شود و اگر آن را از كار بيندازيم Alt+f1 جايگزين مي شود و هلم جرا! خلاصه اين help لاكردار يك جورايي داخل روال حضور دارد. نمي دانم ايا راه حلي برايش وجود دارد؟ اقاي اميري يكبار يك خط كد درباره پيغام هاي اختصاصي آكسس كه كد خطا ندارند ارايه كردند و متاسفانه من يادم رفت ثبت كنم و نمي دانم كجاست. آيا ان كد راه حل اين مورد هم هست؟ كدام كد؟ همان كه مي خواست به عنوان مثال، جلوي پيغام آكسس را در رويداد Notinlist كمبو باكس بگيرد و غيره.
ممنون

با سلام
جناب اسماعیلی عزیز
به نظرم بحث فوق و ماکرو AutoKeys را جابجا گرفته اید . موضوع استفاده از کلیدهای ترکیبی (Alt , Ctrl ,Shift) در کدهای بالا تاثیرگذار نیست ولی در ماکروی AutoKeys برای اجتناب از عملکرد رزرو شده بایستی تمام حالات را درج کرد .

RESMAILY
جمعه 02 فروردین 1392, 13:00 عصر
به نام خدا
با سلام. بله جناب آميري من هم توجه داشتم كه بحث مربوط به آن قصه بوده است. در عين حال عليرغم ديدن تمام وضعيت در ماكرو ها، ظاهرا بازهم تركيبي از كليدها باf1 مجددا به نتيجه مورد نظر منتهي مي شود و روال دست از سر برنامه برنمي دارد!
اما آن يك خط كد (شايد چيزي شبيه اين بود recponse=0 ...؟!) به نوعي روي روال هاي اينگونه اي آكسس تاثير مي گذاشت. من خودم راههاي عجيب و غريبي براي دور زدن اين پيغام ها و پاسخ ها به كار مي برم و هميشه موثر نيستند و ناچار گاهي از خيرشان مي گذرم و از راههاي جايگزين استفاده مي كنم. اجمالا براي جلوگيري از هدر رفتن وقت دوستان، چون شما اشاره به قصه صفر كردن keycode نموديد يادم افتاد برخي روال هاي پس زمينه آكسس كه گاهي مزاحم اند، شايد اينجا هم پيدايشان بشود و بشود با دوخط كد آنها را ناكارشان كنيم!
ببخشيد.

Abbas Amiri
جمعه 02 فروردین 1392, 17:30 عصر
سلام



موضوع مورد اشاره شما در مورد

Response فقط در روالهایی کاربرد دارد که در لیست آرگومان های آن باشد

وجهت نادیده گرفتن خطا از عبارت Response = acDataErrContinue استفاده میشود(مقدار ثابت acDataErrContinue همان صفر است)




Private Sub cboName_NotInList(NewData As String, Response As Integer)
MsgBox "گزینه تایپ شده درلیست اسامی وجودندارد",,""
cboName = Null
Response = acDataErrContinue
End Sub




باتوجه به مطالب شما درمورد مدیریت خطاها شاید بهتر باشه تاپیک جدید ایجاد کنید تا از تجارب خودتان ، اساتید تالار و بقیه دوستان استفاده بشه . از آنجا که بسته به موقعیت حادث شدن خطا ، کنترل آن می تواند روش های مختلفی داشته باشد ، فکر کنم بازدیدکننده زیادی خواهد داشت