آموزش ویژوال بیسیک

آموزش قدم به قدم ویژاول بیسیک 2015 از مبتدی تا پیشرفته

آموزش ویژوال بیسیک

آموزش قدم به قدم ویژاول بیسیک 2015 از مبتدی تا پیشرفته

طبقه بندی موضوعی

درس چهارم: گرفتن ورودی و نمایش خروجی

چهارشنبه, ۷ بهمن ۱۳۹۴، ۰۶:۱۰ ب.ظ

درس چهارم: گرفتن ورودی و نمایش خروجی

4-1 مقدمه

  در درسهای قبل با روش تعریف انواع متغیر آشنا شدیم. در این درس به روش اتصال رشته ها اشاره و به روشهای دریافت ورودی از کاربر و نمایش خروجی می پردازیم.

4-2 اتصال انواع داده ها به همدیگر

  منظور از اتصال کنار هم قرارگرفتن دو رشته یا محتویات دو متغیر است.

4-2-1 اتصال رشته ها به همدیگر

  برای این کار از علامت + یا & مابین رشته ها استفاده میکنیم یعنی:

“Hello ” + “World” => output:  Hello World

4-2-2 اتصال متغیرهای رشته ای هم دیگر

برای این کار هم از علامت + یا & بین متغیرهای رشته ای استفاده میکنیم:

S1 = “Ali “

S2 = “Reza”

S3 = s1 + s2 => output: Ali Reza

4-2-3 اتصال متغیر به یک رشته و یا برعکس

برای این کار نیز میتوان از علامت + یا & بین رشته و متغیر استفاده کرد.

S1 = “Hello “

S2 = S1 + “Ali Reza!” => Output: Hello Ali Reza

4-3 دریافت ورودی

4-3-1 استفاده از تابع ()InputBox

  این دستور برای دریافت ورودی از کاربر به هنگام اجرا به کار میرود. این تابع باید به همراه یک متغیر از نوع داده ی مناسب استفاده شود تا ورودی را درون آن متغیر قرار دهد. به این صورت که به هنگام اجرای این دستور، کادری باز شده و با نمایش پیغام مناسب از کاربر درخواست وارد کردن داده را مینماید. شکل ساده ی سینتکس این تابع به شکل زیر است:

Dim varibleName As Datatype
varibleName = Inputbox(“Some Message”, “Title of Message”)

  برای مثال اگر بخواهیم نام کاربر را در هنگام اجرای برنامه دریافت کنیم باید یک متغیر از نوع رشته (String) تعریف کنیم و آن را برابر با نتیجه ی تابع ()Inputbox قرار دهیم تا زمانی که کاربر نامش را وارد کرد، نتیجه در داخل متغیر رشته ای قرار گیرد:

Dim Username As string
Username = Inputbox(“Hello Student! What is your name?” , “Welcome”)

4-3-2 استفاده از شی TextBox

  آبجکت یا ابزار TextBox یا همان جعمه ی متن، شاید پر کاربردترین روش دریافت داده در هنگام اجرا باشد! این شی در هنگام استفاده از انواع برنامه ها در انواع پلتفرمها به روشهای گوناگون ظاهر میشود. برای مثال فیلد جست و جوی گوگل، فیلد جست و جوی ویندوز و هزاران مثال دیگر. این شی را میتوانید از جعبه ابزار IDE ویژوال بیسیک 2015 پیدا کنید و مانند یک دکمه یا هر شی دیگری آن را روی فرمتان قرار دهید و مکان و اندازه ی آن را تعریف کنید. (شکل 1-4 )

Textbox

شکل 1-4 قرار دادن ابزار TextBox بر روی فرم

 

  توجه کنید که برای استفاده از این شی باید نام آن را درست وارد کنید. به صورت پیش فرض نام هر TextBox با یک عدد در جلوی عبارت TextBox مشخص میشود. مثلا اگر سه TextBox به فرم خود بیافزایید، اولی Textbox1 دومی Textbox2 و سومی Textbox3 نام خواهند گرفت. پس بعد از قرار دادن این شی روی فرم، به پنجره ی Properties بروید و از قسمت Design ، نام شی را از فیلد (Name) بخوانید و در صورت تمایل آن را به دلخواه تغییر دهید. این نام صرفا برای استفاده ی شما در کدنویسی میباشد و در هنگام اجرا برای کاربر قابل دیدن نیست. TextBox علاوه بر دریافت داده برای نمایش خروجی هم استفاده میشود اما کاربر آن برای دریافت ورودی بیشتر و منطقی تر است. کارکرد TextBox به این صورت است که پس از اینکه کاربر ورودی خود را در داخل این شی وارد کرد، این ورودی در خصیصه ی Text این شی ذخیره میشود و قابل دسترسی میباشد. یعنی هرچه کاربر در TextBox شما وارد کند در داخل TextBox.Text قرار میگیرد و شما میتوانید آن را داخل متغیری ریخته یا از آن به صورت مستقیم استفاده کنید. مثلا در مثال قبلی ما یک متغیر از نوع رشته ای تعریف کردیم تا نام کاربر را از ورودی بگیریم. حالا با شی TextBox همین کار را انجام میدهیم:

Dim Username As string
Username = Textbox1.Text

  در مثال بالا یک Textbox از جعبه ابزار روی فرم قرار دادیم و نام آن به صورت پیشفرض Textbox1 شد. سپس یک متغیر از نوع String تعریف کردیم و محتویات Textbox1 را که در خصیصه ی Text آن ذخیره میشود به متغیر خود نسبت دادیم.

  این دو روش بیشترین استفاده را در دریافت داده از کاربر به هنگام اجرا دارند. فعلا همین دو روش برای دریافت ورودی برای ما کافی ست.

4-4 نمایش خروجی

  برای نمایش خروجی نیز روشهای مختلفی وجود دارد که پرکاربرد ترین انها در ویژوال بیسیک عبارتند از:

4-4-1 استفاده از تابع ()MsgBox

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

Msgbox(“Some Message”, [Styles] , [“Title of Message”])

  محتویات داخل براکتها اختیاری ست اما بهتر است از آنها استفاده کنید. توجه کنید که هر سه قسمت متن، استایل و عنوان، با یک کاما از هم جدا شده است. قرار دادن آن را فراموش نکنید. به جای Title of Message یک عنوان مناسب برای پیغام انتخاب و داخل کوتیشن ها تایپ کنید.

  Style مشخص کننده ی جزئیات بیشتر مانند نمایش آیکن در پیغام و نمایش دکمه های مختلف است. برای استایل از جداول 4-1 تا  4-3 کمک بگیرید. توجه کنید که هر استایل را با یک علامت پلاس جدا کنید و کل مجموع استایل ها از باقی قسمتهای پیغام با کاما جدا میشود. مثلا به جای استایل میتوان نوشت: vbOkOnly و اگر آیکن هم بخواهید اضافه کنید باید بنویسید:

 vbOkOnly + vbInformation

  همانطور که گفته شد هر دکمه مقداری را باز میگرداند که میتونیم آن را در متغیری ذخیره و برای گرفتن تصمیم مناسب در برنامه با توجه به انتخاب کاربر استفاده کنیم. این مقادیر برای هر دکمه در جدول 2-4 آمده است.

  به جداول زیر توجه کنید.

نتیجه

دستور

فقط یک دکمه ی OK را نمایش میدهد.

vbOkOnly

دکمه های YES و NO را نمایش میدهد.

vbYesNo

دکمه های OK و Cancel را نمیاش میدهد.

vbOkCancel

دکمه های Retry و Cancel را نمایش میدهد.

vbRetryCancel

دکمه های Abort ، Retry و Ignore را نمایش میدهد.

vbAbortRetryIgnore

جدول 1-4 برخی دکمه های پر کاربرد

مقدار بازگشتی

دکمه

1

OK

2

Cancel

3

Abort

4

Retry

5

Ignore

6

Yes

7

No

جدول 2-4 مقدار بازگشتی دکمه ها

تصویر آیکن

کارکرد

دستور

vbCritical

آیکن خطا

vbCritical

vbQuestion

آیکن سوال

vbQuestion

vbInformation

آیکن نمایش اطلاعات

vbInformation

vbWarning

آیکن هشدار

vbExclamation

جدول 3-4 آیکن های تابع ()Msgbox

  قبل از اینکه کار را سخت کنیم بیایید با استفاده از تابع دریافت ورودی یعنی ()InputBox نام کاربر را بپرسیم و سپس پیغام خوش آمدید برای او نمایش دهیم. طبق معمول یک پروژه ی ویژوال بیسیک از نوع Windows App باز میکنیم و نام دلخواهی برای آن بر میگزینیم. من نام پروژه را Test_Project انتخاب کردم. یادتان باشد بهتر است در نام پروژه فاصله نباشد به جای آن از اندرلاین استفاده کنید. سپس روی فرم یک بار کلیک میکنیم تا انتخاب شود. در پنجره ی Properties در قسمت Appearance و فیلد Text نامی برای فرم انتخاب میکنیم من نام فارسی "خوش آمدید" را انتخاب کردم. در درس دوم با رخدادها آشنا شدیم. بنابراین یک رویداد Load برای فرم تعریف میکنیم. از آنجایی که برای هر فرمی رویداد پیشفرض رویداد Load میباشد ، برای سادگی کار فقط کافیست روی جایی خالی از فرم دو بار کلیک کنید. بلافاصله پنجره ی کدنویسی برای این فرم باز شده و کدهای مورد نیاز برای تعریف رویداد  Load برای این فرم به صورت خودکار در پنجره ی کد نویسی نوشته شده است. مابین Private Sub… و End Sub کد خودمان را باید تایپ کنیم. اول یک متغیر از نوع رشته ای تعریف کنید مطابق کد زیر:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim username As String
    End Sub

  سپس از تابع ()nputbox استفاده میکنیم و با نمایش پیغام مناسبی به زبان فارسی از کاربر نام او را درخواست میکنیم. مقدار بازگشتی این تابع را به متغیری که تعریف کرده ایم نسبت میدهیم: 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim username As String
        username = InputBox("سلام","اسم شما چیست؟")
    End Sub

  حالا نوبت به استفاده از تابع ()Msgbox رسیده. با توجه به جداول 1-4  تا 3-4 از دستور ()Msgbox برای نمایش پیغام، آیکن و دکمه های مناسب استفاده میکنیم:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim username As String
        username = InputBox("سلام","اسم شما چیست؟")
        MsgBox(username + " عزیز! به این برنامه خوش آمدی.", vbOKOnly + vbCritical + vbMsgBoxRtlReading, "خوش آمدید")
    End Sub

  پس از اجرا خروجی برنامه به این صورت خواهد بود  (شکل 2-4)

Example4-1

شکل 2-4 اجرای برنامه

  

  4-3-2 استفاده از شی Label

  این ابزار را نیز مانند Textbox از جعبه ابزار بر روی فرم قرار میدهیم. همچنین Label درست مانند Textbox در نام گذاری اتوماتیک عمل میکند و هر لیبل که به فرم اضافه میکنیم به ترتیب ...,label1, label2, label3 نام خواهد گرفت. ما باید از نام درست آن استفاده و یا در صورت تمایل نام آن را تغییر دهیم.

Label

شکل 3-4 قرار دادن ابزار Label بر روی فرم

 

  برخلاف Textbox که هم برای گرفتن داده و هم نمایش اطلاعات میتواند به کار رود، label فقط و فقط برای نمایش اطلاعات استفاده میشود و امکان تغییر محتویات آن در زمان اجرا برای کاربر وجود ندارد. این شی نیز مانند Textbox دارای خصیصه ای به نام Text است که باید برای نمایش خروجی به کاربر این خصیصه را تغییر دهیم. برای مثال بیایید یک فرم با یک TextBox و یک Label و نیز یک دکمه طراحی کنیم تا زمانی که کاربر نام خود را در فیلد Textbox وارد میکند و بر روی دکمه کلیک میکند یک پیغام مناسب برای او در Label چاپ شود. (همان مثال بالا بدون استفاده از توابع)

  برای این کار هر کدام از اشیاء مذکور را در فرم قرار داده و اندازه و مکان آنان را تنظیم میکنیم. از پنجره ی خصوصیات خاصیت Text دکمه را به "تایید" تغییر دادم. معمولا بهتر است خاصیت Text را برای Label ها خالی بگذاریم تا چیزی جز آنچه میخواهیم نمایش داده نشود. Text برای label به طور پیشفرض همان نام آن یعنی Label1 قرار گرفته است. برخلاف خاصیت Text که برای هر شی حتما باید وجود داشته باشد، شما میتوانید خاصیت Text هرکدام از اشیاء مانند Label را خالی بگذارید. پس فیلد Text را برای Label1 خالی میکنیم. چون میخواهیم فارسی بنویسیم، بهتر است خاصیت راست به چپ را نیز برای Label1 فعال کنیم. پس از پنجره ی خصوصیات label1 ، از قسمت Appearance خصیصه ی RightToLeft را پیدا کنید و منوی بازشونده ی جلوی آن، YES را انتخاب کنید. حالا دوبار روی دکمه کلیک میکنیم تا رویداد کلیک برای این دکمه فعال شود. در پنجره ی کد هرچه مابین Private Sub CommandButton1_Click… و End Sub بنویسیم، موقعی اجرا میشود که کاربر در زمان اجرا دکمه را کلیک کند. این کد را مینویسیم:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Label1.Text = "سلام " + TextBox1.Text +  "عزیز! به آموزش ویژوال بیسیک 2015 خوش آمدی."
    End Sub

Examle4-2

شکل 4-4

 

تمرین : برنامه ای بنویسید که با استفاده از تابع Inputbox نام کاربر را دریافت و آن را در یک TextBox نمایش دهد. 

نظرات (۲)

سلام.من میخاستم بدونم ایا میشه مقادیر خروجی مورد نظر رو داخل جدول شیت بندی شده ذخیره کرد و بعد پرینت گرفت؟اگه میشه چطور؟ممنون

مثل آموزشهای قبلی عااااالی بود.

خداقوت