قدیمی 07-20-2008, 12:45 PM   #11 (permalink)
برنامه نویس ویژوال بیسیک(مدیر افتخاری)
Junior Member
 
farzad آواتار ها
 
تاریخ عضویت: Apr 2008
پست ها: 50
تشکر: 0
تشکر شده 38 بار در 34 پست
Activity Longevity
1/20 17/20
Today پست ها
sssssss50
farzad به Yahoo ارسال پیام
پیش فرض کنترل های Check Box و Option Button

به اطمينان، از زمانی که با ويندوز کار می کنيد، از کنترلهای Check Box و Option Box استفاده بسياری برده‌ايد.اگر بخواهيم به کاربر (User) اين امکان را بدهيم که از بين چند گزينه، يک ، دو يا چند مورد را انتخاب کند و يا حتی هيچ يک را انتخاب نکند از کنترل Check Box به شکل (1)، و اگر بخواهيم کاربر، از ميان چند گزينه، يک و فقط يک گزينه را انتخاب کند، از کنترل Option Button (کليدهای راديويی) به شکل (2)، اين دو کنترل VCL، مشخصه ای به نام Value دارندکه از صفر يا يک بودن مقدار آن، می توانيم به انتخاب نشده بودن و انتخاب شده بودن آن گزينه خاص، پی ببريم. لذا اگر برروی يک فرم چند Check Box وجود داشت، می تواند Value هر يک از آنها صفر يا يک باشد، اما اگر برروی فرمی، چند Option Button وجود داشت، تنها يکی از آنها می تواند Value برابر يک داشته باشد و وقتی کاربر، يکی ديگر را انتخاب می کند، به طور خودکار، Value قبلی صفر و Value کنترل انتخاب شده، يک می شود.
VB دارای دو ثابت (Constant) به نامهای VBChecked و VBUnchecked می باشد که به ترتيب برابر يک و صفر می باشند که می توانيم مقدار Value کنترلهای ذکر شده را با اين ثوابت مقايسه کنيم.
کنترل Check Box ، علاوه بر دو مقدار صفر و يک برای مشخصه Value ، مقدار برابر 2 نيز برای آن دارد که اگر به آن Set شود، اين کنترل، خاکستری رنگ (Gray) می شود که معمولاً در ويندوز نشان از پيش فرض بودن دارد. همچنين کنترل مذکور، مشخصه ای هم به نام Style دارد که اگر مقدار آن را از صفر به يک تغيير دهيم، شکل Check Box به شکل دکمه ای در می آيد که يک بودن مقدار Value، باعث فشرده شدن کليد و صفر بودن آن باعث بالا بودن کليد می‌شود.
نکته آخری که در اينجا متذکر می شوم اينست که طبق قراری که از ابتدا گذاشته بوديم، سه حرف اول مشخصه Name کنترلها بهتر است متناسب با کنترل بگذاريم. برای Check Boxها، نام را با chk و برای Option Buttonها، نام را با opt آغاز می کنيم و ادامه نامشان را معمولاً با Caption آنها کامل می کنيم. لازم به ذکر است که مشخصه Caption هر دو کنترل مذکور، حاوی آن عبارتی است که کنار آن کنترل برای معرفی آن به کاربر می آيد.

شکل 1

شکل 2

farzad آنلاین نیست.   پاسخ با نقل قول
کاربرانی که از farzad تشکر کرده اند:
rahimonline (07-20-2008)
قدیمی 07-20-2008, 12:46 PM   #12 (permalink)
برنامه نویس ویژوال بیسیک(مدیر افتخاری)
Junior Member
 
farzad آواتار ها
 
تاریخ عضویت: Apr 2008
پست ها: 50
تشکر: 0
تشکر شده 38 بار در 34 پست
Activity Longevity
1/20 17/20
Today پست ها
sssssss50
farzad به Yahoo ارسال پیام
پیش فرض مثالی از کنترل های Check Box و Option Button

فرض کنيد بخواهيم فرمی شامل يک Text Box و دو Check Box با عنوانهای Bold و Italic داشته باشيم که اگر Bold، مارک خورده بود، متن داخل Text Box به صورت Bold درآيد و اگر Italic مارک خورده بود به صورت Italicفرم نهايی آن را در شکل 6 می توانيد ببينيد.

Private Sub chkBold_Click ()
IF chkBold.Value = VBchecked Then
txtDisplay.FontBold = True
Else
txtDisplay.FontBold = False
End IF
End Sub

Private Sub chkItalic_Click ()
IF chkItalic.Value = VBchecked Then
txtDisplay.FontItalic = True
Else
txtDisplay.FontItalic = False
End IF
End Sub
توجه داشته باشيم که هرگاه کاربر بر روی يک Check Box و يا يک Option Button کليک کند و يا بوسيله کليد Tab ، فوکوس را به آن دهد و روی آن کليد Space bar را بزند، رويداد Click از اين دو کنترل روی خواهد داد.
farzad آنلاین نیست.   پاسخ با نقل قول
کاربرانی که از farzad تشکر کرده اند:
rahimonline (07-20-2008)
قدیمی 07-20-2008, 12:47 PM   #13 (permalink)
برنامه نویس ویژوال بیسیک(مدیر افتخاری)
Junior Member
 
farzad آواتار ها
 
تاریخ عضویت: Apr 2008
پست ها: 50
تشکر: 0
تشکر شده 38 بار در 34 پست
Activity Longevity
1/20 17/20
Today پست ها
sssssss50
farzad به Yahoo ارسال پیام
پیش فرض آرايه ای از کنترلها

حتماً يکی از الفاظی که در برنامه نويسی، از آن بهره بسياری برده ايد، آرايه می باشد. آرايه ها معمولاً خانه هايی از حافظه اند که تحت يک نام واحد و با انديس های متفاوت نامگذاری می شوند. در Basic هم آرايه ها (مانند ساير زبانهای برنامه نويسی) کاربرد فراوانی دارند که مثلاً توسط دستور Dim A (10, 10) As Integer يک آرايه دو بعدی (در واقع يک ماتريس) به نام A از نوع داده Integer تعريف می شود که سطر وستون آن دارای انديس های 0 تا 10 می باشد و توسط مثلاً A (5, 8) به خانه سطر 5 و ستون 8 از آن دسترسی خواهيم يافت.
در VB نيز (از آنجا که VB از Basic برای کدنويسی استفاده می کند) ، آرايه ها، تعريف آنها و نحوه دسترسی به خانه های آن به طريق فوق می باشد. اما آنچه در اينجا متفاوت است اينکه در VB می توان از کنترلها نيز يک آرايه ساخت. مثلاً چند Command Button با يک نام خاص و با انديسهای متفاوت ايجاد کرد تا بتوان کدهای واحدی را با تفاوت بسيار کم برای همه شان نوشت.
اگر از يک کنترل کپی کنيم (در حالی که فوکوس در Design Time به آن است، کليدهای CTRL+C را فشار دهيم) و سپس آن را در همان فرم Paste نماييم (کليدهای CTRL+V را فشاردهيم) ، پيغامی بر روی صفحه نمايش ظاهر می‌شود مبنی بر اينکه "يک کنترل ديگر با همين نام در فرم وجود دارد، آيا می خواهيد آرايه ای از کنترل ايجاد کنيد؟" که می توانيد جواب No به آن بدهيد. اما اگر به اين پيغام دکمه Yes را پاسخ دهيد، VB به طور خودکار نام هر دو را يکسان (و به نام کنترل کپی شده) در نظر می گيرد و Index کنترل اول را صفر و Index کنترل دوم را يک قرار می دهد (Index ، يکی از مشخصه (Property)های تمام کنترل ها می باشد).
می توان اينکار را دستی نيز انجام داد. يعنی دو کنترل (يا چند کنترل) خاص را يک نام واحد دهيم که در اينصورت VB پس از دادن يک پيغام مبنی بر همين موضوع، آن دو کنترل (يا چند کنترل) را به صورت آرايه کنترل تبديل خواهد کرد و به هر يک Index خاصی را نسبت خواهد داد.
اگر آرايه کنترل ايجاد کنيم، هر رويداد (Event) ای که بر روی هريک از عناصر رخ دهد (مانند Click و غيره) ، روی تمام آرايه صورت مي گيرد و مقدار Index مربوط به عضوی که رويداد بر روی آن صورت گرفته، به عنوان يکی از پارامترهای پروسيجر آن، باز می گردد. برنامه بعد را بنويسيد تا با نحوه کار آرايه کنترلها آشنا شويد.
farzad آنلاین نیست.   پاسخ با نقل قول
کاربرانی که از farzad تشکر کرده اند:
rahimonline (07-20-2008)
قدیمی 07-20-2008, 12:48 PM   #14 (permalink)
برنامه نویس ویژوال بیسیک(مدیر افتخاری)
Junior Member
 
farzad آواتار ها
 
تاریخ عضویت: Apr 2008
پست ها: 50
تشکر: 0
تشکر شده 38 بار در 34 پست
Activity Longevity
1/20 17/20
Today پست ها
sssssss50
farzad به Yahoo ارسال پیام
پیش فرض مثال: طراحی يک ماشين حساب ساده


فرض کنيد بخواهيم يک ماشين حساب ساده، مطابق آنچه در شکل 7 می‌بينيد، طراحی کنيم:
يک Label به نام lblDisplay به عنوان نمايشگر ماشين حساب و با Caption برابر مقدار" 0" (زيرا مقدار اوليه ماشين‌حساب‌ها صفر میباشد) در محل خود قرار می دهيم.همچنين يکCommandButtonبه نام cmdequal به عنوان دکمهمساوی" و با Caption برابر "= " نيز در محل مخصوص خود قرار می دهيم.
حال ده عدد Command Botton ديگر با Caption های به ترتيب برابر " 0" تا "9 " را در جای خود قرار می دهيم و سپس نام همه اين ده دکمه را به نام cmdNumber تغيير می دهيم. در اين صورت همانطور که گفته شد، VB اين ده کنترل را به صورت آرايه کنترلی (Control Array) در نظر خواهد گرفت (به پيغام داده شده با همين مضمون جواب Yes دهيد).
به همين ترتيب چهار CommandButton ديگر را با Captionهای "+ " و "- " و "* " و "/ " و با نام يکسان cmdOprator به عنوان دکمه های چهار عمل اصلی به صورت آرايه کنترلی در محل های خود قرار می دهيم.
حال کافی است در يونيت مربوط به اين فرم، چنين کدنويسی کنيم (توجه داشته باشيد که متغيرهاي x و y و op در سطح فرم (Form Level) تعريف شده اند و لذا مقدار آن در تمام فرم قابل دسترسی خواهد بود) :
Option Explicit
Dim x,y As Integer
Dim op As String
Private Sub cmdNumber_Click (Index As Integer)
IF lblDisplay = “Ø” then lblDisplay = “”
lblDisplay = lblDisplay + cmdNumber(Index).Caption
End Sub
Private Sub cmdOprator_Click (Index As Integer)
x = Val(lblDisplay)
op = cmdOprator(Index).Caption
lblDisplay = “Ø”
End Sub
Private Sub cmdEqual_Click ( )
y = Val (lblDisplay)
Select Case op
Case “+”
lblDisplay = x + y
Case “-”
lblDisplay = x - y
Case “*”
lblDisplay = x * y
Case “/”
lblDisplay = x / y
End Select
End Sub

توجه داريد که:
  1. <LI dir=rtl>در رويدادهايی که مربوط به آرايه های کنترلی (يعنی cmd Number و cmdoperator ) است، يک پارامتر به نام Index در آن وجود دارد که شماره Index (انديس) کليدی که فشرده شده را برمی‌گرداند. و لذا مثلاً cmdOprator(Index).Caption برابر "+" خواهد بود، اگر کليد + فشرده شود و برابر "- " خواهد بود، اگر کليد – زده شود و ...
    <LI dir=rtl>مشخصه (Property) پيش فرض برای Labelها Caption است و لذا هر جا lblDisplay ذکر شده است، توسط VB مانند lblDisplay.Caption در نظر گرفته می شود.
  2. توسط دستور Select Case، يک متغير (که نام آن جلوی دستور Select Case نوشته می شود) با مقادير مختلفی (که جلوی دستورات Case بعدی نوشته می شود) چک می شود که اگر برابر هر يک از اين مقادير بود، دستور پس از همان Case اجرا می شود.
farzad آنلاین نیست.   پاسخ با نقل قول
کاربرانی که از farzad تشکر کرده اند:
rahimonline (07-20-2008)
قدیمی 07-20-2008, 12:49 PM   #15 (permalink)
برنامه نویس ویژوال بیسیک(مدیر افتخاری)
Junior Member
 
farzad آواتار ها
 
تاریخ عضویت: Apr 2008
پست ها: 50
تشکر: 0
تشکر شده 38 بار در 34 پست
Activity Longevity
1/20 17/20
Today پست ها
sssssss50
farzad به Yahoo ارسال پیام
پیش فرض مثالی ديگر: استفاده از Option Buttonها


همانطور که قبلاً نيز ذکر شد، هرگاه بخواهيم کاربر (User) از بين چند مورد، يک و فقط يک مورد را انتخاب کند (مثلاً سؤال چهار گزينه ای و ...) از کنترل Option Button استفاده می کنيم.
کنترل مذکور (مانند CheckBoxها) دارای مشخصه ای به نام Value می باشد که اگر مقدار آن برابر True باشد، انتخاب شده و در صورتی که برابر False باشد، انتخاب نشده خواهد بود. بنابراين اگر برروی فرمی مثلاً دو OptionButton قرار دهيم، مسلماً اگر مقدار Value از يکی را True کنيم، به طور خودکار مقدار Value برای ديگری False خواهد شد.زيرا فقط يکی از OptionBotton ها را می توان انتخاب کرد.
حال اگر بخواهيم OptionButtonها را روی يک فرم به صورت موضوعی دسته بندی کنيم و از هر دسته بتوانيم يکی را انتخاب کنيم، بايد به تعداد دسته ها، کنترل Frame به شکل برروی فرم قرار دهيم و آنگاه OpiontButtonها را بر روی Frameها (نه با دابل کليک بلکه با انتخاب کنترل OptionButton و قرار دادن آن بوسيله Drag & Drop روی Frame) قرار می دهيم و سپس می توان Caption مربوط به Frameها (آن چيزی که به عنوان تيتر در بالای هر فريم نوشته می شود) و OptionButtonها (آن چيزی که جلوی هر Option Button برای معرفی آن نوشته می شود) را به دلخواه تغيير داد.
يک Label به نام lblDisplay و دو فريم به نامهای fraProcessor و fraOS بر روی صفحه قرار می دهيم. بر روی fraProcessor (و بوسيله انتخاب کنترل و Drag & Drop بر روی فريم) ، سه OptionButton به نامهای واحد optProcessor و با Captionهای Pentium، Pentium II و Pentium III قرار می دهيم. همچنين بر روی fraOS نيز سه OptionButton ديگر به نامهای واحد optOS و با Captionهای Windows98، Windows2000 و WindowsNT قرار می دهيم. (توجه داريم که در اينصورت دو Control Array به نامهای optProcessor و optOS ساخته ايم).
حال کدهای زير را در يونيت اين فرم می نويسيم:
Option Explicit
Dim proc As string
Dim os As string

Private Sub Clicked ( )
lblDisplay = “You select” + proc + “and” + os
End Sub

Private Sub Form1_load ( )
optProcessor(Ø).Value = True
optOS(Ø).Value = True
End Sub

Private Sub optOS_Click (Index As Integer)
os = optOS(Index).Caption
Call Clicked
End Sub

Private Sub optProcessor_Click (Index As Integer)
proc = optProcessor(Index).Caption
Call Clicked
End Sub
توجه داريم که:
  1. <LI dir=rtl>
    روال clicked در برنامه فوق هرگاه فراخوانی شود پيغام مناسب را در lblDisplay نمايش خواهد داد.
    <LI dir=rtl>رويداد load برای يک فرم بلافاصله پس از load شدن آن فرم روی می دهد. در Event Procedure مربوط به رويداد load از Form1 در برنامه فوق، دستور داده ايم که اولين OptionButton هر فريم (با انديس برابر صفر) را انتخاب شده نمايد.
  2. در رويدادهای Click مربوط به آرايه های optOS و optProcessor دستور داده ايم که مقدار Caption هر OptionButtonای که کليک شده را (توسط مثلاً optOS(Index).Caption ) در متغيرهای os و proc قرار دهد و سپس روال Clicked که برای نمايش بر روی label بود را فراخوانی نمايد.
farzad آنلاین نیست.   پاسخ با نقل قول
کاربرانی که از farzad تشکر کرده اند:
rahimonline (07-20-2008)
قدیمی 07-20-2008, 12:50 PM   #16 (permalink)
برنامه نویس ویژوال بیسیک(مدیر افتخاری)
Junior Member
 
farzad آواتار ها
 
تاریخ عضویت: Apr 2008
پست ها: 50
تشکر: 0
تشکر شده 38 بار در 34 پست
Activity Longevity
1/20 17/20
Today پست ها
sssssss50
farzad به Yahoo ارسال پیام
پیش فرض شبيه سازي عمل Drag & Drop


فرض كنيد بخواهيم برنامه اي بنويسيم كه ظاهري شبيه آنچه در شكل 9 ميبينيد داشته باشد. و بتوانيم تصوير داخل PictureBox مبداُ (سمت چپ) را بوسيله Drag & Drop به PictureBox مقصد (سمت راست) منتقل كنيم.

شکل 9
ابتدا دو PictureBox (كه كنترل آن در ToolBox به شكل مي باشد) را در مكانهاي خود قرار داده و مشخصه Name آنها را picSource و picTarget مي گذاريم. براي نمايش متني كه در پايين شكل 9 مي بينيد نيز مي توانيم از يك 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 نيز استفاده كرد.
farzad آنلاین نیست.   پاسخ با نقل قول
کاربرانی که از farzad تشکر کرده اند:
rahimonline (07-20-2008)
قدیمی 07-20-2008, 12:51 PM   #17 (permalink)
برنامه نویس ویژوال بیسیک(مدیر افتخاری)
Junior Member
 
farzad آواتار ها
 
تاریخ عضویت: Apr 2008
پست ها: 50
تشکر: 0
تشکر شده 38 بار در 34 پست
Activity Longevity
1/20 17/20
Today پست ها
sssssss50
farzad به Yahoo ارسال پیام
پیش فرض استفاده از منو در فرمها


لابد از اهميت فوق العاده زياد منوها در ويندوز مطلع هستيد. منوها علاوه بر تنوع و زيبايي فرم‌ها، به شلوغ نشدن يك فرم توسط دكمه هاي زياد نيز كمك مي‌كنند.
براي درست كردن منو براي يك فرم از MenuEditor كه در منوي Tools قرار دارد استفاده مي كنيم. همچنين MenuEditor يك دكمه فوري نيز بر روي ميله ابزار استاندارد VB به شكل دارد كه با كليك بر روي آن نيز پنجره MenuEditor باز مي شود. اين پنجره مانند شكل 10 مي باشد:

شکل 10
در پنجره مذكور كافيست عنوان منوي اول (مثلاMenu1) را در كادر Caption بنويسيم و مانند ساير objectهاي VB به اين منو هم يك نام (مثلاmnuMenu1) در كادر Name وارد كنيم. حال براي وارد كردن نام و عنوان منوي بعدي كافيست كليد Next را بزنيم. اما معمولا منوي بعدي، آيتمي از منوي قبلي خواهد بود. اگركليدرا بزنيم، منوي جاري به عنوان زير منوي قبلي محسوب خواهد شد. پس از وارد كردن اولين آيتم كافيست بوسيله دكمه Next آيتم هاي بعدي اولين منو را نيز وارد كنيم. اگر يكي از آيتم ها خود شامل زير آيتم هايي بود باز هم مي توان از كليد سود برد. و بالاخره براي اينكه به سراغ منوي دوم برويم لازم است از كليدبه تعدادي استفاده كنيم كه ديگر زيرمنوي يك منوي ديگر نباشد و به همين ترتيب ساير منوها و آيتمها را نيز نامگذاري و عنواندهي ميكنيم و ساختار مورد نظرمان را براي منوها ايجاد ميكنيم.
لذا اگر منوها را در MenuEditor طوري وارد كنيم كه پنجره پايين MenuEditor مطابق آنچه در شكل 10 ميبينيد، شود،انتظار داريم در هنگام اجرا، فرمی شبيه آنچه در شکل 11 می بينيد، حاصل شود:

شکل 11
توجه داشته باشيد كه در MenuEditor علاوه بر آنچه تابه‌حال گفته شد:
• دكمه Delete براي پاك كردن يك منو (يا آيتم) استفاده مي شود.
• دكمه Insert براي افزودن يك منو (يا آيتم) ميان دو منو (يا آيتم) ديگر استفاده مي شود
• Check Boxهاي Visible و Enable به ترتيب اگر انتخاب نشده شوند، منوي مذكور ديده نمي شود و يا اينكه فقط غيرفعال (و به رنگ خاكستري) خواهد شد.
• Check Box با عنوان Checked اگر انتخاب شود، باعث خواهد شد تا كنار آن منو (آيتم) يك "چك‌مارك" ديده شود. (معمولا اين مشخصه در Run Time و بر حسب نياز تنظيم مي شود)
• توسط Shortcut مي توانيم يك ميانبر (Shortcut) براي يكي از آيتم‌ها درست كنيم..
• توسط Index مي توانيم آرايه اي از منوها را طراحي نماييم ( همانطوری که آرايه ای ازساير کنترلها درست می کرديم، يعنی بايد نام دو يا چند منو را يک نام واحد بگذاريم و Index متفاوت به هريک بدهيم.)
• و توسط NegotiatePosition مي‌توان نوع چيدن آيتم‌ها (راست چين، چپ چين، وسط چين) را تعيين نمود.
چند تذكر:
• براي دستيابي به مشخصه هاي منوها نيز مانند ساير كنترلها از نام آنها و يك نقطه(Dot) و سپس نام مشخصه مورد نظر استفاده مي كنيم. مثلا اگر منويي به نام mnuOpen داشته باشيم و بخواهيم آن را غيرفعال و يا مارك‌دار نماييم به ترتيب از دستورات زير استفاده خواهيم كرد:
mnuOpen.Enable = False
mnuOpen.Checked = True
• مشخصه WindowList در بحث MDI Forms خواهد آمد و از مشخصه HelpContentID نيز تنها زماني كه يك فايل HLP داشته باشيم مي‌توانيم استفاده كنيم.
• اگر بخواهيم بين دو آيتم از منويي يك خط جداكننده آورده شود (آنچه در ويندوز براي جداكردن بخشهاي مختلف يك منوي خاص معمول است) كافي است بين آن دو آيتم، يك آيتم Insert نماييم، نام آن را يك نام دلخواه (مثلا mnuLine) و عنوان (Caption) آن را يك منفي (كاراكتر "-" يا اصطلاحا Dash) بگذاريم.
• اگر بخواهيم براي شي خاصی يك PopUpMenu طراحي كنيم (منوهاي بازشونده‌اي كه وقتي بر روي شي كليك راست شود از آن خارج مي‌شود) كافيست يك منو (با آيتمهاي مورد نظر براي آن) را طراحي كنيم (و حتي در صورت نياز Visible آن را False كنيم) و در رويداد MouseDown از آن شي خاص، پس از اينكه شرط كرديم كليد زده شده كليد راست ماوس باشد (با استفاده از شرط برابري پارامتر Button از اين رويداد با مقدار ثابت VbRightButton)، با استفاده از دستور PopUpMenu، نام منوي مورد نظر را فراخواني مي كنيم يعني بايد چنين داشته باشيم:
Private Sub controlName_MouseDown (Button As Integer,…)
IF Button = VbRightButton Then
PopUpMenu mnuMenu1
End IF
End Sub
كه بجاي controlName نام آن كنترلي كه قرار است كاربر روي آن كليك راست نمايد و بجاي mnuMenu1 نام آن منويي كه قرار است به صورت PopUp آورده شود را ذكر مي كنيم.
farzad آنلاین نیست.   پاسخ با نقل قول
کاربرانی که از farzad تشکر کرده اند:
rahimonline (07-20-2008)
قدیمی 07-20-2008, 12:51 PM   #18 (permalink)
برنامه نویس ویژوال بیسیک(مدیر افتخاری)
Junior Member
 
farzad آواتار ها
 
تاریخ عضویت: Apr 2008
پست ها: 50
تشکر: 0
تشکر شده 38 بار در 34 پست
Activity Longevity
1/20 17/20
Today پست ها
sssssss50
farzad به Yahoo ارسال پیام
پیش فرض اضافه كردن DialogBox به برنامه:


مطمئنا تا بحال در ويندوز از كادرهاي محاورهاي زيادي مثل پنجره هاي Open، Save، نمايش خصوصيات چاپگر (Printer)،كادر انتخاب رنگ، كادر انتخاب Font و پنجره Help ويندوز استفاده كرده ايد.
در VBبراي نمايش اينگونه پنجرههاي محاورهاي از كنترل DialogBox استفاده ميكنيم. اين كنترل يكي از كنترلهاي Non - Visual ويژوال بيسيك ميباشد. Non-Visual Controls همانطور كه قبلا هم آمده است، انواعي از كنترلها هستند كه فقط در زمان طراحي (Design Time) بر روي فرم ديده ميشوند و در Run Run Time فقط ميتوان از اثر آنها بهره برد.
كنترل مذكور بطور پيش فرض در ToolBar وجود ندارد. براي اضافه كردن آن به ToolBar بايد از منوي Project گزينه Components را انتخاب كنيم و در ليست Componentها، گزينه Microsoft Common Dialog Control 6 را چك مارك بزنيم و آن را تاييد (OK) نماييم. در اينصورت يك كنترل به شكل به ToolBar افزوده خواهد شد كه مي توانيد آن را با دابل كليك بر روي فرم قرار دهيد. توجه داريم كه كنترل مذكور Non-Visual است و لذا نيازي به تنظيم مكان اين كنترل بر روي فرم نداريد.
كنترل Dialog Box داراي متدهاي زير مي باشد:
ShowColor براي نمايش پنجره محاورهاي تعيين رنگ در زمان فراخواني اين متد.
ShowFont براي نمايش پنجره محاورهاي تعيين فونت در زمان فراخواني اين متد.
ShowHelp براي نمايش پنجره محاورهاي راهنماي ويندوز در زمان فراخواني اين متد.
ShowOpen براي نمايش پنجره محاورهاي باز كردن يك فايل در زمان فراخواني اين متد.
ShowPrinter براي نمايش پنجره محاورهاي تعيين خصوصيات چاپگر در زمان فراخواني اين متد.
ShowSave براي نمايش پنجره محاورهاي ذخيره كردن در يك فايل در زمان فراخواني اين متد.

Private Sub cmd_Click ( )
cdb.ShowColor
lbl.ForeColor = cdb.Color
End Sub
يا اگر بخواهيم توسط دکمه‌ای ديگر به نام cmd2، پنجره Open باز شود، و هر فايلی از هر مسيری را که کار بر انتخاب کرد، در lbl نمايش داده شود، می‌نويسيم:
Private Sub cmd2_Click ( )
cdb.ShowOpen
lbl.Caption = cdb.FileName
End Sub
farzad آنلاین نیست.   پاسخ با نقل قول