PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزش مقدماتي و جامع ويژوال بيسيك 6 Visual Basic



TAHA
10-30-2009, 12:14 AM
سلام.
از امروز سعي خواهم كرد كه در اين تاپيك مطالبي در مورد آموزش مقدماتي ويژوال بيسيك 6 قرار دهم و سعي بر اين خواهد بود كه به زبان ساده براي كساني كه هيچ گونه آشنائي با اين زبان كاربردي ندارند شرايطي فراهم شود كه پا در اين دنياي جالب و كاربردي نهند.
ويژوال بيسك 6 مايكرو سافت سيستم نسبتا كاملي براي توليد برنامه هاي كاربردي ويندوز را در يك بسته عرضه مي كند.ويژوال بيسيك حاوي ابزارهائي است كه مي توانيد از آنها براي نوشتن و ترجمه فايلهاي راهنما ، به كار گيري توابع كاربردي ويندوز ،كنترل هاي اكتيو ايكس و حتي برنامه هاي كاربردي اينترنت از آن استفاده كنيد.

شروع ويژوال بيسيك


ويژوال بيسك را پس از نصب microsoft visual studio 6.0 از منوي استارت ويندوز اجرا كنيد.به محض اينكه ويژوال بيسيك را آغاز كرديد كادري تبادلي همانند شكل زير ظاهر خواهد شد.




http://pnu-club.com/imported/2009/10/1611.jpg



بعد از اينكه گزينه standard EXE را انتخاب كرديد صفحه اصلي ويژوال بيسيك ظاهر مي شود.
نترسيد!!! اين صفحه ممكن است خيلي شلوغ باشد ولي به زودي با تك تك قسمتهاي آن آشنا خواهيد شد.
با وجودي كه صفحه در ابتدا ممكن است كمي گيج كننده باشد .اما بعدا مي توانيد اين صفحه را كاملا مطابق نيازتان سفارشي سازيد.شكل زير محيط اصلي ويژوال بيسيك را با نام قسمتهاي مختلف نمايش مي دهد.
نوار منو همانند تمام برنامه هاي كاربردي در ويندوز است كه شبيه آنرا بسيار ديده ايد.
نوار ابزار ،دستيابي تك كليده براي بسياري از فرمانهاي متداول منو را فراهم مي آورد.
پنجره فرم، ناحيه اصلي كار شماست.اگر چه پنجره فرم بسيار كو چكتر از ديگر بخشهاي صفحه پديدار مي گردد اما در اصل زمينه برنامه كاربردي شما را فراهم مي آورد.به عنوان مثال اگر برنامه ماشين حسابي بنويسيد،همه دكمه هاي ماشين حساب روي فرم قرار مي گيرندو هنگامي كه برنامه را اجرا مي كنيد،ماشين حسابي كه پديدار مي شود در واقع پنجره فرم كاربردي است كه مولفه هائي بر روي آن قرار گرفته اند توسط كد(همان برنامه اي كه براي ارتباط اشيا و وقوع رويداد ها مي نويسيم) به يكديگر مرتبط شده اند.
كنترلهاي جعبه ابزار،كنترل هائي هستند كه ميتوانيد بر روي فرم قرار دهيد.در آينده مفصل در مورد آنها بحث خواهيم كرد.
پنجره طرح بندي فرم، موقعيت اوليه فرم شما را در حين اجرا مشخص مي كند.
پنجره project Explorer نمائي درختي از تمام فايلهاي درون برنامه كاربردي است.اين پنجره فرم ها ، پيمانه ها، كلاس ها و غيره را نمايش مي دهد.
پنجره خصوصيات اطلاعات مفصلي در مورد يك كنترل خاص را مي دهند.هربار كه بر روي ابزار متفاوتي از پنجره فرم كليك كنيد ليست متفاوتي از خصوصيات آن كنترل خواهيد ديد.

http://pnu-club.com/imported/mising.jpg این عکس تغییر سایز داده شده است. روی این جایگاه کلیک کنید برای دیدن عکس کامل. تصویر اصلی دارای اندازه 960x720 یا سنگینی میباشد 67کیلو بایت.http://pnu-club.com/imported/2009/10/1612.jpg

TAHA
10-30-2009, 12:14 AM
ياد گيري نام كنترل ها


هنگامي كه يك برنامه ويندوز اجرا مي شود اتفاقات بسياري ممكن است حادث شود.درواقع رويدادهاي مختلفي بسته به نوع برنامه در حال وقوعند.يك رويداد ممكن است فشرده شدن يك كليد،انتخاب يك منو،كليك با ماوس، حركت ماوس ويا يكي از صد ها رويداد ممكن ديگر باشد.
پس بنابراين كساني كه با نرم افزارهاي برنامه نويسي ديگري نظير پاسكال و بيسيك و فورترن و .. كار كرده باشند كم كم به تفاوت ويژوال بيسيك با اين دسته برنامه ها و پي بردن به مفهوم برنامه نويسي شي گرا واقف خواهند شد.
احتمالا بهترين روش يادگيري نحوه ساخت برنامه هاي كاربردي شروع كار با يك مثال است.
اما قبل از آن اجازه دهيد به معرفي كنترل ها و خصوصيات آنها بپردازم.ابتدا سعي كنيد نام آنها را به خاطر بسپاريد.

http://pnu-club.com/imported/mising.jpg این عکس تغییر سایز داده شده است. روی این جایگاه کلیک کنید برای دیدن عکس کامل. تصویر اصلی دارای اندازه 826x479 یا سنگینی میباشد 45کیلو بایت.http://pnu-club.com/imported/2009/10/1613.jpg

TAHA
10-30-2009, 12:15 AM
قرار دادن كنترل ها


بعد از آنكه پنجره فرم را پيش روي خود داشتيد،كار شما قرار دادن كنترل ها روي فرم است.از يكي از دو روش زير براي قرار دادن كنترل ها روي فرم استفاده كنيد:
1- كنترلي را بر روي پنجره جعبه ابزار 2 بار كليك كنيدتا آن كنترل بر روي فرم قرار گيرد.اگر كنترلي از قبل در وسط پنجره وجود داشته باشدكنترل جديد در بالاي كنترل قبلي قرار خواهد گرفت..
2- اگر تنها يك بار يك كنترل را كليك نمائيد ،ماوس شما شبيه صليبي خواهد شد كه مي توانيد با كشيدن ماوس در هر جاي فرم آن كنترل را منتقل نمائيد.


اندازه كردن و حركت دادن كنترل ها


روي كنترل قرار گرفته روي فرم كليك كنيد.هشت دستگيره تغيير اندازه براي تغيير اندازه فرم در اختيار شما هستند.لازم به ذكر است كه تمام كنترل ها را نمي توانيد تغيير اندازه دهيد مثل زمان سنج يا تايمر.


تنظيم خصوصيات 1


همچنان كه كنترل ها را به فرمتان اضافه مي كنيد،پنجره خصوصيات به هنگام ميشود(پنجره خصوصيات كه يادتان هست ، خيلي با اين پنجره كار داريم) تا خصوصيات كنترل انتخاب شده را نمايش دهد.ويژوال بيسك به شما اجازه مي دهدتا با كليك كردن كنترل جهت انتخاب آن يا با انتخاب كنترل از كادر ليستي پائيين افتادني پنجره خصوصيات،آن كنترل را در پنجره خصوصيات ببينيد.
خوب براي شروع كار يك دكمه يا command Button روي فرم قرار دهيد.به پنجره خصوصيات نگاه كنيد .خصوصيات Left، Top ، Height , Width مواردي هستند كه با انها مي توانيد جايگاه كنترل و سايز انرا در دسترس داشته باشيد.

نكته: خصوصيت Name بسيار مهم است.

در قسمت name مي بينيد نوشته شده است: Command 1
اين نام پيش فرض اين دكمه است كه شما به دلخواه مي توانيد آنرا تغيير دهيد.ولي عجله نكنيد معمولا برنامه نويسان حرفه اي از اسامي اختصاري واحدي در ابتداي نام كنترل ها بهره مي گيرند.به عنوان مثال براي دكمه در ابتداي نام دلخواه آن قرار مي دهند: Cmd
بنبابراين به عنوان مثال نام اين كنترل را مي توانيد CmdOk قرار دهيد.
اين اسامي مخفف براي كنترل ها از اين قرار است:


Cbo: كادر كومبو
Chk: كادر بررسي
Cmd: دكمه فرمان
Dir: كادر ليستي فهرستها
drv: كادر ليستي ديسك گردان
fil: كادر ليستي فايل
Fra: قاب
Frm: فرم
hsb : نوار پيمايش افقي
Img: تصوير
lbl: برچسب
lin: خط
Lst: كادر ليستس
mnu: منو
ole: شي
opt: دكمه گزينه اي
pic: كادر تصوير
shp: شكل
tmr: زمان سنج
Txt: كادر متني
vsb: نوار پيمايش عمودي






نكته : سعي كنيد همين الان نام لاتين كنترل ها و حروف اختصاري آن را بياموزيد.

TAHA
10-30-2009, 12:15 AM
خصوصيات كنترل 2

دكمه فرمان:
دكمه هاي فرمان تقريبا در هر پنجره از هر برنامه كاربردي ويندوز وجود دارند.دكمه هاي فرمان تعيين مي كنند كه چه وقت كاربر مي خواهد كاري نظير خروج از برنامه كاربردي ، شروع مجاسبات ،نمايش پنجره پرينتر و ... را انجام دهد.
متداولترين خصوصيات دكمه فرمان بدين قرار است:
نكته: بسياري از خصوصياتي كه براي دكمه فرمان گفته مي شود با كنترل هاي ديگر مشترك است.
BackColor: رنگ زمينه دكمه فرمان را مشخص ميسازد . پيكان رو به پائين تخته رنگ BackColor را كليك كنيدتا ليستي از رنگها را ببينيد و رنگ دلخواه را انتخاب كنيد.اما حتما بايد قبل از آن خصوصيت style را از standard به graphical تغيير دهيد.

Cancel: مشخص مي كند در صورت فشرده شدن Esc از سوي كاربر ،دكمه فرمان رويداد Click(بعدا راجع به رويداد ها توضيح خواهم داد)را دريافت كند يا خير؟

Caption: متني راكه بر روي دكمه فرمان نمايان مي گردد نگه مي دارد.

Default: مشخص مي كند كه دكمه فرمان به فشرده شدن دكمه Enter پاسخ مي دهد يا خير؟

Enabled: مشخص مي كند كه دكمه فرمان فعال باشد يا خير؟

Font: كادر تبادلي فونت را نمايش مي دهد كه در آن مي توانيد تنظيمات نوشته روي دكمه را انجام دهيد.

MousePointer: شكل مكان نماي ماوس را در زماني كه كاربر ماوس را روي دكمه حركت مي دهد ،تعيين مي نمايد.

Picture: نام تصوير شمايل گرافيكي را كه بر روي دكمه فرمان پديدار مي گردد نگه مي دارد.به شرطي كه خاصيت style دكمه روي Graphical تنظيم شده باشد.

TabIndex : نوبت دكمه فرمان را در ترتيب فوكوس مشخص مي سازد.

Tabstop: مشخص مي سازد كه دكمه فرمان مي تواند فوكوس دريافت كند يا خير.

ToolTipText : متني را كه به عنوان توضيح ابزار در زمان اجرا نمايان مي گردد را نگه مي دارد.

Visible : مشخص مي سازد كه دكمه فرمان پديدار گردد يا از ديد كاربر مخفي باشد.

برچسب ها:

برچسبها متون اوليه اي را كه بر روي يك فرم نمايش مي دهند نگه مي دارند.اغلب برنامه نويسان از برچسبها براي قرار دادن عنوانه و برچسب گذاري روي كادر هاي متني استفاده مي كنند.
ناگفته نماند كه اين نوشته ها را به راحتي ميتوانيد در هنگام كد نويسي تغيير دهيد.
وقتي كه بر چسبها را بر روي يك فرم قرار مي دهيد تقريبا هميشه خاصيت name كنترل برچسب را تنظيم مي نمائيد و مقداري را براي caption آن قرار مي دهيد.
ازمتداوالترين خصوصيات برچسب مي توان به موارد زير اشاره كرد:

Alignment: مشخص مي كند كه عنوان برچسب به صورت چپ چين، وسط چين و يا راست چين قرار گيرد.

Autosize: هنگامي كه برابر با True باشد چنانچه عنوان استفاده شده براي برچسب از طول بر چسب بيشتر باشد طول برچسب را بزرگ مي سازد.

ForeColor: رنگ نوشته برچسب را تغيير مي دهد.

بقيه خصوصيات كه گفته نشد معمولا با خصوصيات دكمه فرمان يكي است.

TAHA
10-30-2009, 12:15 AM
خصوصيت كنترل 3


خصوصيت فرم

فرم ها داراي خصوصياتي هستند كه در هنگام ساخت يك برنامه كاربردي مي توانيد آنها را مقدار دهيد.در مجموع فرمها داراي خصوصيات بيشتري نسبت به ديگر كنترل ها هستند.دوستان عزيزي كه اين درسها را دنبال مي كنند لازم نيست كه تمام اين خصوصيات را حفظ كنند بلكه با تمرين زياد به مرور زمان با اين خصوصيات و نحوه كار آنها بيشتر آشنا خواهند شد.
خوب حالا به معرفي متداولترين خصوصيات فرم ها مي پردازم:
باز هم تاكيد مي كنم كه از معرفي خصوصيات تكراري پرهيز شده است مانند خصوصيت
BackColor
BorderStyle: شيوه اي را كه پنجره فرم بايد پديدار گردد را مشخص مي سازد.اين خصوصيت مشخص مي سازد كه كاربرقادر به تغيير اندازه فرم باشد يل خير؟

MaxButton: مشخص مي سازد كه دكمه به حداكثر رساندمن فرم روي پنجره نمايش يابد ياخير

MinButton: مشخص مي سازد كه دكمه به حداقل رساندن فرم روي فرم نمايش يابد يا خير

Movable: مشخص مي سازد كه آيا كابر قادر خواهد بود در حين اجراي برنامه فرم را حركت دهد يا خير؟

ScaleMode: مشخص مي سازد كه اندازه گيري هاي فرم بر حسب تويپ ، پيكسل ، سانتيمتر و ... صورت پذيرد.

ShowInTaskbar: مشخص مي سازد كه فرم روي نوار وظيفه ويندوز نمايش يابد يا خير

كادر هاي متني

كادر هاي متني ورودي كاربر را قبول مي كنند.اگر چه چندين كنترل ديگر نيز ورودي كاربر را قبول مي كنند اما كادر هاي متني احتمالا ساده ترين كنترل ها در بر پائي و پاسخگوئي هستند.به علاوه استفاده از يك كادر متني براي كاربران آسان است.شما همواره نيز مي توانيد مقدار پيش گزيده را در هنگام طراحي و يا در زمان اجرا به يك كادر متني اختصاص دهيد.

نكته مهم: همانطور كه قبلا نيز گفته شد خصوصيت Caption متداولترين خصوصيتي است كه متني را كه بر روي كنترلي مانند يك دكمه فرمان يا يك برچسب ،نمايش مي دهد.كنترل كادرهاي متني فاقد اين خصوصيت هستند در عوض خصوصيت Text متني را براي كنترل هاي كادر متني نگه مي دارد.

به پاره اي از خصوصيت كادر هاي متني توجه فرمائيد:

Locked: مشخص مي سازد كه آيا كاربر قادر خواهد بود متن درون كنترل را در حين اجرا تغيير دهد يا خير.بيشتر براي مواقعي استفاده مي شود كه از كنترل كادر متني براي داده خروجي غير قابل تغيير براي كاربر بخواهيد استفاده نمائيد.

MaxLength: ميزان حداكثر كاراكتر مورد استفاده توسط كاربر را مشخص مي سازد.

MultiLine: به كادر متني اجازه مي دهدتا چندي خط از متن را نگه دارد.اگر مي خواهيد متني را در كادر متني چند خطي وارد سازيد ،نوار هاي پيمايش را به آنها اضافه كنيد تا كاربر بتواند بر روي متن پيمايش كند.

PasswordChar: حتما در هنگام ورود به سايتي مانند سايت خودمان ويا لوگين ياهو مسنجر در كادر متني مربوط به وارد كردن پسورد به ستاره هائي برخورد كردهايد كه به جاي كاراكتر هاي ورودي شما نمايش داده مي شوند.در اين خصوصيت مي توانيد كاراكتر مورد استفاده را انتخاب نمائيد.

Text: محتواي متني درون كادر متني را نگه مي دارد.هنگامي كه در زمان اجرا متني را درون كادر متني تايپ مي كنيد اين خصوصيت تغيير مي كند.

نكته: هربار كه يك برنامه را اجرا مي كنيد حتي اگر در برنامه هريك از خصوصيات كنترل را تغيير دهيد اين خصوصيات مجددا به تنظيمات قبلي باز خواهند گشت.

TAHA
10-30-2009, 12:16 AM
بسيارخوب!
حالا ديگر وقت قرار دادن چند كنترل روي فرم و اختصاص پاره اي خصوصيات به آنهاست.
1- با انتخاب و اجرا برنامه ويژوال بيسيك و انتخاب يك پروژه جديد Standard EXE پروژه جديدي را اجرا كنيد.
2- خصوصيت Name فرم را به frmFirst و خصوصيت Caption آنرا به My First Application تغيير دهيد.
3- خاصيت Height برابر 5300 و Width برابر 6300 قرار دهيد.
4- يك بار كنترل برچسب را كليك كنيد و همانطور كه قبلا آموختيد كنترل برچسب ابزاري است در جعبه ابزار كه بر روي آن يك حرف A قرار دارد.وقتي كه كنترل برچسب را كليك مي كنيد ويژوال بيسيك نشان مي دهد كه آن كنترل تو رفته است.اشاره گر ماوس را به پنجره فرم منتقل سازيد و كنترل برچسب رادرقسمت بالاي پنجره فرم بكشيد.
5- خصوصيت Name آنرا به lblFirst تغيير دهيد.همچنين در خصوصيت Caption بنويسيد DVB2
6- مقدار خصوصيت Font برچسب را كليك كنيدتا سه نقطه نمايش يابد.سه نقطه را كليك كنيدتا كادر تبادلي Font براي برچسب نمايش يابد.اندازه Font را برابر 24 پوينت قرار دهيدو خصوصيت Bold آنرا مشخص سازيد.
اگر متن آنقدر بزرگ شده است كه در برچسب تمام آن پيدا نيست مي توانيد با انتخاب برچسب روي فرم و با استفاده از دستگيره لبه پنجره اندازه برچسب را كنترل نمائيد.همچنين مي توانيد خصوصيت Allignment را برابر Center قرار دهيد تا متن در وسط بر چسب جاي گيرد.
7- دكمه فرماني اضافه كنيد .براي اين كار در جعبه ابزار روي دكمه فرمان دو بار كليك كنيد تا در وسط فرم جاي گيرد.
8- خصوصيت Name آنرا به cmdExit تغيير دهيد ودر خصوصيت Caption آن بنويسيد E&xit
وقتي كه متن خصوصيت ‍Caption را تايپ مي كنيد دكمه فرمان را نگاه كنيد.عنوان دكمه فرمان با آنچه كه شما تايپ كردهايد ذره اي مغايرت دارد. x به صورت زير خط دار است.به خاطر بساريد كه اگر در خاصيت Caption دكمه اي قبل از هر حرفي علامت "&" را قرار دهيد آن حرف زير خط دار مي شود كه مي توانيد ازآن حرف براي كليد فوري آن كنترل استفاده كنيد.
بله درست است منظورم همان ShortcutKey است.شما با فشرده دكمه هاي Alt+X همان كار كليك و فشردن اين دكمه را انجام ميدهيد.(جالب بود نه؟)
خوب بايد شكل فرم شما چيزي شبيه شكل زير باشد:


http://pnu-club.com/imported/2009/10/1614.jpg




بسيار خوب حالا هنگام اجراست.به دو طريق مي توانيد برنامه را اجرا كنيد يا باستفاده از دكمه F5 و يا با استفاده از ابزار Start در نوار ابزار.
بعد از اجرا پنجره ساخته شده به نمايش در مي آيد خوب حالا روي دكمه فرمان كليك كنيد تا از برنامه خارج شويد.
درست است اتفاقي نمي افتد چون شما هنوز كدي ننوشته ايد.
بسيار خوب با ابزار End در نوار ابزار اجرا را متوقف كرده و روي دكمه فرمان دوبار كليك كنيد.
در پنجره باز شده كه به پنجره كد معروف است اين دو خط نوشته شده است:


Private Sub cmdExit_Click()

End Sub

بله به شما رويداد كليك دكمه را معرفي مي كند . شما هر كاري كه يراي كليك دكمه مي خواهيد انجام دهيد بايد در بين اين دو خط بنويسيد.
بين دوخط بنويسيد End.همانند كد زير:

کد:

Private Sub cmdExit_Click()
End
End Sub


حال مجددا برنامه را اجرا كنيد و دكمه فرمان را كليك نمائيد.برنامه خاتمه مي پذيرد و به اتمام ميرسد.
شما امروز اولين دستور ويژوال بيسيك را فرا گرفتيد و اولين برنامه تان را ساختيد.
به شما تبريك مي گويم.http://pnu-club.com/images/smilies/wink.gif

TAHA
10-30-2009, 12:17 AM
كد نويسي در ويژوال بيسيك 1


زمان آن است كه كمي مهارتهاي خود را بهبود بخشيد.همانطور كه مي دانيد برنامه هاي كاربردي شما بايدقادر به پردازش انواع مقادير داده اي باشند.شما به زودي به طور كامل با اين نوع داده ها آشنا خواهيد شد.
به خاطر داشته باشيد كه يك برنامه ويژوال بيسيك از قسمتهاي زير تشكيل شده است:
1- يك يا چند فرم
2- كنترل هاي روي فرم
3- كد نوشته شده در زبان برنامه نويسي
در درسهي گذشته آموختيد كه چگونه كنترل ها را به سليقه خودتان روي فرم قرار دهيد اما در برنامه هاي كاربردي تا وقتي كدي را براي به هم متصل ساختن كنترل ها و انجام محاسبات به آن نيفزوده باشيد،چندان سودمند نخواهد بود.

مفاهيم پايه اي داده ها

داده ها در سه مجموعه كلي دسته بندي مي شوند:رشته اي ، عددي و خاص.اگر بخواهيد كه با يك عدد كار كنيد،لازم است از يك عددي استفاده كنيد درون يكي از مجموعه نوع هاي داده اي ويژوال بيسيك بگنجانيد.
اگر بخواهيد با داده هاي متني كار كنيد لازم خواهد بود كه از يك رشته بهره گيريد.ديگر داده هاي خاص نيز نظير (True و False ) در يك شاخه قرار مي گيرند.

انواع داده هاي ويژوال بيسيك به شرح ذيل است:

Boolean: نوع داده اي كه تنها دو مقدار True و False را مي گيرد كه براي بررسي وضعيتهاي شرطي بسيار مفيد است.

Byte: مقدار عددي مثبت بدون نقطه اعشار كه ميتوانند از 0 تا 255 باشد.

Currency : داده اي كه مقادير پولي از 9223372036854775808 $- تا 9223372036854775807 $ را در خود نگه مي دارد.

نكته : وقتي كه مقادير Currency را وارد مي كنيد ، علامت $ را همراه آن وارد نسازيد.

Date : مقادير تاريخ وساعت را نگه ميدارد.تاريخ مي تواند از 1 ژانويه 100 تا 31 دسامبر 9999 تغيير كند.
احتمالا در سالهاي بعد از 9999 مردم بايد از چيزي غير از ويژوال بيسيك استفاده كنند.http://pnu-club.com/Yahoo_smilies/4.gif

Double : مقادير عددي كه مي تواند از 1.79769313486232ٍE+308- تا 1.797693134486232E+308 تغيير يابند.

Integer : مقادير عددي بدون نقطه اعشار كه از 32768- تا 32767 ادامه دارد.

Long : مقادير عددي با مقداري بيش ار Integer . مقادير داده اي Long از 2147483648- تا 2147483647 ميتواند تغيير كند.

Object : نوع داده اي خاص كه شي هائي نظير كنترل ها و فرمامن ها را نگه مي دارد.

Single : مقادير عددي بين 3.402823E+38- تا 3.402823E+38 را در خود نگه دارد.

String : داده اي متشكل از صفر تا 65400 كاراكتر از داده اي الفباي عددي.الفباي عددي بدين معني است كه داده ها هم مي نوانند الفبائي و هم عددي باشند.

Variant : داده هائي از هرنوع داده اي كه براي كنترل ها و ديگر مقاديري كه نوع داد ه ايشان ناشناخته است مورد استفاده قرار مي گيرد.

سعي كنيد خوب انواع داده ها را در VB به خاطر بسپاريد.شما تا نوشتن برنامه هاي كاربردي راه كمي پيش رو داريد.http://pnu-club.com/images/smilies/cool.gif

TAHA
10-30-2009, 12:17 AM
كد نويسي در ويژوال بيسيك 2



كد كجاست؟

سعي مي كنم شما را تا حد ممكن با با كد و رويه هاي رويدادي آشنا كنم.كد به صورت يك فايل پيمانه اي وجود دارد كه مي توانيد آن را در پنجره Project Explorer ببينيد.اگر كنترل هائي را بر روي يك فرم قرار دهيد ‏،آنها نمي توانند داراي نام يكساني باشند اما دو فرم ممكن است كنترل هائي داشته باشند كه اساميشان يكسان است.

نكته مهم: نام هر كنترل با نام فرم والد آن به كار گرفته مي شود.

هر فرم داراي كد مخصوص به خود است كه پيمانه فرم خوانده مي شود كه كنترل هاي روي آن فرم را مديريت مي كند وبه انها پاسخ مي گويد.
يك پروژه جديد باز كنيد و در پنجره Project Explorer آن دقت كنيد. در قسمت بالا پنجره ٣ آيكون كوچك قرار دارد كه با بردن ماوس روي آنها متوجه نام آنها خواهيد شد.از چپ به راست خواهيد داشت: View Code ‏، View Project و Toggle Folders
دكمه View Codeرا فشار دهيد تا وارد محيط كد نويسي شويد.(دكمه View Project جهت بازگشتن به فرم طراحي استفاده مي شود.)
به دنياي كد نويسي خوش آمديد.در قسمت بالاي اين صفحه دو سربرگ با نامهاي Object و Procedure خواهيد ديد.
اولي محل قرار گرفتن نام اشيائ استفاده شده در فرم و ديگري رويدادهاي مربوط به شي انتخاب شده.به عنوان مثال شما اگر يك دكمه فرمان به فرم اضافه كنيد علاوه بر نام فرم و قسمت عمومي(General) نام دكمه فرمان را نيز در سر برگ Object خواهيد ديد.
يك نظري هم به قسمت رويداد ها بيندازيد تا چشم شما با رويداد هاي مثلا فرم آشنا شود.

رويه هاي رويدادي

ويژوال بيسيك يافتن كد رويه هاي رويدادي براي هر شي را به راحتي فراهم مي سازد.روي سطح فرم دو بار كليك كنيد تا يكي از رويه هاي رويدادي آن را ببينيد.بله درست است رويه Load فرم را خواهيد ديد.(در مورد رويه هاي فرم به تفصيل صحبت خواهد شد.)
همانطور كه از نامش پيداست اين رويه در هنگام لود شدن فرم اتفاق مي افتد و به تبع ان شما هر كدي را در اين رويه بنويسيد هنگام Load شدن فرم انجام خواهد شد.
بيشتر رويه هاي رويدادي با حكم Private Sub آغاز و با End Sub خاتمه مي پذيرد.كد هاي شما درون اين دوخط جاي مي گيرند تا مجموع كدهاي مربوط به اين رويداد نوشته شده باشند.



__________________

TAHA
10-30-2009, 12:17 AM
كد نويسي در ويژوال بيسيك ٣


معرفي و منتسب ساختن متغير ها

متغير ثابت ،مقداري است كه تغيير نمي كند.از متغيرهاي ثابت در طول برنامه هاي خود زياد استفاده خواهيد كرد.به عنوان مثال اگر لازم باشد كه محاسبه ماهانه را براي كل سال انجام دهيد لازم است تا اعداد محاسبه شده در ماه را در عدد ١٢ ضرب كنيد .عدد ١٢ يك متغير ثابت است كه و بسته به متني كه در آن قرار دارد به صورت يك نوع داده اي از آنچه قبلا گفته شد نظير Byte و Integer و String و غيره به كار مي رود.
اما تمامي متغير ها ثابت نيستند .به عنوان مثال متغير هائي كه يك كاربر در يك كادر متني وارد مي كند متغير هاي ثابتي نيستند.شما براي اختصاص دادن يك متغير خاص به يك داده ورودي و يا پردازشي بايد ابتدا آن متغير را معرفي نمائيد.
براي معرفي متغير ها بايد از حكم Dim استفاده كنيد.

حكم Dim چيست؟

اين حكم متغير ها را براي برنامه تعريف مي كند.Dim به ويژوال بيسيك مي گويد كه برنامه در جائي از خود به اين متغير نياز دارد.در پست قبل انواع متغير هاي داده اي گفته شد.
فرض بفرمائيد از متغير FirstName كه از نوع String است مي خواهيد در برنامه استفاده كنيد بنابراين خواهيد نوشت:

Dim FirstName As String

اما اين قطعه كد بايد كجا نوشته شود؟
در دوقسمت مي توانيد اين كد را بنويسيد اول در قسمت بالاي صفحه كد (قسمت General) و ديگري در رويه رويدادي ( مانند Form_Load , Form_Click,Text_Change,...).
اگر در قسمت General نوشته شود اين متغير در تمام رويدادهاي همان فرم شناخته مي شود.ولي اگر تنها در يك رويداد نوشته شود به عنوان متغير محلي تلقي شده و تنها در همان رويداد شناخته مي شود.
با حكم مثال قبل مي توانيد هر متغير متني دلخواهي را به شرط آنكه طولش بيش از مقدار مجاز براي داده String نشود را در آن ذخيره كنيد نظير: "joe" , "125"," the book", " @#$" , ...
اگر خواستيد مقدار يك متغير متني را در يك طول مشخص محدود سازيد در انتهاي قطعه كد علامت * و طول داده متني را قرار دهيد .به عنوان مثال:

Dim FirstName As String * 20


نكته: هنگامي كه متغير شما از نوع Variant بود مي توانيد از نوشتن خود Variant صرف نظر كنيد.مثلا :

Dim varValue

همچنين مي توانيد متغير هائي كه از يك نوع هستند رادر يك خط قرار دهيد:

Dim D,E As Long






قراردادن داده ها در متغير ها

تا به حال آموخته ايد كه چگونه متغير ها را در ويژوال بيسيك تعريف كنيد اما بايد بدانيد كه چگونه بايد داده ها را در متغير ها ذخيره كنيد. براي اين كار بايد از حكم انتساب استفاده كنيد.در اينجا قالب حكم انتساب آمده است:

VarName=Expression

VarName نام متغيري است كه با استفاده از حكم Dim تعريف كرده ايد و Expression مي تواند يك متغير ثابت ، متغيري ديگر و يا يك عبارت رياضي باشد.
فرض كنيد براي يك فردي به نام Ali با 21 سال سن مي خواهيد اطلاعاتش را در برنامه وار كنيد.ابتدا معرف متغيرهاي مربوط به نام و سن و سپس انتساب مقدار به اين متغيرها.
لطفا ملاحظه بفرمائيد:

Dim strName As String
Dim intAge As Integer


"strName = "Ali
intAge=18

نكته مهم: حتما داده هاي از نوع String بايد دربين دو كوتيشن (" ") قرار گيرند.

نكته:هيچگونه فضاي خالي بين نام متغير ها نبايد وجود داشته باشد. به عنوان مثال ويژوال بيسيك متغير int Age را نخواهد پذيرفت.

قدري تفريح !!!

شما به راحتي مي توانيد در حين اجراي برنامه مقدار هاي جديدي به خصوصيت Text كادر هاي متني و يا Caption برچسبها و دكمه هاي فرمان و ... نسبت دهيد.
يك برچسب به نام lblTestو يك دكمه فرمان به نام cmdTest در روي فرم قرار دهي(حتما به خاطر مي آوريد كه چگونه بايد نام كنترل ها را وارد سازيد )سپس روي دكمه فرمان دو بار كليك نمائيد تا رويداد Click آن نمايان گردد.
در اولين خط اين رويداد بنويسيد :

"lblTest.Caption="dvb2


اگر دقت كرده باشيد به محض اينكه پس از نام متغير نقطه مي گذاريد ليستي از خصوصيات برچسب نمايان مي گردد و به محض تايپ حرف C در كامبوي باز شده روي اولين خصوصيتي كه با حرف C آغاز مي شود قرار مي گيرد.
شما به راحتي مي توانيد به اكثر اين خصوصيات نظير BackColor , ForeColor , Height, ... مقادير جديدي منسوب سازيد.
در خط بعدي نيز بنويسيد:

cmdTest.Left=1000


حال برنامه را اجرا كنيد و دكمه فرمان را كليك كنيد.خواهيد ديد كه نام برچسب به dvb2 تغيير يافته و فاصله دكمه فرمان از سمت چپ نيز به اندازه مقدار وارد شده تغيير يافته است.
اميدوارم دومين برنامه اي كه نوشتيد شور و اشتياق يادگيري اين زبان كاربردي و زيبا را در شما بيشتر كند.
حالا حالا ها با هم كار داريم ....

TAHA
10-30-2009, 12:18 AM
عبارات و عملگرهاي رياضي


لازم است كه عملگرهاي رياضي ويژوال بيسيك را فرا گيريد تا بتوانيد در هنگامي كه احكام انتسابي مي نويسيد كه حاوي عبارات هستند،نتايج عبارات را محاسبه نمائيد و به متغير ها منتسب سازيد.عملگرهاي رياضي بسيار به زبان محاوره اي نزديكند و با اولين نگاه متوجه استفاده صحيح از انها خواهيد شد.
علامت "+" براي عمل جمع، "-" براي تفريق،"*" براي عمل ضرب ، "/" براي عمل تقسيم و "^" براي عمل توان استفاده مي شوند.
همچنين علامتهاي "&","+" براي اتصاي دو رشته متني مورد استفاده قرار مي گيرند.
طريقه استفاده اين علامتها بسيار ساده است و همچنين نحوه منتسب ساختن نتيجه به يك متغير.به مثالهائي در اين زمينه توجه فرمائيد.

a=2
b=3
ingValue=a^b

در مثال بالا عدد ٨ در متغير ingValue قرار مي گيرد.

strFirst="Ali"
strSecond="Amiri"
strResult=strfirst & " " & strSecond


در مثال بالا متن Ali Amiri (با فاصله خالي بين دو اسم ) در متغير strResult قرار مي گيرد.

نكته : اولويتهاي عملگرها در ويژوال بيسيك همانند ديگر زبانهاي برنامه نويسي است.

خوب بهتر است با يك مثال ساده مطلب را ادامه دهيم.
ويژوال بيسيك را اجرا نموده و روي فرم، ٣ عدد كادر متني و 2 دكمه فرمان و ٣ برچسب قرار دهيد.خاصيت هاي Name و Text كادر هاي متني را به شكل زير تغيير دهيد:
كادر اول تا سوم:

Name:txtValue1
Name:txtValue2
Name:txtResult


خاصيت Text هر سه كادر را پاك كنيد تا متني روي كادر شما نوشته نشده باشد.براي اين منظور روي خاصيت Text دو بار كليك كنيد و دكمهDelete را روي كيبورد فشار دهيد.
همچنين خاصيت Name وCaption دكمه هاي فرمان را به شكل زير تغيير دهيد:
دكمه اول:

Name:cmdSum
"+":Caption
دكمه دوم:

Name:cmdString
Caption:joint string

در پايان خاصيت Name و Caption برچسبها را نيز به شكل زير تغيير دهيد:
برچسب اول:

Name=lblFirst
Caption:First Value

برچسب دوم:

Name:lblSecond
Caption:Second Value

برچسب سوم:

Name:lblResult
Caption:Result






دقت نمائيد كه مي توانيد ابعاد دكمه ها و كادر هاي متني و برچسبها و محل قرار گرفتن آنهارا به سليقه خود تغيير دهيد.
پس از انجام تغييرات فرم شما بايد چيزي شبيه شكل زير باشد:




http://pnu-club.com/imported/mising.jpg





حال روي دكمه اول دوبار كليك كنيد و در رويه كليك آن كد زير را قرار دهيد:



Private Sub cmdSum_Click()
txtResult.Text = Val(txtValue1.Text) + Val(txtValue2.Text)
End Sub

در هنگام اجرا شدن با فشردن اين دكمه اگر مقاديري عددي در كادر هاي متني اول و دوم قرار دهيد نتيجه حاصل در كادر متني سوم نمايش داده خواهد شد.
تابع جديدي در دستورات بالا مشاهده مي كنيد به نام Val كه به دليل آنكه برنامه در هنگام اجرا ورودي هاي كادر هاي متني را به صورت String مي پذيرد لذا با استفاده از اين دستور به مقادير عددي برگردانده مي شود.به عنوان مثال اگر در كادر متني اول عدد ٣ و در كادر دوم عدد ٤ تايپ شود اگر از دستور Val استفاده نشود خروجي ٣٤ را خواهيم داشت يعني اتصال دو رشته كه قبلا توضيح داده شد ولي اگر تابع Val استفاده شود در خروجي عدد ٧ را خواهيم داشت.
به همين ترتيب در رويه كليك دكمه فرمان دومي كد زير را وارد كنيد:



Private Sub cmdString_Click()
txtResult.Text = txtValue1.Text & " " & txtValue2.Text
End Sub

با اجراي برنامه و وارد كردن متنهاي مختلف در دو كادر متن بالائي و فشردن دكمه joint String دو متن در كنار يكديگر با يك فاصله خالي از هم در كادر متن سومي نمايش داده خواهد شد.
حال با داده هاي مختلف با اين برنامه كار كنيد تا به مفهوم استفاده از دكمه ها و وجه تمايز داده هاي متني و عددي بيشتر پي ببريد.

TAHA
10-30-2009, 12:19 AM
كادرهاي پيام و ورودي


ويژوال بيسيك چندين تابع توكار دارد كه وظايف بسياري از جمله عمليات مرسوم رياضي و رشته اي را براي ما انجام ميدهند.
بعضي از اين توابع نيز كارهاي ورودي و خروجي راانجام ميدهند.

نكته : تابع ، روالي است كه يك يا چند متغير به عنوان آرگومان مي پذيرد و يك نتيجه را بر مي گرداند.همانند تابع Abs به معني قدر مطلق.

مروري بر MsgBox و InputBox

وقتي كه لازم باشد تا از كاربر سوالاتي پرسيده شود يا پيامهاي خطائي و اطلاعاتي به كاربر دهيد مجبوريد از كادرهاي پيام و يا ورودي استفاده كنيد.حتما زماني كه با خط دايال آپ خود قصد اتصال به اينترنت را داشته ايد خطاهاي مرسوم مودم را اعم از اشغال خط و ... ديده ايد.
تمامي اين پيامها در كادرهاي پيام به شما داده مي شوند.
به عنوان مثال اگر كاربر داده اي را به اشتباه وارد كند شما با بررسي اطلاعات وارد شده مي توانيد صحت و سقم اطلاعات وارد شده را توسط كادرهاي پيام به كاربر اطلاع دهيد.
همچنين با كنترل كادرهاي متني قبلا آشنا شديد و دانستسد كه براي دريافت اطلاعات بسيار مناسب هستند اما همواره اين كادر ها به كار نمي آيند.كادرهاي ورودي براي پرسيدن سوالاتي كه تنها تحت شرايط خاص بروز مي كنند بسيار مناسب هستند.
كادر هاي ورودي هميشه فضائي را براي پاسخگوئي كاربر به سوالات فراهم مي آورند.

بررسي ( )MsgBox

هميشه تابع MsgBox را به يك متغير صحيح منسوب سازيد .متغير مقدار بازگشتي را نگه خواهد داشت و آن مقدار مشخص كننده دكمه اي است كه كاربر فشرده استتا بر مبناي آن تصميم گيري شود.
در قسمت پائيين كادر متني مي تواند دكمه هاي مختلفي اعم از OK ، Yes,No و... بسته به انتخاب برنامه نويس وجود داشته باشد.
در اينجا قالب اين تابع را ميبينيد:

([[Message=MsgBox (strMsg,[,[intType],strTitle

strMsg يك رشته است ، يك متغير يا يك ثابت رشته اي به عنوان پيام كه در كادر متني نمايش مي يابد.
intType : مقدار عددي يا عبارتي است كه گزينه هائي كه در كادر پيام مي خواهيد را نمايش مي دهند.
اهم اين عبارات و اعداد عبارتند از:
vbOkonly يا مقدار 0 كه دكمه Ok را نمايش ميدهد.
vbOkCancel يا مقدار 1 كه دكمه هاي Ok , ‍Cancel را نمايش مي دهد.
vbAbortRetryIgnore يا مقدار 2 كه دكمه هاي Abort و Retry , Ignore را نمايش مي دهد.
vbYesNoCancel يا مقدار 3 كه دكمه هاي Yes , No, Cancel را نمايش مي دهد.
و...
همچنين شما مي توانيد از شمايل متنوعي با توجه به پيام داده شده انتخاب نمائيد.به عنوان مثال اگر پيامتان يك پيام خطائي است از vbCritical واگر سوالي است از vbQuestion و اگر اطلاع رساني است از vbInformation استفاده كنيد.

نكته مهم : اگر خواستيد از دو يا جند انواع دكمه و شمايل استفاده كنيد بين انها علامت "+" را قرار دهيد.

و در نهايت strTitle رشتهاي اختياري است كه نشان دهنده متن درون نوار عنوان كادر متني است.
به عنوان مثال اگر يك كد براي اجراي يك كادر پيام به شكل زير بنويسيد بايد هنگام اجرا شكلي همانند شكل زير داشته باشد.
Message = MsgBox("Are you reday for report?", vbQuestion + vbYesNo, "Report Request")


http://pnu-club.com/imported/mising.jpg


اما مقادير بازگشتي MsgBox به شرح ذيل است:
1 : كاربر دكمه Ok را فشرده است.
2 : دكمه Cancel
3 : دكمه Abort
4 : دكمه Retry
5 : دكمه Ignore
6 : دكمه Yes
7 : دكمه No

بررسي InputBox

اين تابع بسيار ساده است زيرا خيلي شبيه تابع MsgBox عمل مي كند.
قالب اين تابع به شكل زير است:

([[[strVariable=InputBox(strPrompt[,[strTitle][,strDefault][,intXpos,intYpos


strPrompt دقيقا همان پيامي است كه چاپ مي شود ، strTitle عنوان درون نوار عنوان ، strDefault مقدار رشتهاي پيش گزيده درون كادر ورودي و intXpos,intYpos مختصات قرار گرفتن كادر ورودي روي صفحه مانيتور شماست.
نكته: عباراتي كه در قالب پيام به صورت [ ] مي بينيد optional هستند و استفاده از انها دلبخواهي است همانند همين مختصات قرار گرفتن كادر ورودي.

كد زير اگر اجرا شود كادر ورودي همانند شكل زير خواهيد داشت:


("Message = InputBox("what is your name?", "Name request", "Ali


http://pnu-club.com/imported/2009/10/1615.jpg

TAHA
10-30-2009, 12:19 AM
عملگرهاي مقايسه اي و احكام شرطي 1


عملگرهاي مقايسه اي عملگرهائي هستند كه مقادير داده اي را با يكديگر مورد مقايسه قرار مي دهند و نتايج درست يا غلط را باز مي گردانند.

در ويژوال بيسيك 6 عملگر مقايسه اي داريم به شرح زير:
< : عملگر بزرگتر
> : عملگر كوچكتر
= : عملگر برابر يا تساوي
=< : عملگر بزرگتر مساوي
=> : عملگر كوچكتر مساوي
<> : عملگر نامساوي

عملگر هاي مقايسه اي مي توانند متغير ها ، لفظ ها ، مقادير كنترل ها و .... را مقايسه نمايند.

نكته : هنگامي كه رشته ها را با هم مقايسه مي كنيد ويژوال بيسيك از جدول اسكي براي تعيين نحوه مقايسه كاراكتر ها استفاده مي كند.

حكم IF :

مهمترين حكم شرطي در يك برنامه حكم IF است . با منطقي كه اين حكم به وجود مي آورد برنامه كاربردي مي تواند شروع به تجزيه و تحليل داده هاي شامل عملگرهاي مقايسه اي و انجام تصميم گيري ها بر اساس آن تجزيه تحليل ها كند.

حكم IF شامل دو قسمت مهم بررسي شرط با IF و بدنه حكم IF است.
قالب حكم IF به شكل زير است:


IF comparision Then
One or more VB statments
End IF
End IF به ويژوال بيسيك مي گويد كه بدنه حكم IF در كجا به پايان مي رسد.فرض كنيد كاربري مقدار فروش را در كنترل كادر متني به نام txtSales وارد مي كند. IF زير مقدار پاداش بر اساس فروش را محاسبه مي كند


IF (txtSales.Text > 5000) Then
sngBonus=txtsales.Text * 0.12
End IF


نكته : در بدنه حكم IF مي تواند بيش از يك خط دستور يا كد قرار بگيرد.

نكته مهم : IF تك خطي نياز به End IF ندارد به شرطي كه حكم IF بعد از Then نوشته شود.

شاخه Else حكم IF

در حالي كه حكم IF كد را در صورت درست بودن مقايسه اجرا مي كند Else در صورت درست نبودن حكم IF حكم هاي مربوط به خود را اجرا مي كند.به قطعه كد زير توجه كنيد:

روي فرم دو عددكنترل كادر متني به اضافه يك دكمه فرمان قرار دهيد و كد زير را در رويه كليك دكمه فرمان بنويسيد.

کد:


Private Sub Command1_Click()
If Val(Text1.Text) >= Val(Text2.Text) Then
Text1.BackColor = vbBlue
Text2.BackColor = vbWhite
Else
Text1.BackColor = vbWhite
Text2.BackColor = vbBlue
End If
End Sub


هنگام فشردن دكمه اگر مقدار عددي وارد شده در كنترب كادر متني يك از دو بيشتر بود رنگ زمينه اين كنترل به آبي تغيير پيدا خواهد كرد و رنگ زمينه كنترل كادر متني دو به سفيد ولي اگر مقدار عددي كنترل كادر متني دو بزرگتر از يك بود بالعكس.

ادامه دارد .....

TAHA
10-30-2009, 12:20 AM
عملگرهاي مقايسه اي و احكام شرطي 2


اميدوارم تا اين قسمت آموزشها مورد توجه قرار گرفته باشد.در ادامه بحث به مقايسات مركب با عملگرهاي منطقي و انتخابهاي شرطي select case خواهم پرداخت.

مقايسات مركب با عملگرهاي منطقي

ويژوال بيسيك داراي سه عملگر ديگر نيز كه به عملگرهاي منطقي معروفند ميباشد
And , Or , Not اين عملگرها هستند.عملگرهاي منطقي امكان ادغام دو يا چند آزمايش مقايسه اي را به صورت يك مقايسه مركب فراهم مي آورند.
عملگر And باعث مي شود كه دو عبارت شرطي با هم تركيب شوند ونتيجه درست اين عبارت مركب تنها در صورتي محق خواهد شد كه هر دو عبارت شرطي درست باشند.
عملگر Or نيز باعث تركيب دو عبارت شرطي مي شود ولي با اين تفاوت كه هرگاه تنها يك عبارت از ظر منطقي ارزش درست داشته باشد كل عبارت تركيبي درست خواهد بود.
و عملگر Not هم آزمايش مقايسه اي را معكوس مي سازد.
به مثالهاي زير توجه كنيد.



If (sngsals > 5000) And (intvalue > 10000) Then intsum = 50End If
در مثال بالا زماني در متغير intsum مقدار 50 قرار خواهد گرفت كه هم sngsales بزرگتر از 5000 باشد و هم intvalue بزرگتر از 10000


If Not (sngsals > 5000) Then
intsum = 50
End If


در مثال بالا هم زماني در intsum مقدار 50 قرار خواهد گرفت كه sngsales از 5000 بزرگتر نباشد.

چندين انتخاب با Select Case

حكم IF براي مقايسه داده اي در حالتي كه يك يا دو آزمايش مقايسه اي بايد صورت پذيرد بسيار مناسب است وليكن وقتي كه بايد آزمايشهائي را با بيش از دو شرط انجام دهيد نگهداري IF بسيار دشوار مي گردد.عملگرهاي منطقي نيز تنها در نوع هاي خاصي از شروط مي توانند مفيد باشند.
در اوقات ديگر بايد چندين حكم IF..Else در درون يكديگر قرار دهيد.
سريعترين راه ياد گيري Select Case ديدن يك مثال است.



Select Case intAge
Case Is < 6: MsgBox "Kindergarten"
Case 6: MsgBox "1st Grade"
Case 7 To 11: MsgBox "2st Grade"
Case Else: MsgBox "Advanced"
End Select
در همين مثال فوق 4 قالب مختلف Select Case آمده است.
در خط اول نوع متغير كه intAge است به حكم Select Case معرفي شده است كه بر اساس مقدار آن تصميم گيري شود.
در خط دوم اگر سن مورد نظر كمتر از 6 باشد عبارت "Kindergarten" نمايش مي يابد.
در خط دوم اگر مقدار صرفا 6 سال باشد عبارت "1st Grade" نمايش مي يابد.
در خط سوم به ازاي سن بين 7 تا 11 سال عبارت "2st Grade" نمايش مي يابد.
در خط چهارم هم اگر مقدار intAge هيچكدام از اين مقادير نباشد عبارت "Advanced" نمايش داده خواهد شد.
و در نهايت در خط پنجم با دستور End Select قالب حكم به پايان مي رسد. توجه داشته باشيد كه بايد دستور پايان دادن به قالب Select Case حتما در پايان بدنه حكم نوشته شود.

TAHA
10-30-2009, 12:21 AM
حلقه ها در ويژوال بيسيك 1


تا كنون با منطق ترتيبي و تصميم گيري آشنا شده ايد . در ادامه آموزش مقدماتي ويژوال بيسيك 6 به تحليل و استفاده از حلقه ها در ويژوال بيسيك مي پردازيم.حلقه ها نقش مهمي در برنامه ها ايفا مي كنند زيرا در بيشتر اوقات لازم خواهد بود كه بخشهائي از از يك برنامه را براي پردازش چندين مقدار داده اي تكرار كنيد.به عنوان مثال ممكن است لازم باشد كه هزينه اي را براي تمامي مشتريان خود محاسبه كنيد.يك حلقه مي تواند مشخصات هر مشتري را بخواند و هزينه مربوط به او را محاسبه كند.

حلقه هاي Do While

حلقه Do While در ويژوال بيسيك به طرق مختلف مورد استفاده قرار مي گيرد.اين دستور همانند دستور IF با عباران مقايسه اي كه در درسهاي قبل فرا گرفتيد كار مي كند.يك حلقه هميشه شامل چندين و يا يك خط حكم است كه داراي خطوط و شروع و پايان مشخصي خواهد بود.قالب حكم Do While همانند زير است:



Do While (comparison test)
Block of one or more Visual Basic statments
Loop

مادامي كه comparison test درست است بلوك كد به چرخيدن ادامه مي دهد.براي خروج از حلقه حتما بايد comparison test غلط شود والا برنامه گرفتار حلقه نامتناهي يعني حلقه اي كه هيچ گاه به پايان نمي رسد خواهد شد.

نكته: براي خروج از حلقه نامتناهي از كليد هاي تركيبي Ctrl+Break استفاده كنيد.

در مثال زير تا زماني كه مقدار i به كمتر از 5 نرسد برنامه از حلقه خارج نمي شود:


کد:

Private Sub Form_Load()
i = 10
Do While i > 5
i = i - 1
MsgBox i
Loop
End Sub


دوستان عزيزم سعي كرده ام تا حد امكان مالب را بسيار ساده و با مثالهائي ساده تر تشريح كنم اميد است در اين موارد اگر سوالي برايتان پيش آمد در تاپيك مهم : طرح سوالات و مشکلات در مورد زبان های برنامه نویسی (http://www.asrejavan.com/showthread.php?t=39694) مطرح فرمائيد.

حلقه Do Until

برعكس حلقه Do While كه تا زماني كه نتيجه شرط درست باشد در حلقه مي ماند حلقه Do Until تا زماني آزمايش مقايسه اي غلط باشد در حلق مي ماند.
قالب حكم Do Until مانند زير است:



Do Until (comparison test)
Block of one or more Visual Basic statments
Loop


به اين مثال توجه كنيد:

کد:


Private Sub Form_Load()
i = 10
Do Until i < 5
MsgBox i
i = i - 1
Loop
End Sub


در اين مثال تا زماني كه مقدار i كمتر از 5 نشود برنامه از حلقه خارج نخواهد شد.

كدام حلقه بهترين است؟

از حلقه هائي استفاده كنيد كه بهترين و در جايگاه خود مناسبترين باشد.در واقع هيچ مزيت فني بين آنها وجود ندارد و تنها بسته به زمان استفاده هر كدام ممكن است در اولويت قرار بگيرند.

TAHA
10-30-2009, 12:22 AM
حلقه ها در ويژوال بيسيك 2


تا اينجاي كار با پاره اي از حلقه ها خصوصا آنهائي كه با Do در ارتباط بودند آشنا شديد .
حال به باقي حلقه هاي مرتبط به Do و حلقه هاي ديگر مي پردازيم.

ديگر حلقه هاي Do

دو جور ديگر از اين نوع حلقه ها وجود دارند كه درست مانند دو حلقه قبلي كار مي كنند.
Do...Loop While و Do Loop Until بسيار شبيه به همتاهاي خود هستند كه در قبل ديديد.اما اين قالبهاي جديد ،آزمايشهاي مقايسه اي خود را به جاي ابتداي حلقه در پائين حلقه انجام ميدهند.
اگر حلقه با يك حكم Do آغاز گردد،يا با Loop While و يا با Loop Until خاتمه مي يابد.
قالب Do....Loop While را مشاهده مي فرمائيد.



Do
Block of one or more Visual Basic statements

(Loop while (comparison test

در اين حالت Do تنها به نظر مي رسد ولي اين طور نيست مقصود از Do شروع حلقه اي است كه در انتها به حكم آزمايشي Loop While مي رسد.در اين حالت و با اين نوع بدنه حلقه ، بدنه حلقه حداقل يكبار اجرا مي گردد.مادامي كه comparison test درست باقي بماند بدنه حلقه بيش از يكبار اجرا مي گردد.
حكم Do...Loop Until دقيقا مشابه بالائي است ولي در صورت غلط بودن نتيجه آزمايش حلقه بيش از يكبار اجرا مي گردد.

حلقه For

حلقه For نيز براي ايجاد گردش مورد استفاده قرار مي گيرد.(از نظر شخص من بسيار كاربردي تر از حلقه هاي منتسب به Do است).يك حلقه مناسب كه كمي مشكل تر از حلقه Do است ولي هنگامي كه به آن تسلط يافتيد در پياده سازي آن مشكل كمي خواهيد داشت.
يك حلقه For هميشه با حكم For آغاز مي گردد و با حكم Next خاتمه مي يابد.قالب حلقه For به شكل زير است:



For Countvar= Startval To Endval [step Incrementval]
Block of one or more Visual Basic statements
Next


مثالي ساده مي تواند در نشان دادن نحوه كار حلقه For كمك نمايد.
در اين مثال مجموع اعداد 1 تا 10 محاسبه مي گردد.


کد:

Private Sub Form_Load()
intsum = 0
For intNumber = 1 To 10
intsum = intsum + intNumber
Next
MsgBox intsum
End Sub


intNumber در اين مثال در واقع CounterVar در قالب حلقه است.StartVal مي تواند يك عدد يك عبارت و يا يك متغير باشد.10 به جاي آن نشسته است.EndVal هم مي تواند يك عدد يا يك عبارت باشد .در اينجا خبري از Step نيست .در قالب حكم For استفاده از Step اختياري است كه اگر مقدار آنرا مشخص نكنيد ويژوال بيسيك مقدار 1 را براي آن برمي گزيند.بنابراين هر دو حكم For زير كار يكساني انجام مي دهند.

For intNumber= 1 To 10
For intNumber=1 To 10 Step 1







مجددا به مثال بر مي گرديم.در ابتداي برنامه مقدار intsum برابر 0 قرار مي گيرد تا كاملا جمع مقادير مقدار اوليه اي نداشته باشد.حلقه با حكم For آغاز مي گردد و در ابتدا مقدار IntNumber برابر 1 قرار مي گيردو اين مقدار در بدنه حلقه با مقدار intsum كه صفر است جمع مي شود و با رسيدن به حكم Next چون هنوز شرط حلقه به پايان نرسيده است (حلقه بايد به مقدار intNumber تا 10 يكي يكي اضافه كند).بنابراين دوباره به ابتداي حلقه بر مي گردد و اين بار مقدار intnumber را برابر 2 قرار مي دهد و اين مقدار را با intsum كه الان 1 است جمع مي كند و عدد 3 را مجددا در intsum قرار مي دهد.حلقه تا زماني كه مقدار intNumber به 10 برسد به همين روال ادامه مي دهد و پس از رسيدن به 10 و جمع بست مقدار نهائي و قرار دادن ان در intsum ازحلقه خارج گشته و به وسيله يك دستور پياميMsgBox مقدار نهائي intsum را به كاربر نمايش ميدهد.

شايد اين سوال پيش بيايد كه به راحتي با يك خط دستور به شكل زير مي توان به جواب رسيد و نيازي به اين همه كد نويسي و استفاده از حلقه نيست:

intsum=1+2+3+4+5+6+7+8+9+10

اما اگر تعداد اعداي كه خواستيم مجموع آنها را حساب كنيم 1000 بود به چه شكل مي توانستيم تمام اعداد را بنويسيم پس مي بينيم كه استفاده از حلقه For كار را آسان مي كند.

اگر براي Step مقدار منفي در نظر بگيريد حلقه زير پنج بار صداي بوق بلند گوي كامپيوتر شما را در ميآورد:


کد:

For intCtr = 5 To 1 Step -1
Beep
Next

نكته: دستور Beep سبب بوق زدن بلند گوي كامپيوتر مي شود.

نكته مهم : شما به راحتي مي توانيد با دستور Exit For از حلقه For خارج شويد.

در اين رابطه به كد زير دقت كنيد:

کد:

For i = 1 To 10
If i < 5 Then
Exit For
End If
Next

در اين مثال به محض اينكه مقدار i از 5 كوچكتر شود از حلقه خارج مي شود.
به ترتيب استفاده از حلقه For، If ،End IF و Next دقت كنيد.

TAHA
10-30-2009, 12:22 AM
رويدادها در ويژوال بيسيک 1


براي هر عملي که ميخواهيم کاربر در برنامه ما انجام دهد مي بايست در هر رويداد کد خاصي را بنويسيم تا نسبت به رفتار خاصي پاسخگو باشيم اين رويدادها تعيين ميکنند که برنامه ما نسبت به چه اعمالي حساس باشد کليک کردن يا فشردن دکمه اي خاص.

عمل کليک : در مثالهاي قبلي وقتي روي دكمه کليک ميکرديم عملي انجام ميشد .در واقع كدي خاص را به روال كليك دكمه اختصاص مي داديم و انجام عملي خاص را انتظار داشتيم.
حال مي خواهم به بعضي ديگر ازخصوصيات و رويدادهاي كنترلها نظير دكمه ها و برچسب ها و ...بپردازيم.

رويداد MouseMove:
اين رويداد زماني حادث مي شود كه ماوس شما روي كنترل حركت كند.به عنوان مثال يك دكمه روي فرم قرار دهيد و كد زير را در روال MouseMove بنويسيد:


کد:

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Command1.Caption = "Mouse Move !"
End Sub

رويدادهاي MouseUp, MouseDown:
هنگامي كه روي كنترلي كليك مي كنيم فشردن ماوس رويداد MouseDown و رها كردن كليك ماوس رويداد MouseUp را در پي دارد.بنابراين دقت كنيد كه چهاررويداد متفاوت تنها مي توان به ماوس در مواجهه با كنترل ها نسبت داد.
عمل click
عمل MoouseMove
عمل MouseDown
و عمل MouseUp
به رويداد هاي فوق مي توان dblclick را نيز كه مختص بعضي از كنترلها كنترل برچسب است را نيز اضافه كرد درواقع رويدادي است كه در پي عمل دبل كليك روي كنترل اتفاق مي افتد.
به مثال زير توجه كنيد تا با رويدادهاي ماوس بيشتر آشنا شويد:
يك برچسب روي فرم قرار دهيد و كدهاي زير را به رويدادهاي مورد نظر نسبت دهيد:

کد:



Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = &H80000007
Label1.FontBold = False
End Sub


Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = vbRed
Label1.FontBold = True

End Sub

Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = vbBlue
Label1.FontBold = True
End Sub




همانطور كه ملاحظه مي فرمائيد اين رويداد ها فقط مختص كنترلها نيستند بلكه شامل رويدادهاي مربوط به فرم هم مي شوند.
با اجراي اين برنامه به محض كليك روي برچسب رنگ فونت برچسب قرمز شده و فونت آن نيز bold مي شود و با رها كردن آن رنگ فونت آبي مي شود و با حركت روي فرم به حالت عادي برمي گردد.

TAHA
10-30-2009, 12:23 AM
رويدادها در ويژوال بيسيك 2


در مبحث گذشته با رويدادهاي ماوس تا حدودي آشنا شديد.امروز تصميم دارم به تعدادي از رويدادهاي فرم بپردازم.
بگذاريد ببينيم هنگامي كه يك برنامه را اجرا مي كنيد چه اتفاقاتي ميافتد.كدهاي زير را در روالهاي مختلف فرم همانند من بنويسيد:

کد:


Private Sub Form_Activate()
MsgBox "this is Form_Activate"
End Sub

Private Sub Form_Initialize()
MsgBox "this is Form_Initialize"
End Sub

Private Sub Form_Load()
MsgBox "this is Form_load"
End Sub

Private Sub Form_Paint()
MsgBox "this is Form_Paint"
End Sub

Private Sub Form_Resize()
MsgBox "this is Form_Resize"
End Sub

Private Sub Form_Terminate()
MsgBox "this is Form_Terminate"
End Sub

Private Sub Form_Unload(Cancel As Integer)
MsgBox "this is Form_Unload"
End Sub


خوب اگر برنامه را اجرا كنيد اولين پيغامي كه مشاهده مي كنيد چيست؟
بله Form_Initialize و سپس هم Form_load
اگر دقت كرده باشيد تا اينجاي كار فرمي ظاهر نشده است .يعني اين دو رويداد ابتدائي ترين رويدادي هستند كه در هنگام اجراي يك برنامه ويژوال بيسيك اتفاق مي افتند.بنابراين شما مي توانيد داده هاي اوليه مقاديري كه در برنامه استفاده مي كنيد اعم از رنگ فرم ، كپشن فرم ، بار گذاري تايمر (بعدا راجع به تايمر بحث مي كنم) ، دادن مقادير ثابت و ...از اين دو رويداد استفاده كنيد.
بعد از اين دو رويداد خواهيد ديد كه به ترتيب رويدادهاي Form_Resize و Form_Activate (تقريبا هم زمان) و Form_Paint اتفاق مي افتند.
در حالتهاي فوق خواهيد ديد كه فرم به نمايش در آمده است.
حال سعي كنيد با زدن دكمه بستن فرم برنامه را به پايان برسانيد.
بله درست است ابتدا رويداد Form_Unload و سپس Form_Terminate اتفاق مي افتد.

اين ديگر تشخيص و تبحر برنامه نويس است كه بسته به انتظاري كه از برنامه و ايده اي كه دارد بداند كه كدهاي مورد نظر را در چه رويدادي بايد بنويسد.

TAHA
10-30-2009, 12:24 AM
آرايه هاي داده ها


تاكنون با مفهوم متغير ها و خصوصيات مختلف آنها و فرمتهاي خاصشان آشنا شديد.شما آموختيد كه چگونه از متغيرها درون برنامه هاي خود استفاده كنيد و بسته به نوع محاسبات و شيوه ذخيره سازي و ارتباط با كاربر از انواع متغيرها استفاده كنيد.
اما اگر بخواهيد با گروهي از متغيرها كار كنيد مجبور هستيد هر متغير را جداگانه نام ببريد.آرايه ها به شما كمك مي كنند كه تنها تحت يك نام متغيرهاي مختلفي را ذخيره كنيد.
برخلاف آرايه ها متغير هاي غير آرايه اي داراي اسامي مجزائي نظير آنچه قبلا آموختيد هستند اما متغير هاي آرايه اي همگي داراي اسم يكساني با اندكي تغيير مي باشند.درواقع آرايه هاي داراي نام يكسان ولي انديس متفاوت هستند.انديس مانند يك مقدار شاخص عمل مي نمايد.به عنوان مثال اولين مقدار درون يك آرايه مي تواند به صورت (FirstArray(0 مشخص گردد.(انديس ها از صفر شروع مي شوند، مگر اينكه با استفاده از حكم option Base 1 در پيمانه General انديس آرايه ها را از يك آغاز نمائيد.شكل زير نشان مي دهد كه به عنوان مثال متغير Test كه از نوع آرايه اي است چگونه در حافظه قرار مي گيرد.


http://pnu-club.com/imported/mising.jpg


اجازه دهيد با ذكر يك مثال به تفاوت متغيرهاي آرايه اي با غير آرايه اي پي ببريم.فرض كنيد شما داراي فروشگاههاي متعددي در سطح كشور هستيد و مايليد كه در برنامه خود مجموع سود آنها را محاسبه نمائيد.اگر از متغير هاي آرايه اي استفاده نكنيد ناچاريد به هر فروشگاه يك نام اختصاص دهيد.بنابراين براي جمع سودهاي 10 فروشگاه خود بايد بنويسيد:

کد:


CurTotal = CurDivSeles0 + CurDivSeles1 + CurDivSeles2 + _
CurDivSeles3 + CurDivSeles4 + CurDivSeles5 + CurDivSeles6 + _
CurDivSeles7 + CurDivSeles8 + CurDivSeles9


اما در هنگام استفاده از آرايه به ساده ترين شكل ممكن روي متغير ها حر كت كرده و آنها را جمع ميكنيدهمانند كد زير:

کد:


Dim CurDivSeles(10) As Currency
CurTotal = 0
For intCtr = 0 To 9
CurTotal = CurTotal + CurDivSeles(intCtr)
Next intCtr



همانطور كه ملاحظه مي كنيد در ابتداي كد با حكم Dim متغير CurDivSeles را كه يك متغير 10 خانه اي است تعريف كرديم و سس با يك حلقه For ساده تمام اين متغير هاي مربوط به يك آرايه را جمع كرديم.
شايد در اين دو مثال تفاوت فاحشي در كد نويسي مشاهده نكنيد اما اگر به جاي 10 فروشگاه 100 و يا 1000 فروشگاه داشتيد چطور؟
فرض كنيد لازم است به تعداد نام هاي افراد دانش آموز در يك دبيرستان نام آنها را سوال كنيد و در يك متغير ذخيره كنيد.بهترين روش استفاده از آرايه همانند كد زير است:

کد:


Dim strName(100) As String
For intCtr = 0 To 100
strName(intCtr) = InputBox("What is the next childs names?")
Next intCtr


همچنين شما مي توانيد از آرايه هاي بيش از يك بعد هم استفاده كنيد.در مباحث بعدي به بحث جالبي از ارايه ها به نام آرايه هاي كنترل خواهم پرداخت.

TAHA
10-30-2009, 12:25 AM
آرايه هاي كنترل


در مباحث گذشته چگونگي افزودن كنترلهاي مختلف به فرمتان را آموختيد.در درس گذشته هم با مفهوم آرايه ها آشنا شديد.در اين درس به بحث آرايه هاي كنترل پرداخته خواهد شد.
در بحث آرايه فرا گرفتيد كه براي دسترسي راحت تر و كوتاه شدن برنامه از آرايه استفاده مي شود .
يك آرايه مجموعه اي فضاهائي است كه تحت يك نام در كنار هم قرار دارند و با يك نام و انديسهاي متفاوت اين خانه ها فراخواني مي شوند.
فرض كنيد مي خواهيد كه يك برنامه ماشين حساب ساده بنويسيد.بنابراين نياز داريد كه به جاي اعداد از 0 تا 9 از دكمه استفاده كنيد.همچنين دكمه هائي براي چهار عمل اصلي نياز داريد.
اگر تمام دكمه ها را با روشهائي كه قبلا گفته شد در فرمتان قرار دهيد.براي فشردن هر كدام از اعداد و نوشته ها بايد يك كد بنويسيد.به اين ترتيب كه مثلا اگر دكمه 4 فشرده شد در خروجي عدد 4 نقش بندد.بنابراين خواهيد ديد كه به ازاي هر دكمه اي شما نيازمند نوشتن يك قطعه كد مشابه خواهيد بود.براي نقش بستن اعداد در خروجي ماشين حساب بايد مقدار هر دكمه اي كه فشرده مي شود به بقيه اعداد نوشته شده در خروجي اضافه شود.مثلا اگر خواستيد عدد 45 در خروجي ظاهر شود ابتدا عدد 4 فشرده شده و با متغير درون TextBox (خروجي) and شود(با استفاده از علامت & دو رشته به هم متصل مي شود )(البته اين يكي از روشهاي توليد عدد در ماشين حساب است و روشهاي ديگري نيز وجود دارد) وسپس عدد 5 هم به همين شكل بنابراين براي ورود داده به ماشين حساب كد زير براي تمامي دكمه هاي معرف عدد داده شود.ابتدا تعداد 10 دكمه و يك textbox روي فرم قرار دهيد خاصيت Caption دكمه ها را به ترتيب از 0 تا 9 قرار داده و خاصيت text كادر متني را مقدار خالي قرار دهيد.


کد:

Private Sub Command1_Click()
Text1.Text = Text1.Text & "0"
End Sub

Private Sub Command10_Click()
Text1.Text = Text1.Text & "9"
End Sub

Private Sub Command2_Click()
Text1.Text = Text1.Text & "1"
End Sub

Private Sub Command3_Click()
Text1.Text = Text1.Text & "2"
End Sub

Private Sub Command4_Click()
Text1.Text = Text1.Text & "3"
End Sub

Private Sub Command5_Click()
Text1.Text = Text1.Text & "4"
End Sub

Private Sub Command6_Click()
Text1.Text = Text1.Text & "5"
End Sub

Private Sub Command7_Click()
Text1.Text = Text1.Text & "6"
End Sub

Private Sub Command8_Click()
Text1.Text = Text1.Text & "7"
End Sub

Private Sub Command9_Click()
Text1.Text = Text1.Text & "8"
End Sub


ديديد كه براي دكمه هائي با كارائي مشابه كه در كدينگ خود اختلاف بسيار كمي دارند بايد اين همه كد بنويسيد.
حال اگر قرار باشد بازي مار و پله را با 100 خانه بنويسيد كه واويلا !!!!!!!!!
اما راه حل چيست؟ راه حل بسيار ساده است بله استفاده از آرايه كنترل.آرايه كنترل مجموعه اي از كنترلهاي همنوع است كه تحت يك نام اما با انديسهاي متفاوت شناخته مي شوند.تمامي دكمه هاي مثالتان را پاك كنيد و تنها command1 را نگه داريد.روي اين دكمه كليك راست كنيد و گزينه Copy را برگزينيد و در جاي ديگري از فرمتان كليك راست كنيد و از گزينه ها Paste را برگزينيد.خواهيد ديد كه پيغام زير ظاهر مي شود:


http://pnu-club.com/imported/mising.jpg



اين پيغام به شما مي گويد كه دكمه اي با همين نام روي فرم شما وجود دارد آيا مايل هستيد تا يك آرايه با همين نام ايجاد كنيد؟ اگر No را برگزينيد دكمه ديگري با نام command2 ساخته مي شود همانند آن چيزي كه قبلا آموختيد ولي اگر گزينه Yes را انتخاب كنيد دكمه اي ساخته مي شود با نام Command1(1)x و دكمه قبلي به نام (Command1(0 تغيير نام مي دهد.به همين ترتيب كه گفته شد تعداد مجموعا 10 دكمه را به فرمتان بيافزائيد (با نام command 1 و انديسهاي از 0 تا 9). روي هر كدام از اين دكمه ها كليك كنيد به روال كليك دكمه برده مي شويد منتها با يك تفاوت و آن اين است كه تمام دكمه ها به نام Command1 شناخته مي شوند به انديسهاي مختلف . پرانتزي نسبت به حالت هاي قبل به روال كليك اضافه شده است كه معرف ايندكس يا همان انديس كنترل است:

Private Sub Command1_Click(Index As Integer)

End Sub

حال كد زير را درون روال اضافه كنيد:


کد:

Private Sub Command1_Click(Index As Integer)
Text1.Text = Text1.Text & Index
End Sub


بله خواهيد ديد كه با فشردن هر دكمه عدد روي آن دكمه به كادر متني شما اضافه خواهد شد و نياز به آن همه كد هاي تكراري نيست.
همانطور كه قبلا گفتم اينجا با 10 دكمه سرو كار داشتيم حال اگر با 100 برچسب يا تعداد بيشتري از هر كنترل سرو كار داشته باشيم بايد چه كار كرد.
استفاده از آرايه هاي كنترل براي كنترلهائي كه با هدف واحدي در كنار هم قرار مي گيرند و يا در كدهاي خود تغييرات كمي نسبت به يكديگر دارند بسيار سودمند است.
در مباحث بعدي به معرفي ساير كنترلهاي ويژوال بيسك خواهيم پرداخت.

TAHA
10-30-2009, 12:26 AM
كادرهاي ليستي


كاربران اغلب لازم داند كه كه موردي را از يك ليست انتخاب كنند و يا چيزي را به اقلام ليستي اضافه نمايند.ويژوال بيسيك دو نوع كنترل كادر ليستي و كادر كومبو را براي اين منظور فراهم مي آوردكه مي توانيد با استفاده از آنها ليستي را نمايش دهيد.كنترل كادرهاي ليستي و آرايه ها رامي توانيد در هم ادغام كنيد تا در هنگام پردازش ليست هاي اطلاعات كاملا هماهنگ با هم عمل كنند.
شما در هنگام كار با ويندوز و برنامه هاي جانبي ديگري كه در ويندوز با آنها كار كرديد به اين كادر ها برخورد كرده ايد..كنترل كادر ليستي و يا همان ListBox به كاربر امكان انتخاب كردن از ميان چندين مورد را مي دهد.كاربر به جاي تايپ كردن مقداري درون درون يك كادر متني گزينه اي را انتخاي مي كند.
هر كادر ليستي مي تواند حاوي يك يا چند ستون باشد.براي آشنائي بيشتر با مشخصات كنترل كادر ليستي بهتر است يك ListBox به فرم اضافه كنيد و نظري به مشخصات آن در لايه Properties بيافكنيد.در پايين به برخي از اين خصوصيات اشاره مي كنم:
BackColor: رنگ زمينه كادر ليستي را مشخص مي سازد.
Columns: تعداد ستونها را تعيين مي كند.اگر صفر باشد كادر ليستي به صورت عمودي بر روي يك ستون پيمايش مي شود.اگر 1 را بيشتر باشد اقلام كادر ليستي در تعداد ستون مشخص شده نمايش مي يابد و نوار پيمايش افقي پديدار مي گردد.
ForeColor: رنگ متن را مشخص مي سازد.
List: مقاديري را كه مي توانيد در زمان اجرا درون كادر ليستي وارد كنيد در يك كادر ليستي با خصوصيات پائين افتادني نگه مي دارد.در هر زمان مي توانيد موردي را در ليست وارد كنيد.(بعضي وقتها لازم است در هنگام شروع برنامه كادر ليستي شما با مقادير ثابتي پر شود در اين هنگام از اين خاصيت استفاده مي كنيد.)
MultiSelect: وضعيت قواعد انتخابي كادر ليستي است.اگر صفر باشد كاربر فقط مي تواند يك گزينه را از ليست بر گزيند.اگر 1 باشد كاربر مي تواند بيش از يك مورد را با كليك ماوس انتخاب نمايد.اگر 2 باشد كاربر مي تواند چندين مورد را با استفاده از كليك + sheeft انتخاب نمائيد.
Sorted: تعيين مي كند كه مقادير ليستي به طور خودكار مرتب شوند و يا خير.

مشخصات ديگري نيز هم وجود دارد كه قبلا در كنترل هاي ديگر به آنه پرداختيم.
اما روشهاي موجود براي كنترل كادر ليستي روالهائي هستند كه يك كنترل مي داند كه چگونه آنها را اجرا كند.روشهاي متداول در كادر هاي ليستي همانند زير است. براي دستيابي به اين متدها كافي است نام listbox ي را كه در فرم قرار دهيد را در هر كدام از روالهائي كه قبلا آموختيد بنويسيد و علامت "." بگذاريد تا به آنها دستيابي داشته باشيد)
AddItem : گزينه اي را به كادر ليستي اضافه مي كند.
Clear : تمامي اقلام را از كادر ليستي حذف مي كند.
List : آرايه اي رشته اي كه اقلام درون كادر ليست را نگه مي دارد.
ListCount : تعداد كل اقلام درون كادر ليستي .
RemoveItem : موردي را از كادر ليستي حذف مي كند.

متداولترين روش در هنگام اضافه كردن اقلام به listbox استفاده از AddItem است.فرض كنيد مي خواهيد تعداد روزهاي يك ماه 30 روزه را درليست نمايش دهيد.براي اين منظور با استفاده از يك حلقه For ليست را پر مي كنيد.دقت كنيد كه برخورد ويژوال بيسيك با مقادير ليست همانند آرايه هاي از رشته هاست.(لازم است مفهوم آرايه ها را به درستي بدانيد)
به كد زير دقت كنيد:
کد:


Private Sub Form_Load()
For i = 1 To 30
List1.AddItem i
Next
End Sub


با اجرا شدن اين كد شكل زير نمايش خواهد يافت.مي بينيد كه اعداد 1 تا 30 در يك ليست نمايش داده شده اند كه قابل انتخاب است.



http://pnu-club.com/imported/2009/10/1616.jpg

هر مورد در كادر ليستي حاوي يك انديس مرتبط است.انديس ،عددي است كه براي اولين گزينه درون كادر ليستي برابر 0، براي دومين برابر 1و الي آخر است.
بنابراين اگر خواستيد مقدار عدد 10 را در مثال بالا حذف كنيد كافي است بنويسيد:

(List1.RemoveItem (9

از متدهاي ديگر كادر ليستي ListIndex است كه به خانهاي از ليست شما اشاره دارد.
از Selected براي فهميدن اينكه كاربر موردي از كادر ليستي را انتخاب كرده يا خير استفاده مي شود.


كادر هاي كومبو


كادر هاي كومبو دقيقا شبيه كادر ليستي است با اين تفاوت كه كاربر در زمان اجرا مي تواند اقلامي را به كادر كومبو اضافه كند در حالي كه در زمان اجرا تنها مي تواند بر روي اقلام يك كادر ليستي پيمايش كند و آنها را انتخاب كند.

TAHA
10-30-2009, 12:27 AM
كنترلهاي ديگر


1- دكمه هاي گزينه اي

دكمه هاي گزينه اي يا همان OptionButton امكان انتخاب تنها يك گزينه را بين گزينه هاي موجود فراهم مي آورد.با كليك كردن دكمه گزينه اي يا با ارسال فوكوس به دكمه گزينه اي و فشردن Spacebar جهت گزينش آن ، كاربر يك دكمه گزينه اي را انتخاب مي كند يا از انتخاب خارج مي سازد.وقتي كه دكمه اي انتخاب شده باشد،نقطه سياه رنگي در مركز دايره آن پديدار مي گردد.
دكمه هاي گزينه اي به صورت يك به چند عمل مي كنند.يعني در هر زمان تنها يك دكمه گزينه اي مي تواند انتخاب شده باشد.براي اينكه مطمئن شويد كه در هر زمان تنها يك گزينه انتخاب شده است لازم نيست كار خاصي انجام دهيد،وقتي كه گزينه ديگري را انتخاب مي كنيد ،ويژوال بيسيك ابتدا گزينه اي كه قبلا انتخاب شده بود را غير فعال مي سازد و سپس گزينه جديد را انتخاب مي نمايد.

نكته: به دكمه هاي گزينه اي گاهي اوقات دكمه هاي راديوئي نيز گفته مي شود.

دكمه هاي گزينه اي داراي خصوصيات زيادي هستند كه از قبل با آنها آشنائي داريد.خصوصيت Alignment مشخص مي سازد كه متن دكمه گزينه اي در سمت چپ يا در سمت راست قرار گيرد.
خصوصيت Value احتمالا مهمترين خصوصيت دكمه هاي گزينه اي است .زيرا خصوصيت Value در زمان اجرا تغيير مي يابد و مشخص مي سازد كه كدام دكمه گزينه اي انتخاب شده است؟

قاب ها و دكمه هاي گزينه اي

قاب ، ناحيه مستطيلي بر روي فرم است كه كنترل هاي ديگر را در بر دارد و كنترل ها را در يك مجموعه گروه بندي مي كند.قاب ممكن است داراي عنواني نيز باشد.
اگر دكمه هاي گزينه اي داخل يك قاب (Frame) قرار گيرند و دكمه هاي ديگري نيز در خارج قاب روي فرم و يا در قاب ديگري داشته باشيم.قانون انتخاب يك گزينه از چند گزينه تنها در هر دسته تعريف مي شود.
اجازه دهيد با ذكر مثال با مفهوم دكمه هاي گزينه اي و قاب و كار با مشخصات دكمه ها بيشتر آشنا شويم.

همانند شكل زير يك قاب يا همان frame روي فرم قرار دهيد ونام انرا framcolor و دو دكمه راديوئي به نامهاي optred و optblue روي آن قرار دهيد.خاصيت Caption آن را به ترتيب برابر Red و Blue قرار دهيد.
همچنين دو دكمه گزينه اي ديگر به نامهاي optred1 و optblue1 با caption هاي red و Blue را روي فرم و خارج از قاب قرار دهيد.


http://pnu-club.com/imported/mising.jpg


كد هاي زير را بنويسيد ( به روالهاي كد ها دقت كنيد).


کد:

Private Sub optblue_Click()
framcolor.BackColor = vbBlue
End Sub

Private Sub optblue1_Click()
Form1.BackColor = vbBlue
End Sub

Private Sub optred_Click()
framcolor.BackColor = vbRed
End Sub

Private Sub optred1_Click()
Form1.BackColor = vbRed
End Sub


حال با اجراي برنامه خواهيد ديد كه هر كدام از دكمه ها كه در يك دسته قرار گرفته اند مستقل نسبت به دسته ديگر عمل مي كنندو شما با فشردن دكمه هاي درونقاب رنگ قاب را به رنگ نوشته شده و با انتخاب هر كدام از دكمه هاي روي فرم رنگ فرم را به رنگ نوشته شده تغيير خواهيد داد.
دقت كنيد كه با انتخاب هر كدام از دكمه ها خاصيت Value آن دكمه مقدار True و خاصيت Value دكمه ديگر مقدار False خواهد گرفت.

نكته مهم: شما به جاي نوشتن كد رنگ مورد نظر مي توانيد از اسامي آنها با يك پيشوند Vb استفاده كنيد.(به كد نوشته شده دقت كنيد)

TAHA
10-30-2009, 12:28 AM
كنترلهاي ديگر ( ادامه )


2- كادرهاي بررسي (CheckBox)

كنترل كادر بررسي با دو تفاوت ،درست مانند دكمه گزينه اي عمل مي كند:
1- كادر بررسي انتخاب شده ، حالت انتخاب را با يك علامت بررسي نشان مي دهد.
2- كادرهاي بررسي هيچگاه دو به دو ناسازگار نيستند.
بنابراين كار بر مي تواند يك يا چند كادر بررسي را انتخاب كند، حتي اگر آن كادر هاي بررسي بر روي يك قاب يا بر روي يك فرم قرار داشته باشند.

3- نوارهاي پيمايش عمودي و افقي

نوار هاي پيمايش امكان كنترل تغيير مقادير را براي كاربران فراهم مي آورند .به جاي تايپ كردن مقاديري مشخص كاربر مي تواند با ماوس نوارهاي پيمايش را حركت دهدتا موقعيت هاي نسبي را درون محدوده اي از مقادير مشخص سازد.جعبه ابزار داراي كنترل هائي براي نوارهاي پيمايش عمودي و افقي است.
از مهمترين خصوصيات نوارهاي پيمايش مي توان به موارد زير اشاره كرد:
LargeChange: مقدار تغيير نوار پيمايش را در هنگامي كه كاربر درون ناحيه نوار پيمايش كليك مي نمايد،مشخص ميسازد.
Max: حداكثر تعداد واحدي كه مقدار نوار پيمايش در بيشترين تنظيم خود نشان مي دهد،تعيين مي نمايد.محدوده از مقدار 1 (مقدار پيش گزيده Max) تا 32767 است.
Min: حداقلر تعداد واحدي كه مقدار نوار پيمايش در كمترين تنظيم خود نشان مي دهد،تعيين مي نمايد.محدوده از مقدار 1 (مقدار پيش گزيده Min) تا 32767 است.
SmallChange: مقداري كه در هر بار كليك كردن كاربر روي نوار پيمايش يا بر روي يكي از دو سر نوار پيمايش ،نوار پيمايش تغيير مي كند را مشخص مي سازد.
Value: واحد اندازه گيري را كه در حال حاضر توسط موقعيت نوار پيمايش نشان داده شده است را شامل ميشود.
وقتي نوار پيمايش را بر روي يك فرم قرار مي دهيددر آن زمان بايد تصميم بگيريد كه چه محدوده اي از مقادير را نوار پيمايش بايد نمايش دهد.
اندازه فيزيكي نوار پيمايش وقتي كه كاربر از نوار يمايش چيزي را انتخاب مي كند بر روي مقادير برگردانده شده نوار پيمايش اثري ندارد.نوارهاي پيمايش فرم خود را طوري تنظيم كنيدكه به اندازه كافي دراز يا پهن باشند تا تقريبا براي كليه اقلامي كه بايد نمايش دهند اندازه باشند.
اجازه دهيد با يك مثال به تشريح كادرهاي بررسي و نوار پيمايش بپردازيم:
روي فرم دو عدد كنترل كادر بررسي قراردهيد و به ترتيب خاصيت Name آنها را ChkBold و ChkItalic و خاصيت Caption آنها را Bold و Italic قرار دهيد.
يك برچسب به فرم اضافه كنيد و خاصيت Name آنرا lblTest و ‍Caption آنرا ‌WWW.Binyaz.net قرار دهيد.ضمن اينكه خاصيت Alignment آنرا Center قرار دهيد.
همچنين يك كنترل نوار پيمايش عمودي كنار برچسب قرار دهيد و خاصيت Name آنرا به svbFontChange تغيير دهيد.در خاصيت Min مقدار 8 , در خاصيت Max مقدار 24 را قرار دهيد ضمن اينكه در خاصيت ُSmallChange مقدار 2 را قرار دهيد.
يك Textbox كوچك زيز برچسب قرار دهيد تا بتوانيد اندازه فونت را در آن ببينيد(مقدار نوار پيمايش).نام آنرا txtFontSize قرار دهيد و در خاصيت Text جمله نوشته شده را پاك كنيد و مقدار خالي بگذاريد.



http://pnu-club.com/imported/2009/10/1617.jpg


حال كد زير را بنويسيد.(مي دانيد كه روي هر كنترلي مي توانيد دابل كليك كرده و كد مربوطه را در روال ذكر شده بنويسيد ولي در اينجا مي توانيد كل كد را كپي و در صفحه كد Paste نمائيد.)

کد:


Private Sub chkBold_Click()
If chkBold Then
lbltest.FontBold = True
Else
lbltest.FontBold = flse
End If
End Sub

Private Sub chkItalic_Click()
If chkItalic Then
lbltest.FontItalic = True
Else
lbltest.FontItalic = False
End If
End Sub

Private Sub Form_Load()
txtFontSize.Text = vsbFontChange.Value
End Sub

Private Sub vsbFontChange_Change()
lbltest.FontSize = vsbFontChange.Value
txtFontSize.Text = vsbFontChange.Value
End Sub

ُ


حال برنامه را اجرا كنيد خواهيد ديد كه با تغيير دادن نوار پيمايش علاوه بر تغيير سايز فونت برچسب مقدار سايز فونت نيز نمايش مي يابد و با انتخاب كادرهاي ليستي بالا حالت فونت را به Bold و Italic و با عدم انتخاب آنها به بالعكس تغيير دهيد.

TAHA
10-30-2009, 12:29 AM
كنترل زمان سنج (Timer)


برنامه نويسان حرفه اي معمولا از اين كنترل استفاده مي كنند.در هنگام نوشتن برنامه ممكن است اين نياز به وجود آيد كه مايل باشيد يك اتفاق يا رويداد و يا عملي در برنامه با فاصله هاي زماني مشخص ، حادث شود.اينجاست كه اين كنترل مورد استفاده قرار مي گيرد.
كنترل تايمر برخلاف هر كنترل ديگري كه تا به حال ديده ايد عمل مي نمايد.اين كنترل هميشه درپس زمينه در حال اجراست و كاربر هيچ گاه آنر روي فرم نمي بيند.در حين زمان طراحي ،كنترل تايمر را خواهيد ديد زيرا لازم است كه قادر به انتخاب كنترل و تغيير خصوصيات آن باشيد.
كامپيوتر شما داراي ساعتي داخلي است كه هميشه در حال اجرا است.سخت افزار كامپيوتر براي نوسازيهاي حافظه و تنظيم چرخه CPU به ساعت دقيقي نياز دارد.
كنترل تايمر تنها هفت خصوصيت دارد و مانند ساير كنترلهاي ديگر داراي تنظيمات ظاهري نظير تنظيم و انتخاب رنگ ، فونت و از اين دست نيست زيرا اين كنترل هيچگاه در هنگام اجرا پديدار نمي گردد.

نكته : محل قرار گرفتن زمان سنج روي فرم كاملا اختياري است و تاثيري در اجراي برنامه ندارد.

حال به خصوصيات كنترل زمان سنج يا همان تايمر مي پردازيم:
name: اين خاصيت نام تايمر است كه قبلا با موارد مشابه توضيح داده شد.با انتخاب اين نام هنگام دابل كليك روي تايمر و براي نوشتن كدهاي مربوط به رويداد تايمر اين نان براي شناسائي رويداد مورد استفاده قرار مي گيرد.
Enabled : خاصيت مهمي است كه براي آماده به كار بودن تايمر و يا عدم آماده به كار بودن تايمر با قرار دادن مقادير True و False مورد استفاده قرار مي گيرد.
اگر مقدار اين خصوصيت False باشد ديگر رويداد مربوط به تايمر اتفاق نخواهد افتاد.
Interval: اين خصوصيت مهمترين خصوصيت كنترل تايمر است. اين خصوصيت مي تواند مقاديري بين 1 تا 65535 بپذيرد.اين مقدار به ميلي ثانيه بوده كه بر مبناي آن رويداد مربوط به تايمر اتفاق مي افتد به عنوان مثال اگر اين مقدار 1000 در نظر گرفته شود رويداد مربوط به تايمر هر ثانيه اتفاق مي افتد.
به مثال زير توجه كنيد:
روي فرم يك كنترل تايمر قرار دهيد و به ترتيب خاصيت Name آنرا tmrColor و مقدار Interval آنرا 1000 قرار دهيد.روي كنترل تايمر دابل كليك كنيد و كد زير را بنويسيد.با اجراي اين برنامه رنگ فرم شما هر ثانيه به آبي و قرمز تبديل مي شود يعني ثانيه اي آبي و ثانيه اي بعد قرمز.


کد:

Dim mode As Boolean

Private Sub tmrColor_Timer()
mode = Not mode
If mode Then
Me.BackColor = vbRed
Else
Me.BackColor = vbBlue
End If
End Sub


نكته مهم : در كد به عبارت Me توجه كنيد.اين عبارت به فرم جاري اشاره دارد و شما به جاي نوشتن فرم جاري و استفاده از خصوصيات آن مي توانيد از عبارت Me استفاده كنيد.

نكته : مقدار Interval تايمر در خود برنامه و حين اجراي برنامه نيز قابل تغيير است.

TAHA
10-30-2009, 12:30 AM
كادر هاي تبادلي


كنترل كادر هاي تبادلي اين امكان را به شما مي دهند كه كه در برنامه خود بتوانيد فايلي را باز ويا ذخيره كنيد، رنگ و يا فونتي دلخواه را به كار گيريد و ...
اگر چه كنترل كادر هاي تبادلي به عنوان يكي از كنترل هاي استاندارد شناخته مي شود،اما تا وقتي اين كنترل را اضافه نكنيد،در جعبه ابزار نمايش نمي يابد.اين مراحل را دنبال كنيد تا اين كنترل به جعبه ابزار شما اضافه گردد.
از منوي Project گزينه components را انتخاب نمائيد تا اين پنجره نمايش داده شود.
نمونه هاي مختلفي از كامپوننتهايي كه مي توانيد در برنامه استفاده كنيدرادر اينجا خواهيد ديد.
به دنبال گزينه Microsoft common Dialog Control 6.0 بگرديد و تيك آنرا بگذاريدو روي دكمه Ok كليك كنيد.
خواهيد ديد كه يك كنترل همانند شكل زير به جعبه ابزار شما اضافه گرديده است:


http://pnu-club.com/imported/mising.jpg


حال مي توانيد اين كنترل را به فرم خود اضافه كنيد.اما قبل از آشنايي با نحوه كد نويسي اجازه دهيد توضيح مختصري در مورد امكانات اين كنترل عرض كنم.
اين كنترل امكان باز گشايي كادر هاي كنترلي File Open و File Save ، Font، Color و همچنين Printer را به شما مي دهد.
كادر تبادلي File Open و file Save را در بسياري از برنامه هاي ويندوز ديده ايد همان كادر معروفي كه بهشما امكان باز كردن و ذخيره يك فايل با نام دلخواه را مي دهد.كادر تبادلي Color امكان انتخاب ميليونها رنگ را براي استفاده در اختيار شما قرار مي دهد.همچنين كادر تبادلي Font نيز اين امكان را به شما مي دهد كه از ميان فونتهاي نصب شده روي كامپيوتر خود فونتي دلخواه را براي كنترلهاي ديگر برنامه انتخاب كنيد.همچنين كادر تبادلي Print اطلاعاتي را كه كاربر در مورد كادر چاپي انتخاب مي كند برمي گرداند.

توليد كادر هاي تبادلي مرسوم

وقتي كنترل كادرهاي تبادلي را به فرمتان اضافه كرديد در پنجره خصوصيات اين كنترل گزينه اي را به نام Custom مشاهده خواهيد كرد.با انتخاب سه نقطه كنار اين خوصيت پنجره Property Pages را مشاهده خواهيد كرد كه داراي سربرگ هايي به شكل زير است:


http://pnu-club.com/imported/mising.jpg



از اين برگه به عنوان تنظيمات سريع و پيش فرض كنترل تبادلي مي توانيد استفاده كنيد.به عنوان مثال مي توانيد نام فونت و size آن همچنين يك رنگ دلخواه و مسيري پيش فرض را براي باز كردن بگنجانيد.

براي نمايش يك كادر تبادلي خاص ف برنامه كاربردي شما بايد يكي از روش هاي زير را بكا برد.

ShowColor
ShowFont
ShowHelp
ShowOpen
ShowPrinter
ShowSave

بنابراين اگر نام كنترل كادرهاي تبادلي مرسوم شما cdbFile باشد برنامه كاربردي شما مي تواند كادر تبادلي Filesave را با اين حكم نمايش دهد:
cdbFille.ShowSave
براي نكمايش كادر تبادلي File Open برنامه كاربردي شما ممكن است حاوي كد زير باشد:


کد:

cdbFile.DialogTitle = "File Open"
cdbFile.Filter = "*.txt"
cdbFile.FileName = "*.txt"
cdbFile.ShowOpen


همچنين براي file save نيز مي توانيد از موارد مشابه استفاده كنيد.
نكته مهم :اين دستورات فقط باعث نمايش كادر تبادلي و باز گرداندن نام فايل انتخاب شده خواهند شد و فايلي را باز يا Save نخواهند كرد.براي اين منظور بايد به كد نويسي مربوط به آن مسلط باشيد.
براي كادر تبادلي Color لازم است كه خصوصيت Dialog Title آنرا تغيير دهيدو روش صحيح را تغيير دهيداگر كد زير را در روال Load فرم قرار دهيد به محض اجراي برنامه كادر تبادلي Color نمايش خواهد يافت و شما با انتخاب رنگ دلخواه BackColor فرم خود را مي توانيد تغيير دهيد.


کد:

Private Sub Form_Load()
cdbFile.DialogTitle = "select color"
cdbFile.ShowColor
Me.BackColor = cdbFile.Color
End Sub

همچنين براي نمايش كادر تبادلي فونت به مثال زير توجه كنيد:
يك Lable روي فرم قرار دهيد و كد زير را در روال Load فرم بنويسيد:


کد:

Private Sub Form_Load()
Label1.Caption = "shahram"
cdbFile.Flags = cdlCFEffects Or cdlCFBoth
cdbFile.ShowFont
Label1.Font = cdbFile.FontName
Label1.FontBold = True
End Sub


به خط سوم كد هاي فوق دقت كنيد.جايي كه Flag مربوط به فونت معرفي شده است.اگر اين كار انجام نشود ممكن است در حين اجراي برنام با پيغام خطايي مبني بر عدم نصب فونتها مواجه شويد.

TAHA
10-30-2009, 12:31 AM
برنامه نويسي ساخت يافته 1(استفاده از زير برنامه ها)


هنرمندي برنامه نويسان حرفه اي استفاده از يك ساختار مناسب كد نويسي است.ساختاري كه با يك ايده منطقي و هدفمند به ما در استفاده ، عيب يابي و ارتقا برنامه كمك ميكند.
هنر شما در اين نيست كه كدهاي طولاني بنويسيد بلكه در اين است كه رويه هاي كد كوتاهي بنويسيد.اصطلاحا بدنه اصلي برنامه شما بايد نسبتا كم حجم باشد و كدهاي طولاني را به زير روال ها واگذار كنيد.برنامه نويسي ساخت يافته روشي در برنامه نويسي است كه براي تقسيم بندي برنامه هاي بزرگ به چندين رويه كوچك كه هر كدام كار خاصي انجام مي دهند ، مورد استفاده قرار مي گيرد.

فراخواني رويه ها و بازگشت آنها

براي فراخواني يك زير برنامه در برنامه اصلي به شكل زير عمل مي كنيم:


Call Procedure

وقتي كه رويه اي داراي يك حكم Call است حكم Call رويه جاري را در انتظار مي گذارد و رويه فراخواني شده (Procedure) را اجرا مي نمايد.

نكته مهم: واژه Call به ندرت در VB استفاده مي شود و استفاده از اين واژه اختياري است.يعني براي فراخواني رويه نوشتن نام رويه هم كفايت مي كند.

وقتي كه اجراي رويه اي به يك حكم Call برخورد مي كند آن رويه در حالت انتظار قرار مي گيرد تا در اجراي رويه جديد به حكم End Sub و يا Exit Sub برخورد كند.

براي نوشتن يك رويه بدين ترتيب عمل مي كنيم:
بعد از اجراي ويژوال بيسيك و رفتن به بخش كدنويسي از منويTools گزينه Add Procedure را برمي گزينيم تا نجره اي باز شود .در قسمت Name نام زير روال و در قسمت type گزينه Sub و در قسمت Scope يكي از گزينه هاي Public و يا Private را انتخاب مي كنيم.

نكته مهم : اگر رويه اي با كليد Private آغاز شده باشد تنها رويه هايي كه در همان يمانه قرار دارند مي توانند آن را فراخواني كنند.برعكس اگر با Public به معني عمومي فراخوانده شوند تمامي رويه هاي داخل پروژه مي توانند آنرا فراخواني كنند.



مثال :
فرض كنيد در يك برنامه بخواهيد ابتدا نمرات 10 درس خود را وارد كنيد و برنامه ميانگين نمره شما را نمايش دهد.
يك دكمه روي فرم قرار دهد و كدهاي زير را وارد كنيد:


کد:

Dim Number(9) As Single

Private Sub Command1_Click()
‍Call InputData
Call Avrage
End Sub

Private Sub InputData()
For i = 0 To 9
Number(i) = InputBox("enter " & i & " Grade")
Next
End Sub

Private Sub Avrage()
Dim sumgarade As Single
Dim avg As Single
sumgrade = 0
For i = 0 To 9
sumgrade = sumgrade + Number(i)
Next
avg = sumgrade / 10
MsgBox "Your Avrage is: " & avg

End Sub


همانطور كه ملاحظه مي كنيد من هر قسمت از كدها را با رنگهاي متفاوت براي درك بهتر شما جدا كرده ام.كد تك خطي اول براي معرفي يك آرايه به نام Number جهت ذخيره كردن نمرات 10 درس شماست.
قسمت بعد رويه اصلي برنامه است كه با فشردن دكمه فراخواني مي شود.در اين رويه ميبينيد كه تنها 2 خط كد نوشته شده است كه يكي زير روال دريافت نمرات و ديگري زير روال محاسبه ميانگين نمرات را فراخواني مي كند.
دو زير روال ذكر شده هم از هم متمايز شده اند و شما به راحتي مي توانيد به منطق ساده آن پي ببريد.
در رويه اصلي هنگامي كه برنامه به خط InputData رسيد به زير روال InputData پرش كرده و كدهاي داخل آن زير روال را اجرا مي كند.پس از رسيدن به حكم End Sub مجددا به رويه اصلي بازگشته و به خط Avrage مي رود و اين بار به زير روال Avrage رفته و كدهاي درون اين زير روال را اجرا مي كند.
تا اينجا با نحوه نوشتن روال و زير روال و همچنين نحوه فراخواني زير روال آشنا شديد. در درسهاي بعدي با آرگومانها و توابع بازگشتي آشنا خواهيد شد.

نكته: در يك زير روال نيز مي توانيد يك زير روال ديگر را فراخواني كنيد.