بخش جالبی که در برنامه بالا باید به آن توجه کرد خطی است که در آن نام زیربرنامه را به رویداد MouseDown شی GraphicsWindow اختصاص می دهیم.
همانطور که ملاحظه می کنید، MouseDown بسیار شبیه به یک خاصیت می باشد، با این تفاوت که به جای اختصاص یک مقدار، زیرروال OnMouseDown را به آن اختصاص داده ایم.
این چیزی است که خاص رویدادها می باشد، هنگامی که رویداد اتفاق می افتد، زیربرنامه به طور خودکار فراخوانی می شود.
در این حالت، هر بار که کاربر با استفاده از ماوس کلیک می کند، زیرروال OnMouseDown بر روی GraphicsWindow فراخوانی می شود.
برنامه را اجرا کرده و آن را امتحان کنید. هر زمان با ماوس خود بر روی GraphicsWindow کلیک کنید، یک کادر پیام مانند تصویر زیر را مشاهده خواهید کرد.
شکل ۱-۱۱ : پاسخ به یک رویداد
استفاده این گونه از رویدادها، امکان اجرای برنامه های خلاقانه و جالب را فراهم می کند.
برنامه هایی که به این روش نوشته می شوند اغلب برنامه های رویداد محور نامیده می شوند.
میتوانید زیرروال OnMouseDown را برای انجام کارهای دیگری به غیر از نمایش یک کادر پیام تغییر دهید.
به عنوان مثال، برنامه زیر، با کلیک موس بر روی صفحه ، نقاط آبی بزرگی را در آن می کشد.
“GraphicsWindow.BrushColor = “Blue
GraphicsWindow.MouseDown = OnMouseDown
Sub OnMouseDown
x = GraphicsWindow.MouseX – 10
y = GraphicsWindow.MouseY – 10
GraphicsWindow.FillEllipse(x, y, 20, 20)
EndSub
شکل ۲-۱۱ : شکل دیگری از مدیریت رویداد MouseDown
استفاده از چندین رویداد
هیچ محدودیتی برای تعداد رویدادهایی که می خواهید در برنامه از آن ها استفاده کنید، وجود ندارد.
حتی می توانید یک زیربرنامه داشته باشید که در آن از چندین رویداد استفاده نمایید.
برای توضیح این موضوع، بیایید مثال قبلی را در نظر بگیریم و یک زیربرنامه به آن اضافه کنیم که فشار کلید را کنترل می کند.
همچنین، اجازه دهید این زیربرنامه جدید رنگ قلم را تغییر دهد، به طوری که وقتی ماوس خود را کلیک می کنید، یک نقطه رنگی (با رنگ تصادفی) ظاهر شود.
اگر این برنامه را اجرا کنید و روی پنجره کلیک کنید، یک نقطه آبی خواهید داشت.
اکنون، اگر یک بار کلیدی را فشار دهید و دوباره کلیک کنید، یک نقطه رنگی متفاوت دریافت خواهید کرد.
زمانی که یک کلید را فشار می دهید اتفاقی که می افتد این است که زیرروال OnKeyDown اجرا می شود که رنگ قلم را به رنگ تصادفی تغییر می دهد.
پس از آن، هنگامی که ماوس را کلیک می کنید، یک دایره با استفاده از رنگ تازه تنظیم شده، ترسیم می شود و در نتیجه نقطه های رنگی تصادفی نشان داده می شوند.
نوشتن یک برنامه نقاشی
با استفاده از رویدادها و زیربرنامه ها، می توانیم برنامه ای بنویسیم که به کاربران اجازه می دهد روی پنجره نقاشی کنند. نوشتن چنین برنامه ای در اسمال بیسیک بسیار آسان است.
به عنوان اولین قدم، اجازه دهید برنامه ای بنویسیم که به کاربران امکان می دهد ماوس را در هر نقطه از پنجره گرافیکی حرکت دهند و هر جا که ماوس را حرکت دادند، دنباله ای از خود باقی بگذارد:
GraphicsWindow.MouseMove = OnMouseMove
Sub OnMouseMove
x = GraphicsWindow.MouseX
y = GraphicsWindow.MouseY
GraphicsWindow.DrawLine(prevX, prevY, x, y)
prevX = x
prevY = y
EndSub
با این حال، هنگامی که این برنامه را اجرا می کنید، خط اول همیشه از لبه سمت چپ بالای پنجره شروع می شود (۰، ۰).
ما میتوانیم این مشکل را با مدیریت رویداد MouseDown برطرف کنیم و مقادیر prevX و prevY را در هنگام اجرای آن رویداد، ذخیره نماییم.
همچنین، ما واقعاً تنها زمانی به دنباله نیاز داریم که کاربر دکمه ماوس را پایین نگه داشته باشد. در مواقع دیگر، ما نباید خط بکشیم.
برای دریافت این رفتار، از ویژگی IsLeftButtonDown در شی ماوس استفاده می کنیم.
این ویژگی نشان می دهد که آیا دکمه چپ، پایین نگه داشته شده است یا خیر.
اگر این مقدار درست باشد، خط رسم می شود، در غیر این صورت، خطی رسم نمی گردد.