ویژوال بیسیک توسعه یافته زبان برنامهنویسی بیسیک میباشد.
بیسیک توسط پروفسور جان کمنسی و توماس کرتز از کالج دارتموث برای نوشتن برنامههای ساده ایجاد شد.
طراحی آن از اواسط دهه ۱۹۶۰ آغاز گردید.
ویژوال بیسیک تا نسخه ۳ به صورت ۱۶ بیتی بود.
از نسخه ۵ به بعد فقط ویرایش ۳۲ بیتی آن ارائه شد.
(نسخه ۴ هم به صورت ۱۶ بیتی و هم به صورت ۳۲ بیتی عرضه شده بود.)
ویژوال بیسیک از نسخه ۶ به بعد بر پایه چارچوب داتنت (NET.) ارائه شد.
اگر چه با ظهور ویژوال بیسیک دات نت اکثر برنامهنویسان ویژوال بیسیک ۶ به آن گرویدند، ولی نسخه ۶ همچنان طرفداران ویژهی خود را دارد.
ویژوال بیسیک برای توسعه سریع نرم افزار (RAD یا Rapid Application Development) بر پایه رابط گرافیگی کاربر (GUI یا Graphical User Interface) توسعه داده شد.
دسترسی آسان و سریع به پایگاه دادهها با استفاده از DAO ،RDO یا ADO و ایجاد کنترلهای اکتیو ایکس از جمله مواردی هستند که این زبان را برای RAD مناسب کردهاند.
برنامهنویسی در ویژوال بیسیک به صورت رخدادگرا میباشد.
در برنامهنویسی تجاری، ویژوال بیسیک جز محبوبترینها است.
بنابه آماری که در سال ۲۰۰۳ منتشر شد، ۵۳٪ از برنامههای تجاری با استفاده از این زبان تولید شدهاند.
توابع ریاضی در ویژوال بیسیک
برای نوشتن برنامههای مهندسی، محاسباتی، گرافیکی و آماری نیاز دارید تا از برخی توابع ریاضی استفاده نمائید.
ویژوال بیسیک 6 دارای مجموعهای از توابع است که برای انجام محاسبات عددی پیش بینی شده اند.
در این مقاله ابتدا با این توابع آشنا شده و سپس چگونگی ایجاد سایر توابع ریاضی را که در میان این مجموعه وجود ندارند خواهید دید.
در پایان نیز با توابع ریاضی موجود در دات نت آشنا میشوید.
تابع Abs (قدرمطلق) :
مقدار بدون مثبت یک عدد را برمیگرداند
تابع Atn (آرک تانژانت) :
خروجی این تابع عددی از نوع double است که برابر زاویهای است که تانژانت آن عدد ورودی تابع است.
تابع Cos (کسینوس) :
خروجی این تابع عددی از نوع double است که برابر کسینوس زاویه ورودی است.
تابع Exp (توان نمانی) :
خروجی این تابع عددی از نوع double است که برابر e به توان ورودی تابع است.
تابع Int (تابع کف یا تابع جزء صحیح) :
نزدیکترین عدد صحیح مساوی یا کوچکتر نسبت به عدد ورودی را برمیگرداند.
تابع Log (لگاریتم) :
خروجی این تابع عددی از نوع double است که برابر لگاریم طبیعی عدد ورودی است (لگاریتم بر مبنای عدد e یا همان Ln).
تابع Round (گرد کردن) :
خروجی این تابع عددی از نوع double است که برابر نزدیکترین عدد صحیح به مقدار عدد ورودی است.
تابع Sgn (علامت) :
خروجی این تابع عددی از نوع صحیح است که نشان دهنده علامت عدد ورودی است.
تابع Sin (سینوس) :
خروجی این تابع عددی از نوع double است که برابر سینوس زاویه ورودی است.
تابع Sqr (جذر) :
خروجی این تابع عددی از نوع double است که برابر ریشه دوم یا جذر عدد ورودی است.
تابع Tan (تانژانت) :
خروجی این تابع عددی از نوع double است که برابر با تانژانت زاویه ورودی (برحسب رادیان) میباشد.
نکته: برای محاسبه توان nام یک عدد (n می توان صحیح یا اعشاری باشد) از اپراتور ^ استفاده نمائید.
برای مثال:
 نکته: برای محاسبه توان nام یک عدد (n می توان صحیح یا اعشاری باشد) از اپراتور ^ استفاده نمائید.
برای مثال: 2 ^ 5 = 32 9 ^ 0.5 = 3 4.2 ^ 3.7 = 202.31 ایجاد سایر توابع ریاضی که در ویژوال بیسیک 6 وجود ندارند : جدول زیر چگونگی محاسبه سایر توابع ریاضی که در ویژوال بیسیک 6 وجود ندارند را نشان میدهد: برای استفاده از اعداد پی و e در برنامههای خود، ثوابت زیر را تعریف نمائید Const Pi = 3.14159265358979 Const e = 2.71828182845904 همچنین عدد پی را میتوان به صورت زیر تعریف کرد: Pi = 4 * Atn(1) تبدیل رادیان به درجه چون اکثر توابع مثلثاتی بر حسب رادیان کار می کنند گاهی اوقات نیاز داریم تا زوایا را از در جه به رادیان و بالعکس تبدیل کنیم.
برای تبدیل یک زاویه بر حسب رادیان به درجه، آنرا در 180 ضرب کرده و سپس بر عدد پی تقسیم میکنیم: Degree(x) = x * 180 / Pi برای تبدیل یک زاویه بر حسب درجه به رادیان، آنرا در عدد پی ضرب کرده و سپس بر 180 تقسیم میکنیم: Rad(x) = x * Pi / 180 مفاهیم بنیادی درVB، شئ (Object) های بسیاری وجود دارد مانند فرمها، دکمه ها، برچسب ها، تصاویر و ...
.
همانطور که می دانیم هر شئ(Object) دارای یک سری مشخصات(Properties) می باشد.
به عنوان مثال اگر یک اتومبیل را به عنوان یک شئ در نظر بگیریم، این اتومبیل دارای مشخصاتی چون رنگ خاص، وزن خاص، طول و عرض و ارتفاع خاص، میزان خاص مصرف بنزین و ...
می باشد که در تمایز دو اتومبیل از هم، همین مشخصات هستند که به ما کمک می کنند.
درVB نیز هر Object دارای یک تعداد مشخصه (Property) می باشد.
به عنوان مثال یک دکمه(Button) دارای مشخصاتی چون عرض(Width) و ارتفاع(Height) خاص و یا یک عنوان(Caption) خاص و ...
می باشد.
برخی شئ(object) ها درVB، فقط در کدنویسی قابل دسترسی هستند(مانند شئ ADODB که در آینده با آن آشنا خواهید شد) اما برخی دیگر علاوه بر زمان کدنویسی، در زمان طراحی (Design) نیز می توان آنها را بر روی فرمها و در جای دلخواه قرار داد و آنها را تنظیم (Set) نمود.
به اشیاء نوع اخیر، کنترل (Control) گفته می شود.
کنترل ها خود دو گونه اند، برخی علاوه بر زمان طراحی (Design) در زمان اجرا (Run Time) نیز دیده می شوند، به این نوع کنترل در اصطلاح(Visual Control) VCL گفته می شود که بیشترین انواع کنترلها را در بر می گیرند (مانند دکمه ها، جدولها، برچسبها و بسیاری دیگر که در ادامه خواهند آمد) اما برخی دیگر از کنترل ها فقط در هنگام طراحی (Design) دیده می شوند و در هنگام اجرا تنها عمل خاصی انجام می دهند و خود دیده نمی شوند (مانند کنترلTimer)، به این نوع کنترلها،Non-Visual Control گفته می شود.
باید توجه داشته باشیدکه کنترلهایNon-Visual، ذاتاً درRun Time دیده نمی شوند ولی ممکن است بنابر نیازی و در زمانی خاص از اجرا، خودمان برای یک یا چند VCL نیز مقدار مشخصه Visual آنها را برابرFalse قرار دهیم که مسلماً در این حالت با وجود اینکه در آن زمان، این کنترلها دیده نمی شوند ولی VCL بودن آنها تغییری نکرده است.
کنترل ها (اعم ازVCL ها و غیر آن) معمولاً دارای تعدادی Event می باشند.
Event ، رویداد یا رخدادی است که توسط کاربر و معمولاً با استفاده از ماوس یا صفحه کلید برای یک کنترل خاص روی می دهد.مثلاً یک کنترل ممکن است دارای رویداد (Event) Click باشدکه این نوع رویداد زمانی که کاربر در هنگام اجرای برنامه (Run Time) بر روی آن کنترل خاص کلیک نماید رخ می دهد.برخی Event های معمول دیگر برای کنترلها عبارتند از: DoubleClick (زمانی که بر روی آن کنترل دابل کلیک شود) ، MouseMove (زمانی که نشانگر ماوس بر روی آن کنترل قرار دارد) ، KeyPress (زمانی که کلیدی از صفحه کلید زده شد) ، KeyDown (زمانی که کلیدی از صفحه کلید پایین بود) ، KeyUp (زمانی که کلید زده شده برداشته شد) ، MouseDown ، MouseUp و ...
که در ادامه با آنها بیشتر آشنا خواهیم شد.
برای هر Event (رویداد) می توان یک Event Procedure داشت.
Event Procedure پاسخی است که یک کنترل زمانی که یک Event رخ می دهد، از خود نشان می دهد.
در واقع Event قطعه برنامه ای است که زمانی که بر روی یک کنترل، یک Event رخ می دهد، به طور اتوماتیک اجرا می شود.
کنترلها معمولاً علاوه بر یک سری مشخصات (Properties) و یک سری رویداد (Event)، دارای تعدادی نیز متد (Method) می باشد.
متدها عملیاتهای تعریف شده ای هستند که توسط آنها یک عمل خاص بر روی کنترلها انجام می شود.
توجه داریم که تفاوت متدها و Event Procedure ها در این است که متدها توسط VB ، شناخته شده اند و عملشان همیشه ثابت است، اما Event Procedure ها توسط برنامه نویس و به دلخواه او تهیه می شود، بنابراین Method های مشابه بر روی کنترلهای متفاوت، پاسخ مشابهی دارد ولی ممکن است Event های مشابه بر روی کنترلهای متفاوت با توجه به Event Procedure های مخصوص هر یک، متفاوت باشد (مثلاً رویداد Click برای یک کنترل، کاری انجام دهد و برای کنترلی دیگر، کاری دیگر).
نکته دیگری که باید به آن توجه داشت اینست که Procedure ها به طور مستقیم اجرا نمی شوند بلکه فقط زمانی که نامشان فراخوانی شود اجرا می شوند.
بنابراین مثلاً در مورد Event Procedure ها باید بدانیم که با اینکه کد مربوط به آنها نوشته شده است ولی تا وقتی که آن Event خاص (که باعث فرا خوانی Event Procedure مربوط می شود) روی ندهد، این کدها اجرا نخواهند شد.
Drag & Drop فرض کنید بخواهیم برنامه ای بنویسیم که ظاهری شبیه آنچه در شکل 9 میبینید داشته باشد.
و بتوانیم تصویر داخل PictureBox مبداُ (سمت چپ) را بوسیله Drag & Drop به PictureBox مقصد (سمت راست) منتقل کنیم.
شکل 9 ابتدا دو PictureBox (که کنترل آن در ToolBox به شکل می باشد) را در مکانهای خود قرار داده و مشخصه Name آنها را picSource و picTarget می گذاریم.
برای نمایش متنی که در پایین شکل 9 می بینید نیز می توانیم از یک Label استفاده کنیم.
PictureBoxها دارای مشخصه ای به نام Picture هستند که بوسیله آن میتوانیم یک تصویر را در آن قرار دهیم.
اگر بخواهیم این مشخصه را در زمان طراحی (Design Time) تنظیم نماییم، کافیست بر روی نام این مشخصه در پنجره Properties، دابل کلیک نماییم، یک پنجره محاوره ای باز می شود که می توانیم تصویر مورد نظرمان را بیاوریم و آن را انتخاب کنیم.
(پنجرهای مانند پنجره های Open در ویندوز).
اما اگر بخواهیم آن را در زمان اجرا (Run Time) تنظیم نماییم، باید این مشخصه را برابرتابع loadPicture( ) قرار دهیم که مسیر و نام تصویر مورد نظر به عنوان پارامتر این تابع قرار میگیرد.
اگر در پارامتر این تابع چیزی قرار نگیرد، مشخصه Picture را خالی می کند یعنی PictureBox مورد نظر را (در صورتی که دارای تصویر بوده) بدون تصویر می کند.
حال مشخصه Picture از picSource را (در زمان طراحی) به تصویر دلخواه مورد نظر خود تغییر دهید و در واقع یک تصویر را در آن قرار دهید.
شایان ذکر است که می توانید تصاویر فراوان مناسبی را مسیر Visual Studio>Common>Graphics دستگاه خود (در داخل مسیری که برنامه Visual Studio را در آن نصب کرده اید)، بیابید.
به سراغ برنامه خود برویم، تا اینجا ظاهر (Interface) برنامه را ایجاد کردید.
حال لازم است به کدنویسی برای آن بپردازیم.
ولی قبل از آن توضیح در مورد چند رویداد را ضروری می دانم که عموما غالب کنترلهای VCL دارای این رویدادها می باشند: رویداد MouseDown : زمانی برای یک VCL رخ می دهد که دکمه ای از ماوس را روی آن VCL فشار دهیم.
رویداد MouseUp : زمانی برای یک VCL رخ می دهد که دکمه زده شده از ماوس را رها کنیم.
رویداد MouseMove : زمانی برای یک VCL رخ می دهد که نشانگر ماوس را بر روی آن حرکت دهیم.
رویداد DragOver : زمانی برای یک VCL رخ می دهد که VCL دیگری که در حال Drag شدن است را بر روی این VCL بیاوریم.
رویداد DragDrop : زمانی برای یک VCL رخ می دهد که VCL دیگری که در حال Drag شدن است را بر روی این VCL، Drop (رها) نماییم.
حال که با این رویدادها آشنا شدیم، کافیست کدهای زیر را در یونیت این فرم داشته باشیم: Option Explicit Private Sub picSource_MouseDown (Button As Integer,Shift As Integer,x As Single,y As Single) picSource.Drag vbBegineDrag End Sub Private Sub picTarget_DragDrop (Source As Control) PicTarget .Picture = picSource.Picture picSource.Picture = loadPicture( ) End Sub توجه داشته باشیم که وقتی رویداد MouseDown برای picSource روی می دهد، توسط متد Drag از picSource (یعنی توسط picSource.Drag) و به همراه پارامتر VbBeginDrag برای آن، عمل Drag آغاز می شود و در صورتی که عمل Drop شدن روی picTarget صورت بگیرد (یعنی اگر رویداد DragDrop برای آن رخ دهد)، تصویر داخل picSource به داخل picTarget منتقل می شود (بوسیله دستور picTarget.Picture = picSource.Picture) و سپس تصویر داخل picSource (بوسیله دستور ()picSource.Picture = loadPicture ) حذف می شود.
و بالاخره آخرین تذکری که در اینجا داده می شود اینکه مشخصه Picture برای PictureBoxها مشخصه پیش فرض (Default) می باشد و لذا مثلا بجای pictarget.picture میتوان از pictarget نیز استفاده کرد.
استفاده از منو در فرمها لابد از اهمیت فوق العاده زیاد منوها در ویندوز مطلع هستید.
منوها علاوه بر تنوع و زیبایی فرمها، به شلوغ نشدن یک فرم توسط دکمه های زیاد نیز کمک میکنند.
برای درست کردن منو برای یک فرم از MenuEditor که در منوی Tools قرار دارد استفاده می کنیم.
همچنین MenuEditor یک دکمه فوری نیز بر روی میله