مثالی ديگر و استفاده از Label و TextBoxها
فرض کنيد بخواهيم فرمی داشته باشيم که دارای دو Text Box (که در VB برای عمليات دريافت اطلاعات از کاربر (DataEntrq) معمولاً از اين کنترل استفاده می شود) برای درجه سيلسيوس و درجه فارنهايت باشد و توسط يک دکمه (و در واقع با فشردن آن توسط کاربر) مقداری که در Text box مربوط به درجه سيلسيوس نوشته شده بود را به فارنهايت تبديل کند و نتيجه را در Text Box مربوط به آن درج نمايد. (توجه: اگر Cمقدار درجه برحسب سيلسيوس و Fمقدار درجه برحسب فارنهايت باشد، تبديل سيلسيوس به فارنهايت از فرمول F=9/5 C+32 محاسبه می شود). شکل نهايی فرم را می توانيد در شکل 4 ببينيد.
برای اين منظور، از جعبه ابزار (جعبه حاوی کنترلها) ، دو برچسب (Label) که در جعبه ابزار به شکل ديده می شود را بر روی فرم قرار می دهيم(برچسب(Label) ها در VB معمولاً زمانی استفاده می شود که بخواهيم بر روی فرم، عبارتی را به کاربر نشان دهيم که او قابليت تغيير آن را نداشته باشد.) آنها را بوسيله Drag & Drop به مکان دلخواه منتقل می کنيم و برای يکی از آن دو:
1- مشخصه Name را به lblCelsius
2- مشخصه Caption را به Celsius
و برای ديگری:
1- مشخصه Name را به lblFahrenheit
2- مشخصه Caption را به Fahrenheit
تغيير می دهيم. توجه داريم که در نامگذاری Label ها با سه حرف اول lbl آغاز کرده ايم. همچنين توجه داريم که در شکل 4 ، بر روی فرم، عبارات Celsius و Fahrenheit در واقع همين دو Label هستند.
نکته: برای Label هايک مشخصه (Property) ديگر به نام Auto Size وجود دارد که اگر مقدار آن را به Trueتغيير دهيم، اندازه (size) آن به طور اتوماتيک به اندازه متن (caption) داخل آن خواهد شد و بنابراين معمولاً بهتر است اين مشخصه را نيز set کنيم.
حال دو Text Box (جعبه متن) در مقابل اين Label (Text Box ها در جعبه ابزار به شکلديده می شوند، معمولاً برای نمايش و دريافت اطلاعات به طور توأم به کار می رود (بر عکس Label ها که فقط وظيفه نمايش اطلاعات را به عهده داشتند) و خصوصاً برای فرمهای DataEntrq (دريافتی اطلاعات) بسيار مناسب هستند. پروژه فعلی ما، نمونه ای کوچک از فرمهای DataEntrq است) و مناسب با هر يک از برچسب ها، برای يکی از آن دو Text Box :
1- مشخصه Name رابه txtCelsius تغيير می دهيم.
2- مشخصه Text را خالی می کنيم.
و برای ديگری:
1_ مشخصه Name را به txtFahrenheit تغيير می دهيم.
3- مشخصه Text را خالی می کنيم.
واضح است که در نامگذاری TextBox ها نيز از قرارداد سه حرف اول متناسب با نوع شئ، استفاده کرديم و سه حرف اول آنها را txt گذاشتيم.
مشخصه Text در Textbox ها آن متنی است که داخل آن متنی است که داخل آن نوشته می شود(شبيه مشخصهCaption در Label ها) و چونقرار است کاربرما آن را وارد کند، آن را خالی (NULL) کرديم.
حال يک دکمه (Command button) نيز به فرم اضافه و:
1- مشخصه Name را به cmdConvent
2- مشخصه Caption را به convent
تغيير می دهيم.
خوب، ظاهر (Interface) برنامه آماده شد. حال به کدنويسی برای آن می پردازيم. اين اولين باری است که می خواهيم در زمان اجرا (Run Time) از مشخصه ای استفاده کنيم (مشخصه Text از txtCelsiusکه توسط کاربر وارد شده) و مشخصه ای را در اين حال (Run Time) تغيير دهيم (مشخصه Text ازtxtFahrenheit که بايد نتيجه را بنويسد)
در VB هنگام کدنويسی برای Run Time هر زمان بخواهيم از يک Object استفاده کنيم، کافی است نام (Name) آن را بنويسيم و اگر بخواهيم به يکی از مشخصه های آن دست يابيم، کافی است پس از نام آن يک نقطه (Dot) قرار دهيم و سپس نام مشخصه (Property) مورد نظر خورد را بنويسيم.
با توجه به اين مطلنب، ديگر نوشتن کدهای مثال فوق کار چندان دشواری نيست. اگر بر روی دکمه Convent (البته در Design Time ) دابل کليک نماييد، در اينصورت Procedure مربوط به رويدادِ(Event) کليک از آن باز می شود که کافی است در آن نوشته شود:
txtFahrenheit.Text = (9/5*txtCelsius.Text) + 32
يعنی Procedure بايد به شکل زير شود:
Private Sub cmdConvent_Click ()
txtFahrenheit.Text = (9/5*txtCelsius.Text) +32
End Sub
واضح است که وقتي مشخصه Text از يک Text Box در سمت يک تساویِ جايگزينی قرار می گيرد، مقدار فعلی آن در عمليات شرکت می کند و وقتی اين مشخصه در سمت چپ اين جايگزين قرار می گيرد، مقادير محاسبه شده در آن قرار می گيرد.
بنابراين، Procedure فوق می گويد که وقتی بر روی دکمه Convent کليک شد، هر مقداری که کاربر، داخل جعبه Celsius نوشته باشد را در 9/5 ضرب و با32 جمع کن و مقدار نهايی را داخل جعبه مربوط به Fahrenheit بنويس.
اين برنامه را حتماً بنويسيد، آن را اجرا منيد و با نحوه استفاده از Property ها در اين کدنويسی بری Run Time آشنا شويد. در ادامه، بيشتر با اين نوع استفاده از Property ها (يعنی set کردن در کدنويسی بجای set کردن در پنجره Properties از Design Time) مواجه خواهيم شد. و مهم است که اين نوع استفاده را خوب درک کنيم.
نکته: مشخصه Text برایText Box ها و مشخصه Caption برای Label ها، مشخصه های پيش فرض آنها محسوب می شوند و اگر نام آنها را بدون هيچ مشخصه ای بنويسيمف اين مشخصه ها در نظر گرفته می شود، اذا مثلاً در Procedure بالا می توانستيم بجای txtCelsius.Text از خود txtCelsius نيز استفاده کنيم.