جعبه های گفتگو
در این بخش میخواهیم در مورد جعبه های گفتگو صحبت کنم حتما با خود میگویید که جعبه های گفتگو یعنی چی؟
برای ادامه روی "ادامه متن" کلیک کنید.
جعبه های گفتگو
در این بخش میخواهیم در مورد جعبه های گفتگو صحبت کنم حتما با خود میگویید که جعبه های گفتگو یعنی چی؟ اگر با برنامه مایکروسافت کار کرده باشید مانند نرم افزار Paint مشاهده کرده اید زمانی که میخواهید فایلی را باز یا ذخیره کنید جعبه ای مانند شکل زیر (7-1) نمایش داده میشود.در واقع این شکل ها همان جعبه های گفتگو یا Common Dialog Box هستند البته جعبه های گفتگو فقط به باز کردن و ذخیره کردن ختم نمیشود بلکه با استفاده از جعبه های گفتگو میتوانید به کاربر این انتخاب را بدهید که رنگ مورد نظر را یا فونت مورد نظر را انتخاب کند.

طریقه اضافه کردن کنترل جعبه گفتگو
برای استفاده از کنترل جعبه گفتگو لازم نیست که کد نویسی زیادی انجام دهید چون این کار را ویژوال بیسیک راحت کرده است.اگر یک پروژه جدید درست کنید و نگاهی به جعبه ابزار(Toolbox) باندازید هیچ کنترلی که مربوط به جعبه گفتگو باشد پیدا نخواهید کرد.حالا برای اینکه کنترل جعبه گفتگو را به جعبه ابزار ویژوال بیسیک اضافه کنید باید مراحل زیر را دنبال کنید:
ابتدا یک پروژه جدید ایجاد کنید و سپس از منوی Project گزینه Components را کلیک کنید

بعد از اینکه گزینه Components را کلیک کردید پنجره Components باز میشود حالا باید از قسمت Controls گزینه Microsoft Common Dialog Control (6.0)
را تیک زده و دکمه OK را کلیک کنید تا پنجره Components بسته شود.

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

برای اضافه کردن این کنترل به فرم فقط کافی است بر روی کنترل جعبه گفتگو دوبار کلیک کنید تا این کنترل به وسط فرم اضافه شود.
طریقه استفاده از کنترل جعبه گفتگو(Common Dialog)
همانطور به در ابتدای فصل گفتیم جعبه گفتگو فقط برای ذخیره و باز کردن فایل نیست بلکه میتوانید جعبه کنترل رنگ و فونت را هم به کاربر نمایش دهید حالا برای اینکه از تک تک این امکانات استفاده کنیم اجازه دهید که هر کدام را به طور مختصر در مورد خواص و متد های آن صحبت کنیم و یک مثال از هر کدام انجام دهیم:
1.جعبه گفتگوی باز کردن فایل
برای نمایش جعبه گفتگو به کاربر برای انتخاب فایل مورد نظر باید یکسری مراحل را دنبال کنید اول اینکه زمانی که کاربر فایلی را خواست انتخاب کند فقط فایل های مورد نظر برنامه را انتخاب کند(Filter) و یا اینکه وقتی کاربر فایلی را انتخاب کرد به چه صورت تشخیص دهیم که کاربر چه فایلی را انتخاب کرده است(FileName)
در قسمت بالا از دو کلمه Filter و FileName استفاده کردیم این ها خواص مربوط به جعبه گفتگو است اولی که مشخص می کند که چه فایل هایی در جعبه گفتگو نمایش داده شود و دومی هم نام فایل انتخابی را بر گشت می دهد.حالا باهم یک پروژه عملی انجام میدهیم تا بهتر با این جعبه گفتگو آشنا شوید.
پس یک CommandButton به فرم اضافه کنید و در قسمت کد آن کدهای زیر را وارد کنید:
Private Sub Command1_Click()
Dim strFileName As String
With CommonDialog1
.Filter = "BMP (*.BMP)|*.bmp"
.ShowOpen
strFileName = .FileName
If strFileName = "" Then
Exit Sub
End If
End With
End Sub
اگر به قسمت Filter دقت کنید متوجه خواهید شد که جعبه گفتگو چه فایل های را نمایش دهد.در واقع ما کاربر را فقط به فایل های BMP محدود کردیم و فقط میتواند فایلهای از نوع BMP را انتخاب کند.حالا اگر بخواهیم کاربر فایل های دیگر هم مانند JPG راهم انتخاب کند چی؟باید قطعه کد بالا را به صورت زیر تغییر دهید:
Dim strFileName As String
With CommonDialog1
.Filter = "BMP (*.BMP)|*.bmp|JPG (*.JPG) |*.JPG"
.ShowOpen
strFileName = .FileName
If strFileName = "" Then
Exit Sub
End If
End With
دقت کنید که ما برای جدا کردن Filter های مختلف از کاراکتر "|" استفاده کردیم.
بعد اینکه جعبه گفتگو مورد نظر را فیلتر را کردیم نوبت به نمایش جعبه گفتگو میشود حالا با یک دستور ShowOpen جعبه گفتگو مورد نظر را به کاربر نمایش میدهیم شکل

بعد از اینکه جعبه گفتگو را به کاربر نمایش دادیم نوبت به انتخاب فایل کاربر میرسد.بعد از اینکه کاربر فایل مورد نظر را انتخاب کرد نوبت به برگشت دادن نام مورد نظر کاربر میرسد که نام فایل را در متغییری از نوع رشته ذخیره میکنیم.برای اینکه از خواص FileName استفاده میکنیم.در واقع وقتی کاربر فایلی را انتخاب کرد و دکمه Open را کلیک کرد نام فایل به وسیله خواص FileName بر گشت داده میشود و ما این نام فایل را در متغییر ذخیره میکنیم.حالا برای اینکه نام فایل انتخابی کاربر را نمایش دهیم از دستور زیر استفاده میکنیم:
MsgBox strFileName
این دستور نام فایل انتخابی کاربر را به وسیله یک پیغام ساده نمایش می دهد
حالا اگر کاربر فایلی را انتخاب نکرد به چه صورت با آن بر خورد بکنیم؟ برای همین ما در کد با از دستور زیر استفاده کردیم:
If strFileName = "" Then
Exit Sub
End If
در واقع ما با این کار تعیین کردیم که اگر نام فایل خالی بود از روال بیرون بیا و هیچ کاری را انجام نده.
نکته:
در بالا ما از دستور With , End with استفاده کردیم این دستور زمانی به کار میرود که شما میخواهید از خواص یک شی بسیار استفاده کنید به عنوان مثال همین قطعه کدی که برای نمایش جعبه گفتگو نوشتیم اگر از دستور With , End With استفاده نمیکردیم چقدر از باید از اسم CommonDialog1 استفاده میکردیم.
Dim strFileName As String
CommonDialog1.Filter = "BMP (*.BMP)|*.bmp|JPG (*.JPG) |*.JPG"
CommonDialog1.ShowOpen
strFileName = CommonDialog1 .FileName
If strFileName = "" Then
Exit Sub
End If
2.جعبه گفتگوی ذخیره کردن فایل:
جعبه گفتگوی ذخیره کردن فایل هم مانند باز کردن فایل است با این تفاوت که به جای استفاده از دستور ShowOpen از دستور ShowSave استفاده میکنیم مانند زیر:
Dim strFileName As String
With CommonDialog1
.Filter = "BMP (*.BMP)|*.bmp|JPG (*.JPG) |*.JPG"
.ShowSave
strFileName = .FileName
If strFileName = "" Then
Exit Sub
End If
End With
3.جعبه گفتگوی نمایش رنگ:
بعد از اینکه جعبه های گفتگوی فایل را معرفی کردیم نوبت به معرفی جعبه گفتگوی رنگ میرسد.شاید تا به حال در برنامه Paint هم دیده باشید که برای انتخاب رنگ از چه جعبه گفتگویی استفاده میشود.از جعبه گفتگویی مانند شکل زیر استفاده میکنند:

در برنامه هایی که شما می نویسید به راحتی میتوانید این جعبه گفتگو را در هر قسمتی که مایل باشید اضافه کنید تا کاربر راحت تر بتواند رنگ مورد نظر خود را انتخاب کند.پس قطعه کدی می نویسیم که اگر کاربر رنگی را انتخاب کرد رنگ زمینه فرم به رنگ دلخواه کاربر تغییر پیدا بکند:
Private Sub Command1_Click ()
With CommonDialog1
.Color = Form1.BackColor
.ShowColor
Form1.BackColor = .Color
End With
End Sub
در خط اول ما خواص Color را به رنگ زمینه فرم تنظیم کردیم تا اگر کاربر در جعبه گفتگو دکمه Cancel را زد رنگ زمینه هیچ تغییری نکند و در خط بعد هم با دستور ShowColor جعبه گفتگوی رنگ را نمایش دادیم و در آخر هم رنگ زمینه را به رنگ دلخواه کاربر تغییر دادیم.
4.جعبه گفتگوی انتخاب فونت:
و در آخر هم میخواهیم در مورد نحوه نمایش جعبه گفتگو فونت به کاربر صحبت کنیم.
برای نمایش جعبه گفتگو فونت مانند جعبه گفتگو رنگ است با این تفاوت که در نمایش جعبه گفتگو فونت یکسری خواص دیگر هم باید تنظیم شوند تا جعبه گفتگوی فونت نمایش داده شود به قطعه کد زیر دقت کنید:
With CommonDialog1
.FontName = Label1.Font.Name
.Flags = cdlCFBoth
.ShowFont
Label1.Font.Name = .FontName
Label1.Font.Bold = .FontBold
Label1.Font.Italic = .FontItalic
Label1.Font.Size = .FontSize
End With
در خط اول خواص FontName جعبه گفتگو را به FontName Label1 تنظیم کردیم و همینطور که در خط بعد می بینید ما از یک خواص جدید استفاده کردیم به نام Flags در واقع به وسیله این Flags ما به جعبه گفتگو گفتیم که چه فونت هایی را نمایش بدهد.اگر شما خواص Flags را مشخص نکنید با یک پیغامی مواجه میشوید که به شما میگوید هیچ فونتی در سیستم نصب نیست.در خط سوم هم جعبه گفتگو فونت را نمایش دادیم.و همین طور که در خطهای بعدی می بینید یکسری خواص دیگر Label1 را هم تغییر دادیم از جمله: Bold , Italic , Size
