• بازدید : 27 views
  • بدون نظر
این فایل در ۲۵صفحه قابل ویرایش تهیه شده وشامل موارد زیر است:

ويژوال بيسيک توسعه يافته زبان برنامه‌نويسي بيسيک مي‌باشد. بيسيک توسط پروفسور جان کمنسي و توماس کرتز از کالج دارتموث براي نوشتن برنامه‌هاي ساده ايجاد شد. طراحي آن از اواسط دهه ۱۹۶۰ آغاز گرديد.
ويژوال بيسيک تا نسخه ۳ به صورت ۱۶ بيتي بود. از نسخه ۵ به بعد فقط ويرايش ۳۲ بيتي آن ارائه شد. (نسخه ۴ هم به صورت ۱۶ بيتي و هم به صورت ۳۲ بيتي عرضه شده بود.)
ويژوال بيسيک از نسخه ۶ به بعد بر پايه چارچوب دات‌نت (NET.) ارائه شد.
اگر چه با ظهور ويژوال بيسيک دات نت اکثر برنامه‌نويسان ويژوال بيسيک ۶ به آن گرويدند، ولي نسخه ۶ همچنان طرفداران ويژه‌ي خود را دارد.
براي نوشتن برنامه‌هاي مهندسي، محاسباتي، گرافيکي و آماري نياز داريد تا از برخي توابع رياضي استفاده نمائيد. ويژوال بيسيک ۶ داراي مجموعه‌اي از توابع است که براي انجام محاسبات عددي پيش بيني شده اند. در اين مقاله ابتدا با اين توابع آشنا شده و سپس چگونگي ايجاد ساير توابع رياضي را که در ميان اين مجموعه وجود ندارند خواهيد ديد. در پايان نيز با توابع رياضي موجود در دات نت آشنا مي‌شويد. 
تابع Abs (قدرمطلق) :
مقدار بدون مثبت يک عدد را برمي‌گرداند
تابع Atn (آرک تانژانت) :
خروجي اين تابع عددي از نوع double است که برابر زاويه‌اي است که تانژانت آن عدد ورودي تابع است. 
تابع Cos (کسينوس) :
خروجي اين تابع عددي از نوع double است که برابر کسينوس زاويه ورودي است. 
تابع Exp (توان نماني) :
خروجي اين تابع عددي از نوع double است که برابر e به توان ورودي تابع است. 
تابع Int (تابع کف يا تابع جزء صحيح) :
نزديکترين عدد صحيح مساوي يا کوچکتر نسبت به عدد ورودي را برمي‌گرداند. 
تابع Log (لگاريتم) :
خروجي اين تابع عددي از نوع double است که برابر لگاريم طبيعي عدد ورودي است (لگاريتم بر مبناي عدد e يا همان Ln).
تابع Round (گرد کردن) :
خروجي اين تابع عددي از نوع double است که برابر نزديکترين عدد صحيح به مقدار عدد ورودي است. 
تابع Sgn (علامت) :
خروجي اين تابع عددي از نوع صحيح است که نشان دهنده علامت عدد ورودي است. 
تابع Sin (سينوس) :
خروجي اين تابع عددي از نوع double است که برابر سينوس زاويه ورودي است. 
تابع Sqr (جذر) :
خروجي اين تابع عددي از نوع double است که برابر ريشه دوم يا جذر عدد ورودي است. 
تابع Tan (تانژانت) :
خروجي اين تابع عددي از نوع double است که برابر با تانژانت زاويه ورودي (برحسب راديان) مي‌باشد. 
نکته: براي محاسبه توان nام يک عدد (n مي توان صحيح يا اعشاري باشد) از اپراتور ^ استفاده نمائيد. براي مثال:
۲ ^ ۵ = ۳۲
۹ ^ ۰٫۵ = ۳
۴٫۲ ^ ۳٫۷ = ۲۰۲٫۳۱
ايجاد ساير توابع رياضي که در ويژوال بيسيک ۶ وجود ندارند :
جدول زير چگونگي محاسبه ساير توابع رياضي که در ويژوال بيسيک ۶ وجود ندارند را نشان مي‌دهد
مفاهيم بنيادي
در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
فرض كنيد بخواهيم برنامه اي بنويسيم كه ظاهري شبيه آنچه در شكل ۹ مي‌بينيد داشته باشد. و بتوانيم تصوير داخل PictureBox مبداُ (سمت چپ) را بوسيله Drag & Drop به PictureBox مقصد (سمت راست) منتقل كنيم.
 
شکل ۹
ابتدا دو PictureBox (كه كنترل آن در ToolBox به شكل     مي باشد) را در مكانهاي خود قرار داده و مشخصه Name آنها را picSource و picTarget مي گذاريم. براي نمايش متني كه در پايين شكل ۹ مي بينيد نيز مي توانيم از يك 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 يك دكمه فوري نيز بر روي ميله ابزار استاندارد VB به شكل   دارد كه با كليك بر روي آن نيز پنجره MenuEditor باز مي شود. اين پنجره مانند شكل ۱۰ مي باشد

عتیقه زیرخاکی گنج