تور لحظه آخری
امروز : چهارشنبه ، 28 شهریور 1403    احادیث و روایات:  پیامبر اکرم (ص):من مأمورم كه صدقه (و زكات) را از ثروتمندانتان بگيرم و به فقرايتان بدهم.
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

تریدینگ ویو

کاشت ابرو

لمینت دندان

لیست قیمت گوشی شیائومی

صرافی ارکی چنج

صرافی rkchange

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

طراحی کاتالوگ فوری

Future Innovate Tech

پی جو مشاغل برتر شیراز

لوله بازکنی تهران

آراد برندینگ

وکیل کرج

خرید تیشرت مردانه

وام لوازم خانگی

نتایج انتخابات ریاست جمهوری

خرید ابزار دقیق

خرید ریبون

موسسه خیریه

خرید سی پی کالاف

واردات از چین

دستگاه تصفیه آب صنعتی

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

خرید نهال سیب سبز

قیمت پنجره دوجداره

بازسازی ساختمان

طراحی سایت تهران سایت

دیوار سبز

irspeedy

درج اگهی ویژه

ماشین سازان

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

شات آف ولو

تله بخار

شیر برقی گاز

شیر برقی گاز

خرید کتاب رمان انگلیسی

زانوبند زاپیامکس

بهترین کف کاذب چوبی

پاد یکبار مصرف

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

بلیط هواپیما

 






آمار وبسایت

 تعداد کل بازدیدها : 1816520785




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

تغييری در وضعيت مثال قبل و استفاده از رويداد KeyUp


واضح آرشیو وب فارسی:فان پاتوق: تغييری در وضعيت مثال قبل و استفاده از رويداد KeyUp فرض کنيد بخواهيم مثال قبل را طوری تغيير دهيم که با نوشتن هر رقمی در txtCelsius ، بدون نياز به فشردن کليد، نتيجه به طور خودکار در txtFahrenheit نوشته شود.مثلاً به محض اينکه عدد8 رازديم، تبديل شده 8 را به فارنهايت بنويسيد و به محض فشردن کليد 0 (روی هم شده است80) تبديل شده 80 را به فارنهايت بنويسد و ...
ابتدا کدهای نوشته شده برای cmdconvert را پاک کنيد و سپس خود کليد را نيز از روی فرم حذف کنيد تا به سراغ کدنويسی برای خودText Box ها برويم.
Text Box ها دارای جهار رويداد (Event) مهم می باشند:
KeyDown – KeyUp – KeyPress – Change زمانی که فوکوس(تمرکز) به يک Text Box داده شود، اگر کليدی از صفحه کليد زده شود، ابتدا رويدادKeyPress رخ می دهد ( و اين به سيستم می فهماند که يک کليدی فشرده شد) ، سپس رويداد KeyDown رخ می دهد ( و اين به سيستم می فهماند که کليد زده شده، تازه زده شده است و هنوز فشرده است) و وقتی دستمان را از روی کليد برداريم، رويداد KeyUp رخ می دهد.
رويداد Change نيز زمانی که هر تغييری در مقدار داخل Text box انجام شود، روی می دهد (و لذا مثلاً اگر کليدی مثل Arrow Keys (کليدهای حرکتی) که تغييری در مقدار داخل Text Box انجام نمی دهد زده شود، رويداد Change رخ نمی دهد.)
توجه داشته باشيم که KeyDown (وKeyUp) برای همه کليدهای صفحه کليد رخ می دهد اما رويداد KeyPress برای برخی مثل Arrow Keys رخ نمی دهد.
Event Procedure مربوط به KeyDown و KeyUp دارای دو آرگومان (پارامتر) هستند:
1- پارامتر keycode که کد اسکی کليد فشرده شده را بر می گرداند.
2- پارامتر Shift که يکی از چهار مقدار 0 و 1 و 2 و 3 را بر می گرداند. اگر مقدار برگشتی آن يک باشد، يعنی در حال فشردن کليد زده شده، کليد Shift پايين بوده، مقدار برگشتی دو نشانگر پايين بودن کليدAltو مقدار برگشتی برابر سه، نشانگر پايين بودن کليد Control می باشد و صفر بودن آن، فشردن کليد بدون پايين بودن هيچ يک از اين سه کليد می باشد. و Event Procedure مربوط به KeyPress تنها يک آرگومان KeyAscki دارد که کد اسکی کليد فشرده شده را برمی گرداند.
با توجه به مطالب گفته شده، کافی است برای رويدادِ (Event) KeyUp از txtCelsius چنين بنويسيم:


Private Sub txtCelsius_KeyUp (KeyCode As Integer, shift As Integer)
txtFahrenheit = (Val (txtCelsius)*9/5) + 32
End Sub


ذکر چند نکته:
1- اگر بر روی يک Text Box در Design Time دابل کليک کنيد، به طور پيش فرض، رويداد Change از آن را برای کدنويسی باز می کند. اگر می خواهيم Event Procedure رويدادهای ديگر را بياوريم، کافی است از Combo Box منوی باز شونده عمودی کرکره ای که يک فلش رو به پايين سمت راست خود برای باز شدن منو دارد) سمت راست بالای صفحه کدنويسی، يکی از Event Procedure ها را به دلخواه انتخاب کنيم. Combo Box سمت چپ آن هم نام تمام Object های استفاده شده در آن فرم خاص را دارد که هر کدام انتخاب باشد، در Combo Box سمت راست، Procedure های آن Object خاص را ليست خواهد کرد. در شکل 5 برخی از رويدادهای مربوط به txtCelsius را می بينيد.


2- همانطور که می بينيم در Procedureفوق برای Text Box ها، نام هيچ مشخصه ای را نياورديم که همانطور که قبلاً توضيح داده شد، در اينصورت به طور پيش فرض، مشخصه Text برای آنها در نظر گرفته می شود.
3- تابع Val (مخفف Value) مقدار عددی يک string را برمی گرداند. از آنجا که مقدار داخل txtCelsiusاز نوع string 0متنی) است ولی بايد بر روی آن عمل ضرب و تقسيم و جمع را انجام دهيم. ابتدا آن را توسط تابع Val، عددی نموديم. (هر چند VB تا جای ممکن سعی می کند خودش اين تبديلات را اگر ما هم نگذاريم، انجام دهد ولی بهتر است عادت شود، برای جلوگيری از خطاهای احتمالی، شرايط هر موقعيت را فراهم آوريم.)
ادامه:
آخرين کاری که بايد برای پروژه Second Example انجام دهيم، جلوگيری از خطای Type Miss Mach است. اين خطا زمانی روی می دهد که در يک عمليات، مقادير مناسب نباشند. مثلاً اگر بخواهيم مقدار متنی “Ali” را در مثلاً 5 ضرب کنيم، اين خطا (که در VB، خطای شماره 13 است) رخ می دهد.
در برنامه ما هم، اگر کاربر، در txtCelsius بجای يک عدد، حرفی را بنويسد، هنگام ضرب شدن در 9/5، همين خطا رخ خواهد داد.
برای جلوگيری از بروز خطا و گرفتن کنترل خطا بدست برنامه، از تابع On Error استفاده می کنيم. اگر Procedure مربوط به رويداد Key Up از txtCelsius را به صورت زير تغيير دهيم:


Private Sub txtCelsius–KeyUp (KeyCode As Integer, shift as Integer)
On Error Goto xx
txtFahrenheit = (txtCelsius * 9/5) + 32
Exit Sub
xx:
IF Err. number = 13 then
txtFahrenheit = “can’t convert “
End IF
End Sub


در اينصورت تابع On Error می گويد که وقتی به خطايی در ادامه برخوردی به خطی از Procedure که دارای برچسب xx (يک برچسب اختياری) است برو (Goto xx) . اگر برنامه به اين خط برود (يعنی وقتی خطايی رخ داد) ، بررسی می کند اگر شماره خطای رخ داده شده (Err يک Object هميشگی در VB است که مشخصه number از آن، شماره شماره خطای رخ داده را در خود نگهداری می کند) برابر B بود، بجای convert کردن، در txtFahrenheitبنويسيد” can’t convert “ (اميدوارم نحوه بکارگيری دستورات شرطی (IF sentences) را بدانيد). تنها نکته ای که هست اينکه اگر خطا رخ نداد و convert انجام شد، ديگر نبايد به خط xx وارد شود و لذا از دستور Exit sub استفاده کردع ايم. اين دستور در هر جايی از يک sub اجرا شود، بلافاصله از آن خارج می شود و دستورات ديگر را اجرا نمی کند






این صفحه را در گوگل محبوب کنید

[ارسال شده از: فان پاتوق]
[مشاهده در: www.funpatogh.com]
[تعداد بازديد از اين مطلب: 131]

bt

اضافه شدن مطلب/حذف مطلب




-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن