بخشی از مقاله
تاريخچه ويژوال بيسيك
حدودسي و پنج سال قبل در كالج دارتموث زباني پا به عرصه وجود گذاشته برنامه نويسي را از تسلط حرفهايها خارج كرد و به مبتديان هم امكان داد تا وارد دنياي شيرين برنامه نويسي شوند ؛ اين زبان بيسيك نام گرفت. زبان بيسيك از ساير زبانهاي آن زمان مانند فورترن ،كوبول واسمبلي بسيار سادهتر بود و به همين دليل به عنوان مبناي كار شركت ميكروسافت براي اولين زبان برنامه نويسي نيمه حرفه اي در محيط ويندوز انتخاب شد.
هرزبان برنامه نويسي اصولا مجموعه ايست از تعدادي دستور كه هر كدام كار مشخصي انجام ميدهند. انسانها با اين مجموعه دستورات است كه كامپيوترها را وادار به انجام خواسته ها يشان مي كنند.با آن كه بيسيك براي مبتديان طراحي شده بود اما دستورات آن همچنان مبهم ورمزآلود بود.
شركت ميكروسافت قبل از رسيدن به VISUAL بيسيك را توسعه داد كه هر كدام ازآنها بنحوي تقويت وتكامل اين زبان محسوب ميشدند:MBASIK ،GWBASIC،BASICA ،QUIK BASIK ،QBASIK .در اين مسير چندين ويرايش ديگر از زبان بيسيك ، بدون از دست دادن سادگي خود،قدرت قابل توجهي بدست آورد.
زبان بيسيك (براي حفظ سادگي)همچنان يك زبان اينترپرتري باقي ماند،چون فاصله كوتاه بين نوشتن برنامه و ديدن حاصل كار براي مبتديان ازضرورت تام برخوردار است. البته اگربرنامه اي بخواهد در دنياي برنامه هاي حرفه اي حرفي براي گفتن داشته باشد بايد به كامپايلر متكي باشد كه البته نتيجه آن زحمت بيشتر براي برنامه نويس است.
با ورود ويندوز به صحنه و محبوبيت سريع آن، ميكروسافت دريافت كه ديگر بيسيك هاي قديمي (كه اساسأ متن گرا بودند)نمي توان ازكارايي لازم در اين محيط جديد برخوردار باشند؛و اين نقطه تولدvisual basic بود.
محبوبيت visual basic ،علاوه بر گرافيكي وساده بودن ،از آنجا ناشي مي شود كه زباني اينترپر تري (interpreter )و كامپايلري(compiler )است.زبانهاي اينترپرترياز نظر سهولت توليدوتوسعه برنامه خيلي به برنامه نويسي كمك مي كنند واز طرف ديگر برنامه هاي كامپايل شده بنحو چشمگيري سريعتر از برنامه هاي اينترپرتري هستند. باتركيب اين دو ويژگي ،visual basic به سهولت توليد برنامه و سرعت اجرا در محصول نهايي دست يافته است.
چگونه يك برنامه VBبنويسيم
به منظور نوشتن يك برنامه VBاولين مرحله طراحي صفحه تصوير است، يعني آنچه كه استفاده كننده مي بيند :چه منوهايي لازم است؟اندازه پنجره چقدر باشد؟چند پنجره وجود داشته باشد؟آيا به كاربران امكان تغيير دادن اندازه مي باشد؟ محل كلمه فرمان كجا باشد تا استفاده كننده با كلليك كردن آنها را فعال سازد؟واينكه آيا هر برنامه جايي(با نام جعبه متن)براي ورود متن خواهد داشت؟
در VBاشيايي كه بر نامه نويس در درون پنجره ها قرار ميدهد كنترل ناميده ميشود.وتعداد اين كنترلها به ويرايش VBبستگي دارد بيش از 20 كنترل براي روش استاندارد و افزون از 30 كنترل براي ويرايش حرفه اي در نظر گرفته شده است.
علاوه بر اين از آنجايي كه VB قابليت ايجاد كنترلها ي زيادي را براي كاربردهاي بخصوص دارد به راحتي قادر خواهيد بود كه براي يك وظيفة مشخص كنترل سفارش مورد نظر تهيه فرماييد.
VBطراحي صفحة تصوير را آسان كرده است ميتوان بهمان راحتي كه ازيك برنامه نقاشي استفاده مي نماييم واسط كاربر را بكشيد. با ذكراين نكته پس از اتمام كار طراحي واسط كاربر دكمه فرمان و نيز ساير كنترلهايي كه در پنجره خالي قرار داده شده بطور خودكار اعمال كاربر مانند حركت ماوس ويا كليك كردن دكمه ها تشخيص مي دهد.
VB همچنين قابليت طراحي منوهاي معمولي وباز شدني را نيز دارا مي باشد تنها پس از طراحي واسط هاست كه بايد كمي برنامه بنويسد .درVB كنترلها رويدادهايي مانندكليك ماوس را تشخيص
ميدهد. نحوه پاسخ به اشياء به رويدادها به كدهاي نوشته شده بستگي دارد بدين ترتيب شما نيز خواهيد داشت كه در پاسخ رويدادها هر كنترل كدي بنويسيد .اين موضوع، برنامه نويسي VB را از انواع برنامه نويسي روالگراي قراردادي در ويرايشهاي قديمي Basic ،c ،پاسكال متفاوت ميسازد.در زبانهاي برنامه نويسي قراردادي بزرگ از بالا به پايين اجرا ميشوندبه عبارتي اجراي برنامه ها از اولين خط شروع شده و مطابق روند برنامه به بخشهاي مختلف منتقل مي گردد در صورتيكه يك برنامه VB كاملاً متفاوت كار ميكند هسته هربرنامهVB يك مجموعه از كدهاي اجرايي است كه پس از فعال شدن پاسخ مناسب را براي رويدادهايي كه تشخيص ميدهد ايجاد مي نمايد.
درVB كدهاي برنامه نويسي كه تعيين كننده نحوه پاسخ برنامه شما به رويدادهايي نظير كليك ماوس ميباشد در مجموعه اي تحت عنوان روال رويداد قرار دارد.
روال رويداد بخشي از كدهايي است كه اجراي آنها منوط به وقوع يك رويداد خارجي بخصوص ميباشد.در اغلب حالات هر كار اجرايي در يك برنامه VB مي تواند يك روال رويداد بوده ويا آن چيزي باشد كه در روال رويداد بكار رفته تا به اجراي روال كمك نمايد.
در حقيقت تفاوت اصلي VB با ساير زبانهاي برنامه نويسي متعارف استفاده از عبارت پروژه به جاي برنامه مي باشد كه معناي آن تركيبي است از كدهاي برنامهنويسي و واسط كاربر كه ساخت يك برنامه VB را امكان پذير ميسازد.
براي طراحي يك برنامةVB بطور خلاصه بايد مراحل زير را طي كرد:
1. پنجره هايي را كه كاربر مي بيند شكل داد.
2. تعيين كرد كه كدام رويداد يك كنترل روي پنجره رخ مي دهد.
3. براي رويدادهاي تعيين شده روال نوشت(همچنين روالهاي كمكي كه موجب كاركرد آن روال مي شود.)
هنگام اجراي يك برنامه اتفاقات زير بوقوع مي پيوند:
1. VB براي همه رويدادهاي مختص به يك كنترل، پنجره ها وكنترل هاي هر پنجره را جستجو مي كند(حركت ماوس،حركت كليك ماوس،ضربه كليك و…).
2. پس از اينكه VB رويدادي را تشخيص داد چنانچه پاسخي براي آن رويدادبصورت پيش ساخته داخلي(internet built-in )وجود نداشته باشد،VB تمام برنامه هارا تست مي كند تا مطمئن سود كه براي رويداد مورد نظر روالي نوشته شده است يا خير.
3. اگر روال رويدادي نوشته شده باشد VB آنرا اجرا كرده وبه مرحله1 باز خواهد گشت.
4. اگر روالي براي آن رويداد نوشته نشده باشد VB به مرحلة ديگر باز مي گردد.
اين چرخه تا پايان برنامه بطور پيوسته ادامه مي يابد معمولاً قبل از اجراي هر كاري توسط VB بايد رويدادي اتفاق افتد، بنابراين برنامه هايVB عمدتاً تأثير پذيرند تا اثر گذاروهمين مسأله نشان ميدهد كه اين برنامه با كاربر نزديك انچه براي اجراي VB موردنياز است: ويرايش استانداردVB به ويندوز95 ،ويندوزNT نياز دارد .حداقل به يك ماشين قوي براي كار با سيستمهاي عامل 32 بيتي نياز ميباشد.در واقع به سخت افزار زير نياز مي باشد:
1. يك پردازنده 486 يا پنتيوم سريع و حداقل 8 مگابايتRAM (16مگابايت
بسيار مناسب تر خواهد بود.)
2. يك سخت ديسك با حداقل60مگابايت فضاي خالي.
ي بيشتري دارند.
تشريح يك بر نامه VB
كليد برنامه نويسي VBتشخيص اين مطلب است كه VB كدها را فقط در پاسخ به رويدادها پردازش ميكند.يك بر نامه VBمشتمل بر مجموعه از بخشهاي مستقل كه تنها در پاسخ به رويدادهاي مربوطه فعال مي شود.نحوه اجراي هر برنامه VB به صورت آغاز كردناز خط شروع ،اجراي برنامه از بالا به پايين و اختتام آن در خط پايان نيست.
در حقيقت بر خلاف بسياري از زبانهاي برنامه نويسي خطوط اجرايي برنامه هايVBداخل توابع يا روالها مي باشد.
نوشتن روال رويداد در پنجره كد
هر روال رويداد حاوي مقداري كد استو رويداد مربوطه را مديريت مي كند.يك كنترل مي تواند رويدادهاي زيادي(در نتيجه روالهاي زيادي)داشته باشد. VB به هر رويداد نامي مي دهد كه تشكيل مي شود از:
• كنترلي كه روال به آن مربوط است،
• رويدادي كه روال به آن مربوط است.
شكل كلي نام تمام روال هاي رويداد چنين است:
ControlName_EventName()
نام كنترل و نام رويداد با يك زير خط(ـ)از هم جدا ميشوند. اين نام گذاري در تمام روال هاي رويداد رعايت مي شود. بنا براين مثلاً،CmdExit_DblClick() فقط وقتي اجرا مي شود كه كاربر دكمة CmdExit را دو-كليك(DblClick)كند.پرانتزهاي نام روال هميشه خالي نخواهد بود وحتي اگر خالي هم باشد جزء لاينفك روال رويداد هستند.
توجه داشته باشيد كه روال فوق فقط(و فقط)زماني اجرا مي شود كه دكمةCmdExit دو-كليك شود و هيچ رويداد ديگري (حتي كليك شدن اين دكمه )باعث اجراي آن نخواهد شد.
VBقبل از نام تمام روال هاي رويداد عبارت Private Sub را قرار مي دهد و اين بدان معناست كه اين روال ها فقط در ميدان ديد فرمي كه در آن هستند قرار خواهند داشت. اين عبارت ضمني است،بدين معنا كه حتي اگر نوشته نشود،VB آن را فرض خواهد كرد.
در VB دو نوع روال وجود دارد:
1. تابع(function)
2. سابرتين(subroutine)
تمام روال هاي رويداد سابروتين هستند.توجه داشته باشيد كه روال رويداد ميتواند هر قدر كه برنامه نويس ميل دارد طولاني و مفصل باشد،اما بهتر است برنامه نويس كدهاي طولاني را به قطعات كوچكتر تقسيم كند تا مديريت آنها ساده تر آنها ساده تر شود . بعنوان مثال مي توان در روال فوق كدي به شكل زير نوشت.
Privat Sub cmdExit_DublClick()
Lbltitle.caption=”new page"
IntTotal=intCustNum+1
End sub
اولين خط برگشتي اين كد ميگويد كه اين روال سابروتين(بدون مقدار برگشتي)خصوصي(private-محدود به فرم برنامه )است كه فقط در صورت دو-كليك شدن دكمة cmdExitاجرا خواهد شد.بدنه اين روال دو خط است كه خط اول آن براي كنترلي با نامlbltitle است كه مقدار خاصيت caption ( براي نوشته روي برچسب)را به مقدارNew Page ست مي كند .وخط دوم آن مقدار يك متغير را با عدد يك جمع مي كند ودر متغير ديگري مي ريزد.درخط آخر آن روال رويداد در اين نقطه پايان مي يابد.
پنجره كد
براي نوشتن (يا ديدن)كدهاي برنامه بايد از پنجرةكد استفاده كنيد. براي ديدن اين پنجره كافيست در پنجرة پروژه بعد از انتخاب فرم مورد نظر روي دكمة Viwe Code كليك كنيد. اما راحل ساده تر براي ظاهر كردن پنجرة كد دو-كليك كردن روي فرم يا كنترل مورد نظر است .
اگر كنترلي كه روي آن دو كليك كرده ايد داراي روال رويدادباشد ،VB آن را نمايش خواهد داد ولي اگر تا كنون براي آن كنترل كدي ننوشته ايد،VB به طور خودكار يك روال رويداد (براي متداولترين رويداد آن كنترل )ساخته ونشان خواهد داد.مثلاً فرض كنيد دكمه اي داريد بنامcmdHappy ؛ اگر روي اين دكمه دو-كليك كنيد ،VB الگوي ذيل را ساخته و نمايش خواهد داد(چون Click متداولترين رويداد دكمه فرمان است):
Private Sub cmdHappy_Click()
End Sub
VB حتي كرسر را بين اين دو خط قرار مي دهد بگونه اي كه بلافاصله مي توانيدكد نوشتن را آغاز كنيد
هنگام نوشتن كدهاي برنامه ،VB از رنگهاي مختلفي براي كدها استفاده ميكند . مزيت اين كار در آن است كه خوانايي بر نامه را افزايش داده وديباگ كردن آن را راحتتر خواهد كرد.VB براي هر نوع از كدها ي مختلف رنگ خاصي استفاده مي كند: كلمات كليدي برنامه(مانند دستوراتVB)هميشه آبي هستند.نام اشياءوخواص آنها هميشه سياه هستند.ساير قسمتها هم سبز خواهند بود.بنابراين اگر احياناً ديديد كه يك كلمه كليدي سبز رنگ است، متوجه خواهيد شد كه آن را اشتباه نوشته ايد.(رنگ قسمتهاي مختلف كد برنامه را مي توانيد درصفحه Tools|Options|Editor Format به سليقه خود ست كنيد.)
VB بخش عمدهاي از خطاهاي دستوري(Syntax erro
زدن Tab دستور را كامل كنيد.
تفاوت روال تابعبا سابروتين در اين است كه تابع داراي مقدار برگشتي(return value) است در حاليكه سابروتين مقدار برگشتي ندارد.
تا كنون دربارة روالهاي Private صحبت كرديم اما نوع ديگري از روالها وجود دارند كه كه روالهاي عمومي(Public)ناميده مي شوند.استفاده از روالهاي عمومي ميتواند كدها را سادهتر و قابل فهم تر كند وصرفه جويي زيادي در وقت باشد.روتيني كه در يك بر نامه نوشته ميشود حتي در برنامه هاي ديگر نيز ميتواند مورد استفاده قرار گيرد.ام اگر يك روال در مدول فرم قرار داشته باشد،هيچ برنامه اي بدون ضميمه كردن آن فرم به خود نمي تواند از آن استفاده كند. براي اجتناب از اين وضعيت ميتوان روال هاي عمومي را در يك مدول كد (code module)قرار اد.يك مدول كد مي تواند حاوي تعداد زيادي روال عمومي با شد. با دسته بندي اين قبيل مدول ها مي توانيد ازآنها استفاده كرده واز كارهاي تكراري پرهيز كنيد .
تمام روال هاي درون يك مدول كد را ميتوان در ساير مدول هاي برنامه مورد استفاده قرار داد مشروط به اينكه اين روالها به صورت خصوصي تعريف نشده باشد:
Privat Sub ReportIt()
اين روال فقط از داخل خود مدول كد قابل دسترسي است.فقط اگر روالي به صورت عمومي تعريف شود،مي توان از آن در ساير مدولهاي برنامه استفاده كرد:
Public Sub ReportIt()
مطالب فوق را مي توان در دو قانون ذيل خلاصه كرد:
• روالي كه به صورتPrivate تعريف شده باشدفقط درهمان مدول قابل استفاده است.
• روالي كه به صورت Public تعريف شده باشددرتمام مدولهاي برنامه قابل استفاده است.
آشنايي با محيط VB
براي آنكه بتوان با VB برنامه نوشت بايد با محيط برنامه نويسي آن آشنا شد.
در اين قسمت اجزا مختلف صفحه اصلي آن را معرفي مي كنيم:
پنجره پروژة جديد
هرگاه VB شروع ميشود پنجره اي به نام New project (پروژة جديد)ظاهر مي –شود و به شما امكان مي دهد تا نوع برنامة خود را انتخاب كنيد.در اين پنجره آيكونهاي مختلفي وجود دارد .به عنوان مثالStandard EXE (اين نام مي گويد كه اگر برنامه كامپايل كنيد يك فايل .exe توليد خواهد شد.برنامه هاي Standard EXE را به صورت اينترتر پري هم مي توان اجرا كرد. )يا application wizard (جادوگر برنامه در پايان اسكلت يك برنامة كامل و عملياتي را برايتان مي سازد.).
ميله ابزار
ميله ابزارVB درست زير منوي آن قرار دارد وخود از چهار ميله ابزار كوچكتر تشكيل شده است.
• ديباگ.اين ميله ابزار هنگام ديباگ كردن برنامه ها فعال خواهد.
• اديت.از اين ميله ابزار براي اديت كردن كدهايVB استفاده خواهيد كرد.
• اديتور منو.با اين ميله ابزارمي توانيد اشياء روي فرم را كنترل كنيد.
• استاندارد.ميله ابزار پيش فرضVB كه در ذيل منو ديده ميشود.
براي ظاهر يا پنهان كردن اين ميله ها مي توانيدازView|Toolbars استفاده كنيد.هر ميلةابزار داراي دكمه هاي متعددي است كه هر يك راه ميانبري براي اجراي فرمانهاي VBهستند وزحمت جستجو در منوهاي VB را از دوش شما برمي دارد.
ميله هاي ابزارVB ميتوانند چسبيده(doced)يا شناور(float) باشند؛يعني هر ميله ابزار ميتواند بطور ثابت به ساير قسمتهاي محيطVB بچسبد يا به صورت شناور(در هر قسمت كه برنامه نويس ميل داشته باشد)قرار گيرد.
جعبه ابزار
پنجرة جعبه ابزار(Toolbox)با ميله ابزار تفاوت دارد.اين پنجره،كه به آن مختصراً جعبه ابزار گفته مي شود،انبارةكنترل هاي VB است .مسئله جالب در مورد جعبه ابزار اين است كه اين جعبه ابزار هرگز خالي نمي شود ! يعني هر چقدر كه از ابزارهاي آن استفاده كنيد باز هم اين جعبة ابزار ميتواند ابزارهاي ديگري در اختيارتان بگذارند . در حقيقت جعبه ابزار ابزارها را خلق كرده و روي فرم قرار مي دهند.
پنجرة فرم
پنجرة فرم جائيست كه كنترل هاي بر نامه روي آن قرار ميگيرند.البته يك برنامه مي تواند چندين فرم داشته باشد(MDI)كه مي توانيد آنها را از محيط برنامه نويسي VB همزمان مشاهده كنيد.البته در هر لحظه فقط يكي از فرمها فعال است كه رنگ ميلة عنوان اين فرم با ساير فرمها تفاوت خواهد داشت.
پنجرة طراحي فرم
پنجرة طراحي فرم پنجره جالبي است كه ارتباط نزديكي با فرم هاي برنامه داردوظاهر و موقعيت فرمهاي برنامه را هنگام اجراي آن نشان ميدهد .براي جابجا كردنفرمها روي صفحة كامپيوتر مي توانيد از پنجره طراحي فرم استفاده كنيد.اگر برنامه چند فرم داشته باشد،تمام آنها را مي توانيد در اين پنجره مشاهده كرده و موقعيت نهايي آن را تعيين كنيد.
پنجرة پروژه
پنجرة پروژه محل كنترل اجزاء برنامه است.پنجره پروژه ميتواند خيلي شلوغ شود! هربرنامه مي تواند داراي چندين فايل باشد وتعداد اين فايلها ميتواند بسرعت بالا رود.پنجرة پروژه براي مديريت اين فايلهاست وميتوانيد به كمك آن هر فايل را به ناحية كاري VB آورده و روي آن كار كنيد.(به پنجرة پروژهؤكاوشگرپروژه هم مي گويند). پنجره پروژه براي نمايش اجزاءبرنامه و روابط آنها از ساختار
درختي استفاده مي كند.هر آيتم در پنجره پروژه داراييك نام پروژه و يك نام فايل است .در VBبه هر شييء مي توان نام داد وهر آيتم با نامي ديگر روي ديسك ذخيره خواهد شد.نام فايل با نام پروژه متفاوت است(نام پروژه بر خلاف نام فايل پسوند ندارد)و در پرانتز نمايش داده مي شود.بدين ترتيب در پنجرة پروژه علاوه بر نام پروژه نام فايل تمام آيتمها را ميتوانيد مشاهده كنيد.
درميله ابزار پنجرة پروژه سه دكمه ديده مي شود:
• دكمةView Code :كه با آن مي توانيد پنجرة كد آيتم انتخاب سده را مشاهده كنيد.
• دكمة View Object :كه با آن مي توانيد پنجرة فرم انتخاب شده رامشاهده كنيد.
• دكمةToggle Folders:كه با آن مي توانيدساختارنمايش پنجرةپروژه راتغييردهيد.
در پنجرة پروژه اشياء مختلفي مي توانند ظاهر شوند:
• پروژه.يك برنامه ميتواند داراي چندين پروژه باشد (مانند كنترلهاي ActiveX).پسوند نام فايل پروژه هميشهVBP.است.
• فرم. هر پروژه مي تواند فرم هاي متعددي داشته باشد.پسوند نام فايل فرم ها هميش
• مدول. كدها و روتين هاي عمومي برنامه، كه به هيچ كنترل خاصي مربوط نيستند،بايد در مدول (module) ها قرار داده شوند.از يك مدول به دليل خصلت عمومي آنها مي توان در برنامه هاي متعددي اشتفاده كرد.پسوند نام فايل مدولها.BASاست.
• مدول كلاس.محل تعريف كدهايي كه اشياءپروژه را تعريف مي كنند. پسوند نام فايل مدولهاي كلاس(class module)هميشه.CLS است.
• كنترل كاربر. كنترلهاي اكتيوايكس اضافه سده به پروژه.فايلهاي اكتيوايكس داراي پسوند .OCXهستند.
• سندكاربر.سند كاربر سندي است كه مشخصات پروژه را توضيح ميدهد.پسوند نام فايل سند كاربر(user document)هميشه .DOB است.
• صفحة خواص .صفحات خواص براي تعريف كنترل هاي پروژه بكار ميروند(مانند صفحاتي كه در گفتگوهاي برگه دار ديده مي شود).پسوند نام فايل صفحة خواص(Property Page)هميشه.PAGاست.
پنجرة خواص
يك فرم مي تواند داراي تعداد زيادي كنترل باشد.وقتي روي يك فرم كنترلي را انتخاب مي كنيد،پنجرة خواص تمام خواص آنرا نشان خواهد داد.خواص هر كنترل هنگامي كه روي فرم قرارداده ميشودداراي مقاديرپيش فرض است،اما ميتوان آنها را به مقادير دلخواه ست كرد.
چون هر خاصيت داراي نام است،مقدار آن از طريق كد هم ميتوان دستكاري كرد. براي
مثال،VBبه اولين دكمه فرماني كه روي فرم قراردهيد نام Command1خواهد داد.بنابراين ،مقدارخاصيت Nameاين كنترلcommand1است.
سعي كنيد هميشه به كنترلها نامي متناسب با عملكردشان بدهيد.روش استاندارد اضافه كردن يك پيشوندسه حرفي(براي تعيين نوع كنترل)به اول نام آن است. با اين روش هر كس با ديدن نام كنترل ميتواند نوع وعملكردآن را تشخيص دهد.