درس دوم
نگاهی سریع به چگونگی طراحی یک برنامه
در این قسمت 3 گام اصلی برای طراحی برنامه های ویژوال بیسیک را معرفی می کنیم:
- طراحی رابط کاربر
- دادن خواص به کنترل ها
- نوشتن کد برای کنترل ها
برنامه کورنومتر (نگهدارنده زمان)
ایده این برنامه به این صورت است که زمان سپری شده بین زمانهای شروع و ایست شمارنده را حساب می کنیم.
· طراحی رابط کاربر: 3 تا Command Button و 6 تا Label بر روی فرم قرار دهید.آنها را براساس سلیقه خود مرتب کنید.
· دادن خواص به کنترل ها
الف- دادن خواص به کنترل ها در هنگام طراحی برنامه: فرم ها وکنترل ها در هنگام شروع پروژه خواص اولیه ای دارند.(برای دیدن خواص اشیا دو راه وجود دارد:1- با کلیک کردن بر روی شی - فرم یا کنترل- در پنجره فرم که میتوانید بعضی از خواص آن را در Properties Window مشاهده کنید. 2- بر روی Properties Window کلیک کنید سپس بر روی شی مورد نظر در Object box کلیک کنید.).در زیر Object box لیستی از خواص اشیاء دیده می شود. در این لیست شما می توانید خواص شیئی را که بر روی آن کلیک کرده اید، ببینید. برای خاصیت یک شی شما می توانید مقدار جدیدی به آن بدهید یا اینکه از مقادیر پیشفرض یکی را انتخاب کنید.
خاصیت Name برای تمام اشیاء مهم است. ویژوال بیسیک از این خاصیت برای رجوع به کد مخصوص آن شی استفاده می کند.برای نامگذاری اشیاء در ویژوال بیسیک پیشوند های زیر پیشنهاد می شود:
|
Example |
prefix |
Control type |
|
chkChoice |
chk |
Check box |
|
cboEnglish |
cbo |
Combo box |
|
cmdExit, btnStart |
cmd , btn |
Command button |
|
dlgFileOpen |
dlg |
Common dialog |
|
dirSource |
dir |
Directory list box |
|
drvTarget |
drv |
Drive list box |
|
filSource |
fil |
File list box |
|
frmWatch |
frm |
Form |
|
fraLanguage |
fra |
Frame |
|
imgIcon |
img |
Image |
|
ilsAllIcons |
ils |
ImageList |
|
lblStart |
lbl |
Label |
|
lstPolicyCodes |
lst |
List box |
|
mnuSave |
mnu |
Menu |
|
optGender |
opt |
Option button |
|
picVGA |
pic |
Picture box |
|
prgLoadFile |
prg |
ProgressBar |
|
rtfReport |
rtf |
RichTextBox |
|
staDateTime |
sta |
StatusBar |
|
txtTime |
txt |
Text box |
|
tmrAlarm |
tmr |
Timer |
اسامی اشیاء می توانند تا 40 حرف نیز باشند.
ب- دادن خواص به کنترل ها در هنگام اجرای برنامه: برای اینکه بتوانید خواص شیئی را در هنگام اجرای برنامه تغییر دهید در ابتدا باید برای آن کدنویسی کنید. کجا؟ بر روی شیئی میخواهید برای آن کدنویسی کنید دابل کلیک کنید. صفحه کاملا سپیدی باز خواهد شد این پنجره محل نوشتن کدهای برنامه است.
کد نوشته شده معمولا به این شکل است:
ObjectName.Property = NewValue
برای مثال برای تغییر خاصیت Backcolor(رنگ زمینه) از فرمی به اسم frmstart اینگونه می نویسیم:
Frmstart.backcolor=blue
اینم از این حالا میریم سر اصل مطلب یعنی دادن خواص به کنترلها :
|
Border style = 1-fixed single
Caption = Stopwatch application
Name = frmStopWatch |
Form1 |
|
Caption =&Start Timing
Name = cmdStart |
Command1 |
|
Caption = &End Timing
Name = cmdEnd |
Command2 |
|
Caption =E&xit
Name = cmdExit |
Command3 |
|
Caption = Start Time |
Label1 |
|
Caption = End Time |
Label2 |
|
Caption = Elapsed Time |
Label3 |
|
Border style = 1-fixed single
Caption =
Name = lblStart |
Label4 |
|
Border style = 1-fixed single
Caption =
Name = lblEnd |
Label5 |
|
Border style = 1-fixed single
Caption =
Name = lblElapsed |
Label6 |
یک سوال. علامت & برای چیست؟
این علامت وقتی قبل از حرفی از مقدار خاصیت Caption نوشته شود در واقع فشردن آن حرف از صفحه کلید عمل کلیک بر شی مورد نظر است. یعنی شما می توانید با موشواره بر روی آن کلیدها کلیک کنید یا بدون نیاز به موشواره با نگهداشتن Alt وآن کلید ( حرفی که قبل از آن علامت & آمده است و در زیر آن _ وجود دارد) آن کار را انجام دهید.
متغیر ها :
ویژوال بیسیک از متغییر ها برای نگه داشتن مقادیری که برنامه به آن نیاز دارد استفاده می کند.
قاعده نامگذاری متغییر ها به این صورت است:
- نباید بیشتر از 40 کارکتر باشد
- شامل حروف، اعداد و _ باشد
- کارکتر اول باید حرف باشد
- از کلمات تعریف شده ویژوال بیسک نباشد( مانند Font )
متغیرها در ویژوال بیسیک
|
Range |
Storage size |
Data type |
|
True or False(1 or 0) |
2 bytes |
Boolean |
|
-32,768 to 32,767 |
2 bytes |
Integer |
|
-2,147,483,648 to 2,147,483,647 |
4 bytes |
Long(integer) |
|
1.401298E-45 to 3.402823E38 -3.402823E38 to -1.401298E-45 |
4 bytes |
Single(Floating) |
|
+ -1.79769313486232E308 to+ - 4.94065645841247E-324 |
8 bytes |
Double(Floating) |
|
922,337,203,685,477.5808 to 922,337,203,685,477.5807 |
8 bytes |
Currency |
|
January 1, 100 to December 31, 9999 |
8 bytes |
Date |
|
Any Object reference |
4 bytes |
Object |
|
0 to approximately 2 billion |
10 bytes + string length |
String |
|
Any numeric value up to the range of a Double |
16 bytes |
Variant(num) |
|
Same range as for variable-length String |
22 bytes + string length |
Variant(characters) |
نوشتن کد برای کنترلها:
حالا تنها چیزی که مونده نوشتن کد برای برنامه است. ما فقط کد را برای آن رویدادی می نویسیم که به آن نیاز داریم. رویداد Click برای دکمه ها.
- بر روی فرم دابل کلیک می کنیم تا پنجره کدنویسی باز شود. در سمت چپ لیستی از اشیاء و درسمت راست آن لیستی از رویدادهای آنها دیده می شود.
- خطوط زیر را در آن اضافه می کنیم :
Option Explicit
Dim StartTime As Variant
Dim EndTime As Variant
Dim ElapsedTime As Variant
دستور Option Explicit به ویژوال بیسیک می گوید که تمامی متغیر ها را من تعریف می کنم.با دستور Dim متغیر را تعریف می کنیم وبا دستور As می گوییم که متغیر ما از چه نوعی باشد.
- از جعبه اشیاء در پنجره کدنویسی cmdStart را انتخاب می کنیم . اگر رویداد کلیک این شی ظاهر نشد در جعبه رویداد Click را انتخاب می کنیم. خطوط زیر را بین دستور Sub و
End Sub بنویسید:
Sub cmdStart_Click ()
‘Establish and print starting time
StartTime = Now
lblStart.Caption = Format(StartTime, "hh:mm:ss")
lblEnd.Caption = ""
lblElapsed.Caption = ""
End Sub
وقتی بر روی دکمه کلیک می شود زمان کنونی سیستم گرفته شده و در Label نشان داده می شود.با دو دستور آخر دیگر Labelها خالی می شوند.اولین خط که بعد از (‘) آمده است برای توضیح کدهای نوشته شده است و برنامه به آن نیازی ندارد(می توانید بنویسد یا می توانید ننویسید)
- کدهای دکمه cmdEnd را می نویسیم:
Sub cmdEnd_Click ()
‘Find the ending time, compute the elapsed time
‘Put both values in label boxes
EndTime = Now
ElapsedTime = EndTime - StartTime
lblEnd.Caption = Format(EndTime, "hh:mm:ss")
lblElapsed.Caption = Format(ElapsedTime, "hh:mm:ss")
End Sub
وقتی بر روی دکمه End Timing کلیک می شود زمان کنونی سیستم گرفته میشود سپس از زمان آغازین کم شده و زمان محاسبه شده را در lblElapsed نشان می دهد. با دستور Format(xxx,"hh:mm:ss") مقدار متغیر xxx را بر حسب زمان به label نسبت می دهیم.
- ودر آخر کد برای cmdExit :
Sub cmdExit_Click ()
End
End Sub
با دستور End برنامه را به پایان می رسانیم( البته می توان از X که در بالای پنجره برنامه وجود دارد نیز این کار را انجام داد)
- اگر کدی را که وارد کردید اشتباه باشد ویژوال بیسیک به شما گوشزد می کند.
- برای اجرای برنامه بر روی Run در نوار ابزار ویژوال بیسیک استفاده کنید. یا بر روی F5>> کلیک کنید.
- با انتخاب گزینه Save Project As از منوی File برنامه را ذخیره کنید.
تمرین:
- سعی کنید رنگ زمینه Form وهمچنین Font استفاده شده برای Label و Commandها را تغییر دهید.( به خواص هر کدام نگاهی بیندازید)
- شما میتوانید قبل از کلیک کردن Start Timing بر روی End Timing کلیک کنید. برنامه را جوری تغییر دهید که این عمل اتفاق نیفتد.( به خاصیت Enabled دکمه توجه کنید)
- آیا شما می توانید بدون خارج شدن از برنامه این عمل برای چندین بار انجام دهید؟