PDA

نسخه کامل مشاهده نسخه کامل : آموزش ويژوال بيسيک (2)



mazi_z_PSP
08-05-2007, 12:43
سلام دوستان. این تاپيک برايه این ساخته شده که دوستانی که دنبال مقاله آموزشی ميگردند بتوانند در اینجا به راحتی پيدا کنن. اما متاسفانه من نميتوانم پاسخگو سوالت و مشکلات شما باشم . شما ميتوانيد در تاپيک آموزش گام به گام از تکنيک برتر سوالات خود را بپرسيد .با تشکر

اینم از اولين مقاله

mazi_z_PSP
08-05-2007, 12:45
بسم الله الرحمن الرحیم


با سلام دوباره

از امروز آموزش وي‍ژوال بيسيك6 را دوباره آغاز ميكنيم. طي 15 جلسه مقاله بصورت پي در پي ويژوال بيسيك6 را در سطح مقدماتي آموزش داديم، از اين قسمت آموزش وي‍ژوال بيسيك6 متوسطه را آغاز خواهيم كرد.

در ابتدا نكاتي را متذكر ميشوم تا در آينده چنين مشكلاتي براي شما مزاحم نباشند:

1- اگر دستور شما در يك خط جاي نگرفت شما ميتوانيد آن را به كمك زيرخط (Underline) يعني (( _ )) به چند خط تقسيم كنيد بدين صورت كه در انتهاي خط يك زيرخط قرار داده و سپس ادامه ي دستور را در خط بعدي بنويسيد مانند:

If i < 1 And _

i > -5 Then

البته بايد توجه داشته باشيد كه از هر قسمت دستور نميتوان آن را قطعه كرد، به عنوان مثال :

Form1_

“My Form”Caption=

در اين صورت شما در هنگام اجراي برنامه با خطاي دستوري يا (Syntaxt Error) مواجه خواهيد شد.

اما گفته شد خطاي دستوري، بد نيست اشاره اي هرچند كوتاه به انواع خطاها داشته باشيم. خطاهاي برنامه نويسي عموما به چهار دسته خطا تقسيم ميگردند. البته تعداد خطاها بيشتر از اين چهار نوع هستند ولي ما به چهارتاي اصلي آنها در حال حاضر اشاره خواهيم كرد.

الف) خطاهاي دستوري يا Syntaxt Error چيست؟ همانطوري كه از نامش پيداست هر گاه شما دستوري را بصورت غلط املايي بنويسيد و يا ساختار دستوري برنامه را نادرست درج كنيد با اين خطا مواجه خواهيد شد. از مزاياي اين خطا يافتن آسان آن و نيز تصحيح راحت آن ميباشد. اين خطا قبل از اجراي برنامه توسط مفسر كشف خواهد شد.

ب) خطاهاي مقداردهي Validating Error و يا خطاهاي انتصاب Appointment : با اين خطا هنگامي مواجه ميشويد كه مقداري نادرست به متغيري نسبت دهيد، همچنين اين خطا در مواقعي نيز ميتواند رخ دهد كه به عنوان مثال شما متن يك برچسب را به عنوان عكس يك شي ImageBox تخصيص دهيد. اين خطا ها معمولا بسادگي خطاي دستوري قابل كشف نيستند اما براحتي ميتوان آنها را بر طرف كرد.

در آموزش مقدماتي به شما گفته شد كه شما به كمك كليد تابعي F5ميتوانيد برنامه را اجرا (Run ) كنيد كه در اين صورت برنامه تفسير (Compile) و اجرا ميشود اما شما در حالت تفسير عادي نميتوانيد اين گونه خطاها را بيابيد و ممكن است شما برنامه اي را بسازيد و به كسي تحويل دهيد و در آنجا با آن مشكل مواجه گردند. براي يافتن اين نوع از خطاها ميتوانيد از خطاياب برنامه (Debugger) استفاده نماييد، اما راه حل ساده تري نيز وجود دارد. شما بجاي استفاده از كليد F5 از تركيب دو كليد CTRL و F5 استفاده نماييد، در اين صورت برنامه ي شما قبل از اجرا بطور كامل تفسير ميشود (Full Compile) و قبل از اجرا شما ميتوانيد چنين خطاهايي را كشف كنيد، البته نه هميشه!.

ج) خطاهاي اجرايي Run Time Error : اين خطاها در هنگام اجراي برنامه رخ ميدهد و معمولا قابل كشف ميباشد. از دلايل بروز اين خطا ميتوان به فراخواني اشتباه تابع و يا عدم وجود خارجي تابع فراخواني شده، استفاده از تابعي كه در فايل DLL (Data Link Library) و يا فايلهاي نظير آن وجود ندارد يا نحوه ي استفاده از آن را اشتباه نوشته ايد، همچنين عدم سازگاري برنامه ي شما با ديگر سيستم هاي كامپيوتري نظير سيستم عامل و يا سخت افزار و دلايل بسيار ديگر، اشاره داشت.

د) خطاهاي مهلك :اين نوع از خطاها همانطوري كه از ظاهر نامش پيداست بدترين نوع خطا ميباشد. متاسفانه نه ميتوان به آساني اين نوع خطا را كشف كرد و به همين دليل نميتوان به آساني آن را اصلاح نمود. ممكن است اين نوع از خطا در برنامه اي وجود داشته باشد و سالها كسي متوجه اين خطا نباشد!! حال براي اينكه بهتر با اين نوع خطا آشنا شويد مثالي ميزنم: فرض كنيد شما برنامه ي يك شركت بيمه را نوشته ايد فرمول حساب بيمه را طوري اشتباه نوشته ايد كه نه تنها محاسبه را اشتباه انجام ميدهد، بلكه بسادگي نيز قابل تشخيص نيست. شما به عنوان يك برنامه نويس خوب بايد دقت بسياري روي اين نوع از خطاها داشته باشيد و حتما پس از اتمام طراحي و پياده سازي پروژه، حتما بخش هايي نظير مثال بالا را دوباره بررسي كرده و به مسئول آن شركت نيز نشان داده و پس از تاييد و اطمينان از عدم وجود چنين خطاهايي برنامه را بصورت اجرايي توليد كرده و تحويل دهيد.

2- در يك روال يا تابع نميتوان بيش از 4091 خط دستور قرار داد. اگر تعداد خط دستورات شما بيشتر از اين مقدار بود، شما ميتوانيد آن را در چند روال يا تابع قرار دهيد.

3- سعي كنيد هميشه نام اشيا را بطور پيشفرض باقي نگذاريد، البته در برنامه هاي بزرگ. زيرا شما در برنامه ها بزرگ كه اشياء زيادي داريد با مشكلات فراواني براي يافتن شي مورد نظر مواجه خواهيد شد.

4- هميشه براي هر پروژه پوشه اي مجزا بسازيد و تمامي فايلها از قبيل خود پروژه و فرم، فونتهاي مورد استفاده،فايلهاي Dll و OCX، تصاوير و ... را در آن قرار دهيد.

5- اگر از فايلهاي OCX و نظاير آن استفاده ميكنيد حتما توانايي اجراي آن برنامه در سيستم عامل هاي مختلف را بسنجيد و در راهنماي نصب برنامه آن را متذكر شويد.

6- سعي كنيد هميشه تغييرات و تنظيمات را توسط كد نويسي انجام. به عنوان مثال اگر ميخواهيد عنوان فرم را به My Form تغيير دهيد آن را در قسمت Properties تعيين نكنيد و توسط دستور اينكار را انجام دهيد. (Form1.Caption = "My Form")

7- بهتر است اگر ميخواهيد از نام فرمي استفاده كنيد كه آن فرم، همان فرم فعال است از دستور Me بجاي نام فرم بهره بگيريد. البته اين مطلب در بخش مقدماتي اشاره شد.

8- سعي كنيد در برنامه ي خود از توابع بهره ببريد. چه توابع آماده و چه توابعي كه خودتان ايجاد ميكنيد.

9- فراگيراني كه قصد يادگيري دارند، حتما جلسات را بصورت مرتب و بدقت پيگيري كنند.

دوستان عزيز 15 جلسه ي مقدماتي آموزش ويژوال بيسيك 6 را در يك فايل فشرده قرار داده ايم تا كساني كه بهر دليل به آن دسترسي نداشتند بتوانند از « ايــنـجـــا » ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) دانلود كرده و استفاده كنند. رمز فايل : [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

عزيزاني كه در آموزش مقدماتي مشكلي دارند حتما مشكل خود را از طريق پيغام در وبلاگ قرار داده، تا مشكل آنها بررسي گردد.



از جلسه ي بعد آموزش متوسطه را بصورت عملي فرا خواهيد گرفت.


موفق وسربلند باشید.

mazi_z_PSP
08-05-2007, 12:47
بسم الله الرحمن الرحیم

با سلام

جلسه ي قبل يعني جلسه اول آموزش متوسطه ويژوال بيسيك6، به يك سري نكات اشاره كردم تا در آينده اگر با چنين مشكلاتي مواجه شديد، براي شما دردسر ساز نباشد. يك نكته ي مهم ديگر را فراموش كردم در جلسه ي قبل بگويم.

گاهي ميبينيد كه در قسمت كد نويسي شما ميتوانيد فارسي بنويسيد و كاراكترهاي فارسي به وضوح ديده ميشوند اما گاهي اين حالت تغيير كرده و شما بجاي حروف فارسي كاراكترهاي ناشناخته اي ميبينيد. براي رفع اين مشكل از منوي Tools گزينه Options... را انتخاب نماييد،‌ سپس به سربرگ دوم يعني Editor Format رفته و در سمت راست اين برگه در ليست Font ، گزينه ي Courier New (Arabic) را به عنوان زبان انتخاب نماييد.

در آموزش مقدماتي شما را تا حدودي با متغيرها آشنا كرديم. اكنون بيشتر با متغيرها آشنا ميشويد:


محدوده

حافظه اشغالي

نام متغير

اعداد مثبت از 0 تا 255

1 Byte

Byte

اعداد از 32768- تا 32767

2 Byte

Integer

يكي از دو مقدار (1)True یا (0)False

2 Byte

Boolean

اعداد از 2147483648- تا 2147483647

4 Byte

Long

اعداد منفی از -3.402823E+38 تا -1.401298E-45

اعداد مثبت از 1.401298E-45 تا 3.4022823E+38

8 Byte

Single

اعدا منفی از -1.7976931346232E+308 تا -4.94065645841247E-324

اعدا مثبت از 4.94065645841247E-324 تا1.7976931346232E+308

8 Byte

Double

-922337203685477.5808 تا -922337203685477.5807

8 Byte

Currency

از ابتداي ژانویه سال 100 تا 31 دسامبر سال 9999

8 Byte

Date

اعداد بدون اعشاري از 79228162514264337593543950335- تا 79228162514264337593543950334+

اعداد اعشاري تا 28 رقم

12 Byte

Decimal

هر نوعي ميپذيرد. حداكثر توانايي نگهداري عددي بصورت نوع مضاعف Double ميباشد

16 Byte

Variant

بستگي به تعداد كاراكتر دارد. هر كاراكتر 1 بايت فضا اشغال ميكند

1 to 65400 Byte

String


سعي كنيد هميشه در انتخاب متغيرها دقت لازم را داشته باشيد. متاسفانه خيلي از برنامه نويسان سعي ميكنند حداقل فضاي لازم را براي متغيرها در نظر بگيرند، كه اين امر سبب مشكلاتي در آينده ميشود. شما به عنوان يك برنامه نويس خوب به اين نكته دقت كنيد كه هر روزه به قدرت پردازش و ميزان حافظه هاي كامپيوتري افزوده ميشود، پس بهتر است هميشه چيزي براي يدك همراه داشته باشيد. در طول آموزش شما بيشتر با متغيرها آشنا خواهيد شد.

اكنون سراغ معرفي برخي عناصر برويم.

عنصر Shape : همان طوري كه از نامش پيداست براي ترسيم شكل در فرم بكار ميرود. اين عنصر بصورت پيشفرض در پنجره ي ToolBar حالت استاندارد پروژه وجود دارد.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


اين عنصر نيز مانند بقيه عناصر داراي يكسري خواص عمومي و اختصاصي ميباشد. از تفاوتهاي اصلي اين عنصر با بسياري از عناصر ديگر، عدم وجود رويداد (Event) در اين عنصر ميباشد. به بيان ساده اين عنصر رويدادي ندارد و در هنگام اجراي برنامه نميتوان كنترلي بر رويدادي از اين عنصر داشت، براي رفع اين مشكل از ترفندهايي كه در آينده به آن اشاره خواهيم كرد استفاده ميكنيم.

برخي از خواص مهم عنصر Shape :

خاصيت shape : اين خاصيت داراي 6 گزينه ميباشد كه با انتخاب هر يك ميتوانيم شكل مورد نظر خود را انتخاب كنيم.

مقدار 0 - Rectangle : با تخصيص اين مقدار براي خصيصه ي shape از عنصر Shape شكل ما حالت مستطيل پيدا ميكند.

مقدار 1 - Square : حالت مربع به شكل ما ميدهد. اين نكته لازم به ذكر است كه چون همواره طول و عرض مربع يكسان است، هميشه كمترين مقدار به عنوان طول و عرض در نظر گرفته ميشود. يعني اگر شما مقدار كمتر را براي طول مربع در نظر بگيريد طول و عرض مربع برابر طول و اگر مقدار كمتر را براي عرض در نظر بگيريد طول و عرض مربع برابر با عرض خواهد شد.

مقدار 2 - Oval : شكل ما بيضي خواهد شد.

مقدار 3 - Circle : عنصر ما بصورت دايره خواهد بود. قطر دايره نيز با توجه به نكته ي اشاره شده در حالت مربع (Square) تعيين ميگردد.

مقدار 4 - Rounded Rectangle : اين مقدار شكل ما را بصورت مستطيل با گوشه هاي گرد ميسازد. به اين حالت مستطيل گرد گفته ميشود. متاسفانه ميزان انحناي گوشه ها، قابل تعيين نيست(همواره ثابت ميباشد).

مقدار 5 - Rounded Square : شكل ما بصورت مربع گرد خواهد بود.

خاصيت Width Border : به كمك اين خصيصه ميتوانيم ضخامت شكل مورد نظر را تعيين نماييم. محدوده ي اين ضخامت از 1 تا 8192 پيكسل (Pixel) ميباشد.

خاصيت Border Color : رنگ حاشيه را تعيين ميكند.

بقيه ي خواص را در ادامه ي آموزش متوسطه فرا خواهيد گرفت. حال سراغ عنصر ديگري برويم.

عنصر ComboBox : اين عنصر داراي يك ليست ميباشد كه همواره يكي از آنها در حالت انتخاب است، مگر اينكه گزينه ي اول خالي باشد. اين عنصر نيز در پنجره ي ToolBox در حالت استاندارد وجود دارد.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


خاصيت Sorted : يكي از دو مقدار True و يا False را ميپذيرد و مشخص ميكند كه عناصر موجود را با توجه به حروف الفبا و بصورت صعودي مرتب شده نمايش دهد يا خير.

خاصيت Text : با مقداردهي به اين خصيصه ميتوان متني را كه در ابتداي ليست وجود دارد و نمايش داده ميشود را تعيين كرد. توجه كنيد كه اين خصيصه تنها متن پيشفرض اوليه را مشخص كرده و به عنوان يك گزينه در ليست محسوب نميشود.

خاصيت RightToLeft : مانند خصيصه ي قبلي مقدار دو ارزشي ميپذيرد و تعيين ميكند كه گزينه ها از سمت چپ تراز (Align) گردند يا راست. براي حروف انگليسي مقدار اين خاصيت را False ميكنيم تا از چپ تراز شده و براي حروفي مانند فارسي مقدار آن را True نموده تا گزينه هاي ليست راست چين شوند.

خاصيت List : به كمك اين خاصيت ميتوان در پنجره ي Properties Object گزينه هاي ليست را اضافه يا حذف كرد. براي افزودن گزينه به ليست ComboBox توسط دستور بصورت زير عمل ميكنيم:

كليد F7 را فشرده تا به قسمت كدنويسي برويم. اكنون در محل دلخواه مانند رويداد Load فرم، نام عنصر ComboBox مورد نظر را نوشته سپس يك نقطه ميگذاريم، پس از آن تايپ ميكنيم AddItem و در نهايت رشته ي مورد نظر را محصور در "" مينويسيم. دقت نماييد كه با اين روش به هر ترتيبي كه بنويسيد گزينه ها نمايش داده ميشوند به شرطي كه مرتب نباشند (يعني Sorted = False). براي اينكه در محل مشخصي گزينه ي مورد نظر شما درج شود پس از انجام دادن مراحل بالا يك علامت ويرگول يا كاما (( , )) در انتهاي هر دستور قرار داده و سپس شماره ي انديس آرايه را كه از صفر شروع ميشود را ذكر كنيد. اين نكته را نيز مد نظر داشته باشيد كه همواره بزرگترين عدد آرايه كه قابل دسترس ميباشد برابر تعداد گزينه هاي ليست است.

Combo1.AddItem "AA", 4

خاصيت Style : حالت سه وضعيتي دارد:

مقدار 0 - DropDown Combo : در اين حالت شما هم ميتوانيد متني را وارد نماييد و هم توانايي انتخاب گزينه هاي ليست را داريد.

مقدار 1 - Simple Combo : در اين حالت كاربر فقط توانايي وارد نمودن متن را داشته و نميتواند گزينه اي از ليست را برگزيند.

مقدار 2 - DropDown List : اين حالت برعكس حالت قبلي است، يعني كاربر تنها ميتواند گزينه اي از ليست را برگزيند و نميتواند داده اي را وارد نمايد.

جلسه ي بعد اين مطلب را ادامه خواهيم داد و نحوه ي افزودن گزينه به ليست توسط كاربر را مي آموزيد.

موفق وسربلند باشید.

mazi_z_PSP
08-05-2007, 12:47
آموزش ويژوال بيسيك۶ متوسطه (بخش ۳)

بسم الله الرحمن الرحیم

سلام

جلسه ي قبل با چند عنصر از جمله ComboBox آشنا شديد. قرار شد در اين جلسه نحوه ي افزودن گزينه به اين عنصر توسط كاربر را بياموزيد. براي اينكار شما ميتوانيد روش هاي مختلفي را بكار ببنديد. ابتدا به روش ساده تر ميردازيم.

ميخواهيم فرمي داشته باشيم كه در آن يك عنصر ComboBox براي نمايش گزينه ها، يك عنصر TextBox براي تعيين عنوان گزينه ي ليست توسط كاربر و يك CommandButton براي افزودن گزينه هاي ورودي توسط كاربر به ComboBox وجود داشته باشد. در ابتدا به اين نكته توجه داشته باشيد كه در سري مقالات آموزشي، ما نام عناصر را بطور پيشفرض باقي ميگذاريم. در صورتي كه بخواهيم نام عنصري را تغيير دهيم به آن اشاره نموده و در غير اينصورت چيزي نمينويسيم.

حال پس از افزودن اين سه عنصر به فرم، به رويداد كليك دكمه Command1_Click ميرويم(بر روي دكمه دابل كليك كنيد). دليل اينكه به اين رويداد و در اين عنصر ميرويم اين است كه، قرار است هنگامي گزينه ها افزوده شود كه كاربر پس از وارد نمودن متن روي اين دكمه كليك كند. دستور افزودن گزينه را به عنصر ComboBox در جلسه ي قبل گفتيم. اما براي اينكه متن TextBox افزوده شود اينگونه مينويسيم:

Combo1.AddItem (Text1.Text)

به همين سادگي! اما تاكيد من بر آن است كه هميشه سعي كنيد برنامه را تا جاي ممكن كامل و كاربر پسند (استفاده ي آسان براي كاربري) بنويسيد. براي اين كار چند دستور ديگر را نيز به برنامه مي افزاييم. ميخواهيم در ابتدا (هنگام اجراي برنامه) متني در ComboBox همچنين TextBox وجود نداشته باشد، همچنين عنوان دكمه نيز مناسب با عمل انجامش تغيير يابد. براي اينكه كاربر بهتر متوجه كار برنامه شود، عنوان فرم را نيز تغيير ميدهيم. پس در رويداد Load عنصر فرم مينويسيم:

Form1.Caption = "Add Item To ComboBox Object"

Combo1.Text = Empty

Text1.Text = Empty

Command1.Caption = "Add To List"

Text1.TabIndex = 0

Combo1.TabStop = False

دو خصوصيت (Property) جديد در اين دستورات مشاهده ميكنيد.

TabIndex : انديس پرش، خصوصيتي است كه شامل تمامي عناصري كه قابليت تمركز (Focusable) دارند ميشود. اين خصيصه بدين معناست كه شما در فرمي شامل عناصر مختلف ميباشد هستيد و كليد Tab از صفحه كليد را ميزنيد، به ترتيب روي كدام عنصر پرش كند. چون اين شماره ها بصورت آرايه ميباشد از صفر شروع ميشود.

TabStop : هرگاه مقدار False را به اين خصوصيت تخصيص دهيد، در واقع تمركز پذيري يا Focusable را از آن عنصر سلب كرده و در نتيجه هر چقدر هم كه كليد Tab را بفشاريد هيچگاه آن عنصر به اين طريق Focus نخواهد شد. حال با اين توضيحات ميخواهيم هرگاه كاربر بر روي دكمه كليك كرد، دوباره تمركز به روي عنصر Text1 برود. براي اين كار در رويداد كليك دكمه مينويسيم:

Text1.SetFocus

توجه داشته باشيد كه SetFocus يك متد ميباشد و نه خصوصيت. ولي لازمه ي اين متد همانطوري كه گفته شد وجود خصوصيت تمركز پذيري ميباشد.

اكنون ميخواهيم به سراغ روش ديگري براي افزودن گزينه به عنصر ComboBox برويم. قصد داريم هنگامي كه كاربر روي خود اين عنصر متني را نوشت و كليد Enter يا همان Return را زد گزينه افزوده شده و متن در حال حاضر حذف شود. پس در اين فرم ما تنها نياز به يك عنصر ComboBox داريم. ابتدا دستورات را نوشته و سپس به توضيح دستورات آن ميپردازيم. براي اين كار در رويداد فشرده شدن كليد (KeyPress) عنصر ComboBoxمينويسيم:

If KeyAscii = 13 Then

Combo1.AddItem (Combo1.Text)

Combo1.Text = Empty

End If

خط اول اين دستور يك شرط است كه ميگويد اگر كليد Enter فشرده شد در اين صورت دستورات داخل شرط را انجام بده. در داخل شرط ابتدا متن موجود در عنصر Combo1 را به عنوان يك گزينه افزوده و سپس متن آن را پاك ميكند. دقت كنيد كه متن Text آن را پاك ميكند و نه گزينه Item آن را.

تابع KeyAscii : اين تابع شماره كليد فشرده شده بر اساس استاندارد ASCII را بر ميگرداند. در اين استاندارد شماره ي كليد Return يا Enter برابر 13 ميباشد. شما در اين دستور، براي راحتي كار و جلوگيري از اشتباه ميتوانستيد بنويسيد If KeyAscii = vbKeyReturn Then كه معادل همان دستور بود.

VBKey... : هر گاه بخواهيد براي تعيين شماره كليد توابعي نظير KeyAscii, KeyCode از كد استفاده كنيد، ميتوانيد از روش ساده تري كه در ويژوال بيسيك وجود دارد استفاده نماييد. براي اين كار بجاي كداسكي مربوطه VBKey را نوشته و در ادامه نام كليد مورد نظر را درج ميكنيد. مثلا بجاي نوشتن 65 مينويسيد VBKeyA . اين كار در برخي بخش ها مشكل ساز خواهد بود. به عنوان مثال از طريق اين دستور نميتوانيد حساسيت حروف يا Key Sensitive داشه باشيد. مثلا قادر نخواهيد بود تشخيص دهيد كه كاربر كليد A را فشرده يا كليد a، همچنين در صورت استفاده از اين دستور نميتوانيد تمامي كاراكترهاي موجود مانند @, #, &, * و ... را تشخيص دهيد. در چنين حالاتي شما مجبور به استفاده از شاره كد اسكي آن خواهيد بود. اما از مزاياي ديگر استفاده از اين دستور علاوه بر راحتي تشخيص كليد، ميتوان به مقرون به صرفه بودن دستورات در بسياري مواقع اشاره كرد. براي تفهيم بيشتر به يك مثال بسنده ميكنيم. فرض كنيد شما ميخواهد هنگامي كه كاربر كليد Q را از صفحه كليد فشرد، برنامه به اتمام برسد بدون اينكه تفاوتي ميان اينكه حرف q فشرده شده يا Q و حتي زبان ديگري مثلا در فارسي حرف ض فشرده شده است وجود داشته باشد، در اين صورت از اين دستور استفاده ميكنيد VBKeyQ. به عبارت بهتر، اين دستور تنها تعيين ميكند كدام كليد از صفحه كليد فشرده شده و به حالاتي مانند نوع زبان يا روشن و خاموش بودن CapsLock كاري ندارد. از نمونه هاي استفاده شده ي بارز آن ميتوان در بسياري از برنامه ها مانند World و Photoshop اشاره داشت. شما براي ذخيره كردن در اين دو برنامه تنها از تركيب دو كليد CTRL + S استفاده ميكنيد در حالي كه برنامه تفاوتي به نوع زبان و بزرگي و كوچكي حرف ندارد.

در جلسه ي بعد شما با چند عنصر ديگر آشنا خواهيد شد.

موفق وسربلند باشید.

Jalal
08-05-2007, 13:06
نحوه آموزشتون فرق میکنه ؟؟؟
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

whisper
08-05-2007, 13:35
مازی جان به نظر من شما وقتتو رو یه چیز دیگه بزار که تو این سایت کمتر باشه نه Vb6! دیگه خیلی قدیمی و تکنیک برتر یه کاملشو گذاشته حداقل ویروس نویسی رو آموزش بده که اینقدر در بارش فعالیت می کنی!!

mazi_z_PSP
08-05-2007, 16:02
باشه عزيز من هم همين کار رو کردم. آموزش ويروس نويسی هستش. چون يه چند وقتی هست که تکنيک مقاله ای نذاشته من خواستم بهتر کمک کنم به دوستانی که ميخوان ياد بگيرن

mazi_z_PSP
08-05-2007, 16:03
نحوه آموزشتون فرق میکنه ؟؟؟
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
نه فقط سعی ميکنم مقاله ها و محتواشون فرق کنه

mazi_z_PSP
08-05-2007, 22:26
آموزش ويژوال بيسيك۶ متوسطه (بخش ۴)

بسم الله الرحمن الرحیم

سلام به همگي

دوستان عزيزي كه سوال مطرح ميكنند، پاسخ هايشان را پس از اين در انتهاي پست ها جستجو كنند. طبيعي است كه هر يك از اعضاي محترم گروه كه پستي قرار ميدهد در پايان پست آن شخص پاسخ ها قرار ميگيرد.

از دوستان عزيز خواهش دارم كه سوالات خود را كامل مطرح نمايند تا بتوانند به نتيجه ي مطلوب برسند.

عنصر ListBox : از اين عنصر براي نمايش گزينه ها استفاده ميشود. از تفاوت هاي اين عنصر با ComboBox در نحوه ي نمايش و نحوه ي انتخاب گزينه ها ميباشد. شما براي نمايش گزينه ها در ComboBox بايد ليست را باز مي نموديد و همچنين در اين عنصر تنها شما قادر به انتخاب يك گزينه در هر بار انتخاب بوديد در حالي كه به كمك عنصر ListBox شما ميتوانيد بخشي يا تمامي گزينه هاي ليست را بطور همزمان مشاهده نموده و همچنين ميتوانيد با تعيين تنظيمات، قابليت انتخاب همزمان چند گزينه (Multi Selection) را داشته باشيد. از ديگر مزاياي اين عنصر قابليت ايجاد چند ستون (Multi Columns) براي نمايش گزينه ها ميباشد.

عنصر ListBox بطور پيشفرض در نوار ابزار پروژه ي استاندارد وجود دارد:


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

براي افزودن گزينه به ليست همانند ComboBox عمل ميكنيم List1.AddItem "List Item Title" و براي چند ستوني نمودن گزينه هاي نمايش در ليست مقدار خصوصيت Columns را با مقداري صحيح مقدار دهي مينماييم كه اين مقادير ميتواند بين صفر تا 32767 باشد. به دو نكته ي كوچك دقت نماييد كه اولا اگر تعداد ستونها صفر يا يك باشد در هر دو صورت ListBox يك ستون خواهد داشت و ثانيا اينكه تعداد ستون هايي كه تعيين ميكنيد، در واقع تعداد ستونهايي كه بطور همزمان ميتوانيد در ListBox مشاهده كنيد را تعيين كرده ايد. به عنوان مثال فرض كنيد ميخواهيم تعداد ستون هاي List1 را برابر 5 كنيم براي اين كار مينويسيم List1.Columns = 5

نكته ي مهم: در اكثر مواقع هنگامي كه شما تازه عنصر ListBox اي را ايجاد كرده ايد و مقداري را به عنوان ستون توسط كد به آن نسبت ميدهيد، هنگام اجراي برنامه با خطا مواجه ميشويد. براي رفع اين مشكل پس از ساخت ListBox ابتدا در پنجره ي Properties مقدار Columns را برابر يك قرار داده و بعد از اين ميتوانيد توسط دستور هر مقداري را در محدوده اي كه به آن اشاره شد براي تعداد ستون نسبت دهيد.

خصيصه MultiSelect : اين خصوصيت داراي سه حالت ميباشد.

حالت 0-None : با انتساب اين مقدار به MultiSelect كاربر تنها قادر به انتخاب يك گزينه از ليست ميباشد (تك انتخابي).

حالت 1-Simple : توسط اين مقدار كاربر ميتواند با هر بار كليك بر روي يك گزينه آن را به مجموعه ي گزينه هاي انتخابي اضافه و با كليك دوباره بر روي گزينه، آن را از گزينه هاي انتخابي حذف كند.

حالت 2-Extended : در اين وضعيت كاربر با درگ كردن (Draging) روي گزينه هاي ليست قادر به انتخاب مجموعه اي از گزينه ها به صورت يكباره ميباشد. همچنين با پايين نگاه داشتن كليد CTRL ميتواند گزينه اي را نيز به مجموعه ي انتخابي افزوده و با كليك دوباره آن را از انتخاب خارج كند. همچنينبا كليك روي گزينه اي و سپس با پايين نگاه داشتن كليد Shift و انتخاب گزينه اي ديگر از ليست مجموعه ي بين دو گزينه را انتخاب كند.

خصيصه ي Style :‌ اين خصيصه ظاهر عنصر را تعيين نموده و داراي دو حالت Standard و CheckBox ميباشد كه شما ميتوانيد تفاوت اين دو را از طريق عكس مشاهده نماييد:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


عنصر Timer :‌ اين عنصر جزء عناصر شي گرا نبوده و در هنگام اجراي برنامه نيز شما قادر به مشاهده ي اين عنصر نيستيد! اين عنصر نيز همانند ديگر عناصر معرفي شده ي تاكنون در پنجره ي ToolBar حالت Standard پروژه موجود است. Timer در واقع عمل انجام تكرار دستورات را با وقفه ي زماني (Delay) خاصي كه توسط برنامه نويس نعيين ميگردد را بعهده دارد. با تمامي خصوصيات اين عنصر بجز مهمترين آن كه خصوصيت منحصر به فرد اين عنصر نيز ميباشد، در مقالات قبل آشنا شده ايد.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

خصيصه ي Interval : اين خصيصه در واقع همان مدت وقفه بين هر بار اجراي دستورات ميباشد. محدوده ي مقدار پذيري اين عنصر از صفر تا 65535 بوده كه بر حسب ميلي ثانيه ميباشد. توجه داشته باشيد كه دقت اين خصيصه حدود 23 ميلي ثانيه است. يعني اگر شما مقدار Interval را برابر 1 قرار دهيد يا 22 در اكثر موارد نتيجه ي وقفه يكي خواهد بود. اگر مقدار اين خصيصه را برابر صفر قرار دهيد در واقع اين عنصر را غير فعال نموده ايد. براي مقدار دهي بصورت Timer1.Interval = 100 عمل ميكنيد.

حال فرض كنيد شما ميخواهيد برنامه اي بنويسيد كه در هر 5 دهم ثانيه (يعني 500 ميلي ثانيه يا نيم ثانيه) يك واحد به مقدار متغير شما افزوده و آن را در عنوان فرم نمايش دهد:

Private Sub Timer1_Timer()

Timer1.Interval = 500

i = i + 1

Form1.Caption = i

End Sub

نكته ي بسيار مهم : هرگز متغيرهاي خود را داخل شمارنده (Timer) معرفي نكنيد.

نكته : مقدار دهي اوليه ي متغير را داخل Timer انجام ندهيد زيرا نتيجه اشتباده خواهد بود. مگر در مواردي خود شما عمدا بخواهيد عملي را انجام دهيد. چرا؟ بدليل اينكه اگر شما در مثال بالا مقدار اوليه ي صفر را به متغير i نسبت ميداديد، تايمر با هر بار اجرا، مقدار اوليه ي صفر را به متغير نسبت داده و سپس يك واحد به آن مي افزود كه شما همواره مقدار 1 را مشاهده ميكرديد. يعني با هر بار اجراي Timer ابتدا متغير مقدار صفر گرفته و سپس يك واحد به آن مي افزوده و پس از اجراي دوباره ي شمارنده (Timer) با تاخيري كه شما بر حسب ميلي ثانيه به خصوصيت Interval آن نسبت داده ايد دوباره ابتدا متغير صفر شده و سپس به آن يك واحد مي افزوده و اين عمل دائما تكرار ميشود كه همواره خروجي برابر 1 خواهد بود.

جلسه ي بعد نيز شما با چند عنصر آشنا ميشويد.

پاسخ به سوالات :

سوال 1) از طرف دوست محترم سعيد

با سلام مي خواستم در باره پاک کردن ويندوز 98 و xp به من اطلاعاتی بدهد بخاطر اينکه من بلد نيستم ويندوز را پاک کنم متشکرم.

پاسخ :‌ دوست عزيز اولا شما هنگامي كه در هر سيستم عاملي قرار داريد هرگز فايل هاي آن را پاك نكنيد. اگر شما هر دو سيستم عامل ويندوز 98 و XP را نصب نموده ايد بهتر است ابتدا ويندوز Xp و سپس 98 را پاك كنيد. چند راه حل وجود دارد، يا اينكه شما با يك فلاپي StartUp وارد محيط DOS شويد و سپس فايلها را پاك يا درايو خود را فرمت (Format) كنيد. براي اينكار ابتدا يك ديسكت StartUp تهيه نموده و داخل درايور فلاپي قرار دهيد و سيستم خود را راه اندازي مجدد كنيد (Restart). پس از انجام يكسري مراحل توسط سيستم، شما با سه گزينه مواجه ميشويد كه گزينه ي اول را به حالت انتخاب باقي گذاشته و كليد Enter را بزنيد. اگر قصر فرمت درايوها را داريد (يعني كل اطلاعات موجود در آن درايو را پاك كنيد) تايپ كنيد Format سپس يك فاصله قرار داده و نام درايو مورد نظر را نوشته و بعد از آن علامت دو نقطه (يعني : ) را قرار دهيد. فرض كنيد ميخواهيم درايو C فرمت شود مينويسيم format c: و كليد Enter را بزنيد. اكنون از شما ميپرسد آيا مطمئن هستيد كه شما حرف y را در صورت تاييد تايپ كنيد در غير اين صورت n را وارد نموده و كليدEnter را بزنيد. اكنون صبر كنيد تا مراحل فرمت به پايان برسد.

نكته ي مهم : اگر درايوي كه قصد فرمت كردن آن را داريد درايو C:\ ميباشد حتما دستور را با سوئيچ سيستمي بنويسيد يعني براي فرمت درايو C بنويسيد format c: /s

براي پاك نمودن فايلها ميتوانيد از دستور del استفاده كنيد. اگر ميخواهيد تمامي فايلها پاك شوند بنويسيد Del سپس آدرس آن و بعد از آن *.* را تايپ كنيد. مثلا del d:\Windows\*.* اگر در پوشه ي جاري هستيد نيازي به آدرس نيست. دقت داشته باشيد كه نميتوانيد شما پوشه اي كه درون آن فايلي قرار دارد را پاك كنيد. با مثال توضيح ميدهم، فرض كنيد شما پوشه اي با نام Windows در درايو C داريد كه حاوي فايل است، براي پاك كردن آن ابتدا محتويات پوشه را حذف كنيد با دستور del c:\windows\*.* و سپس پوشه را پاك كنيد حال با دستور del c:\windows پوشه را حذف كنيد. دقت كنيد كه تمامي زير پوشه ها را نيز بايد تك تك خالي و سپس آنها را حذف و نهايتا پوشه ي ما قبل (والد) آن را پاك كنيد.

پيشنهاد من اين است كه شما اگر فايل مهمي در درايوهاي ويندوز داريد از آن پشتيبان تهيه نموده و يا به درايو ديگري كپي نموده و سپس درايو مورد نظر را Format كنيد به دو دليل: اولا اينكه كار پاكسازي را بسيار سريع تر و آسان تر انجام خواهيد داد و ثانيا براي ويندوز جديد بهتر است زيرا تمامي فايلهاي مخفي و سيستمي اضافي نيز حذف ميشوند.

روش ديگر اين است كه شما با ديسك Bootable ويندوز XP سيستم را راه اندازي كرده و درايو مورد نظر را به راحتي Quick Format نماييد. در صورت مشكل آن را مطرح نماييد.

سوال 2) از طرف دوست عزيز نگار

با سلام به شما من يک مسله دارم که اميدوارم با کمک شما به جواب هون برسم.سوال من اين هست:مشخصه scalemodeرا باpixels مقدار دهی کنيد.به کمک توابع apiکدی بنويسيد که با تغيير اندازه ي فرم بيضی رسم شود

پاسخ : براي تخصيص Pixel به عنوان واحد فرم از دستور Me.ScaleMode = pixel استفاده مينماييم. اگر شما ميخواهيد داخل فرم بيضي ترسيم شود نيازي به استفاده از توابع API نميباشد. همچنين چون ميخواهيد هنگام تغيير اندازه ي فرم بيضي رسم گردد در رويداد تغيير اندازه Resize فرم بايد اين دستورات نوشته شوند. اگر ميخواهيد تنها هنگام تغيير اندازه ي فرم بيضي ترسيم شود به عناون مثال مينويسيم :

Private Sub Form_Load()

Me.ScaleMode = 3

End Sub

Private Sub Form_Resize()

Circle (200, 100), 200, , , , 0.5

End Sub

اما اگر ميخواهيد هنگام تغيير اندازه ي فرم طول و عرض بيضي برابر فرم شود مينويسيم:
Private Sub Form_Load()

Me.ScaleMode = 3

End Sub

Private Sub Form_Resize()

Me.Cls

Circle (Me.Width / 32, Me.Height / 32), Val(Me.Width) / 35, , , , Val(Me.Height) / 8000

Form1.Caption = Me.Width

End Sub

البته شما سعي كنيد اعداد بيشتري را تست كنيد تا به جواب دقيق تري برسيد.

اما چون گفته بوديد با استفاده از API گفتم شايد منظور شما اين بوده كه با استفاده از API فرمي بصورت بيضي ترسيم كنيم. براي اين منظور در بخش General اين كدها را تايپ نماييد:

Option Explicit

Private Declare Function CreateEllipticRgn Lib "gdi32"

(ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, _

ByVal Y2 As Long) As Long

Private Declare Function SetWindowRgn Lib "user32" _

(ByVal hWnd As Long, ByVal hRgn As Long, _

ByVal bRedraw As Boolean) As Long

و در رويداد Load فرم بنويسيد:

SetWindowRgn hWnd, CreateEllipticRgn(0, 0, 300, 200), True

اگر مشكلي داشتيد مطرح كنيد.

موفق وسربلند باشید.

mazi_z_PSP
09-05-2007, 15:11
بسم الله الرحمن الرحیم

عنصر PictureBox : اين عنصر همان طوري كه از نامش پيداست براي نمايش تصاوير استفاده ميشود:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


خاصيت Picture : از اين خصيصه براي تعيين تصوير مورد نظر استفاده ميشود كه در اين خصيصه شما بايد محل دقيق آدرس و نام فايل تصويري را همراه با پسوند آن ذكر نماييد. بطور كلي در ويژوال بيسيك ميتوان به سه روش تصويري را به عنصري تصوير پذير نسبت داد. در حالت اول تصوير مورد نظر در حافظه ي Buffer يا ClipBoard سيستم موجود است (يعني شما تصويري را در حافظه كپي نموده ايد). در اين حالت شما نيازي نداريد فايلي را در حافظه ي RAM بارگذاري (Load) كنيد و تنها شما داده ي موجود در حافظه را به خصيصه ي Picture عنصري مانند PictureBox تخصيص ميدهيد. براي اين كار مينويسيم:

Picture1.Picture = Clipboard.GetData

كه در اين صورت اگر تصويري در حافظه ي ClipBoard شما موجود باشد، اين تصوير به عنصر Picture1 شما تخصيص داده خواهد شد. در حالت دوم شما از عناصر كمكي بهره ميگيريد تا تصاوير را بار گذاري اوليه نموده و هرگاه به آن نياز داشتيد از آن استفاده نماييد. برخي از اين عناصر PictureClip و ImageList هستند كه در آينده به آنها اشاره خواهد شد. در اين حالت نيز شما قبلا تصاوير را بارگذاري كرده و نيازي نداريد كه اين كار را مجددا تكرار نماييد. اما در حالت سوم فايل تصويري شما در محلي از حافظه هاي ثانويه مانند Hard Disk, Floppy, CD و غيره وجود دارد و شما بايد ابتدا آنها را بارگذاري نماييد. براي بارگذاري تصاوير شما از متدي (Method) به نام LoadPicture بهره ميگيريد. حال فرض كنيد در درايو C پوشه ي Folder1 و تصويري با نام Pic1 و فرمت JPG وجود دارد، براي بارگذاري و نمايش آن مينويسيم:

Picture1.Picture = LoadPicture("c:\folder1\pic1.jpg")

همانگونه كه قبلا اشاره كردم آدرس ها را بايد همانند رشته ها محصور در "" قرار دهيم. مشاهده كرديد كه ابتدا متد LoadPicture را نوشته و سپس آدرس فايل و نهايتا نام فايل و پسوند آن را مينويسيم.

خاصيت BackColor : به كمك اين خصيصه ميتوانيم رنگ پس زمينه را براي عنصر PictureBox تعيين نماييم. از دلايل استفاده از اين عنصر ميتوان به سه نكته اشاره داشت. اول اينكه شايد شما از تصويري استفاده نكنيد و يا تصوير مورد نظر وجود نداشته باشد كه در اين صورت رنگ پس زمينه جايگزين تصوير خواهد شد. در حالت دوم شايد تصوير شما كوچك تر از عنصر PictureBox شما باشد، كه در اين صورت بقيه ي نقاط خالي، توسط شما قابليت تعيين رنگ دارند. اما حالت سوم كه شايد از دو دليل قبل مهمتر و پركاربرد تر باشند اين است كه شما از تصويري با فرمت GIF استفاده نماييد و اين تصوير در برخي نقاط داراي پس زمينه نباشد، در اين صورت رنگ پس زمينه در نقاط بي رنگ اين تصوير قرار خواهد گرفت.

خاصيت Align : اين خصوصيت در عنصر PictureBox با ديگر عناصر متفاوت ميباشد! اين خصيصه تراز بندي را براي خود عنصر PictureBox و نسبت به فرم انجام ميدهد و داراي 5 حالت ميباشد:

0-None : در اين حالت عنصر هيچگونه تراز بندي ندارد.

1-Align Top : نسبت به بالاي فرم تراز ميشود. بدين صورت كه عنصر يه بالاي فرم چسبيده و برابر طول فرم (Width) خواهد بود. اگر كاربر در هنگام اجراي برنامه طول فرم را تغيير دهد، طول عنصر نيز تغيير خواهد يافت.

2-Align Bottom : نسبت به پايين فرم تراز خواهد گرديد. و همانند حالت قبلي تغيير پذير است.

3-Align Left : نسبت به سمت چپ فرم تراز ميگردد و هرگاه عرض فرم (Height) تغيير يابد عرض اين عنصر نيز تغيير مينمايد.

4-Align Right : همانند مقدار بالا بوده با اين تفاوت كه نسبت به سمت راست فرم تراز ميشود.

خاصيت Appearance : اين خصيصه داراي دو حالت بوده كه در حالت 0-Flat عنصر بصورت تخت نمايش داده ميشود و در حالت 1-3D لبه هاي عنصر بصورت فرو رفته نشان داده ميشود.

اين عنصر داراي مزاياي زيادي است. از مزاياي اين عنصر ميتوان به اجراي روان (كه براي سيستم هاي ضعيف مناسب است) و نيز متدها و خواص زياد آن اشاره داشت، اما برخي از امكانات را نيز در اختيار ندارد.

عنصر Image : اين عنصر نيز همانند عنصر PictureBox براي نمايش تصاوير استفاده ميشود و داراي مزايا و معايبي نسبت به آن ميباشد:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

خاصيت Stretch : اين خصيصه داراي دو حالت True و False ميباشد. هرگاه مقدار اين خصيصه False باشد تصوير به اندازه ي واقعي خود نشان داده ميشود ولي اگر مقدار اين خصيصه True گردد طول و عرض تصوير برابر طول و عرض عنصر خواهد بود. اين خاصيت در عنصر PictureBox وجود ندارد.

خاصيت SavePicture : به كمك اين خصيصه ميتوان تصوير موجود در عنصر را روي ديسك ذخيره كرد:

(آدرس و نام فايلي كه ميخواهيم ذخيره شود, نام عنصر)Call SavePicture

نحوه ي تخصيص فايل تصويري نيز مانند عنصر PictureBox ميباشد. حال فرض كنيد ميخواهيم فايلي با نام Pic1.bmp را كه در پوشه ي Folder1 و در درايو C قرار دارد را توسط Image1 نمايش داده و در درايو C با نام Pic1.bmp ذخيره نماييم، مينويسيم:

Image1.Picture = LoadPicture("c:\folder1\pic1.bmp")

Call SavePicture(Image1, "c:\a.bmp")

فرمت تصاويري كه توسط دو عنصر بالا پشتيباني ميشوند عبارتند از : GIF, CUR, BMP, ICO, JPG, WMF, EMF, RLE .

نكته : متاسفانه ويژوال بيسيك6 قابليت پشتيباني از تصاوير متحرك Gif را نداشته و تنها فريم اول آن را نمايش ميدهد. براي نمايش اينگونه تصاوير بايد از عنصر ديگري بهره بگيريم كه در آينده به آن اشاره خواهيم داشت.

جلسه ي بعد شما با چند عنصر آشنا خواهيد شد.

mazi_z_PSP
09-05-2007, 15:12
سلام از این به بعد هم آموزش ميزارم و هم سورس کد هرچی گييرم بياد.

mazi_z_PSP
09-05-2007, 15:13
بسم الله الرحمن الرحیم


با سلام

عنصر Line : از اين عنصر براي ساخت خط راست، استفاده ميشود:


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

خصوصيات X ها و Y ها : عنصرLine براي تعيين مختصات خط ترسيمي، از چهار مقدار استفاده ميكند. X1, Y1 براي تعيين مختصات نقطه ي ابتدايي خط و X2, Y2 براي تعيين مختصات نقطه ي انتهايي خط ميباشد. كه X1 و X2 تعيين دو نقطه ي ابتدايي و انتهايي نسبت به بالا (Top) و Y1 و Y2 اين دو نقطه را نسبت به چپ (Left) فرم مشخص ميكنند.

خاصيت BorderWidth :اين خصيصه همانند عنصر Shape ضخامت حاشيه را تعيين ميكند، با اين تفاوت كه محدوده ي ضخامت از 1 تا Pixel 32767 ميباشد.

خاصيت BorderStyle : نحوه ي نمايش حاشيه را تعيين ميكند و داراي 7 حالت زير ميباشد:

0-Transparent : در اين حالت خط كاملا شفاف بوده و قابل روئيت نميباشد.

1-Solid : خط بصورت توپر است.

2-Dash : خط به صورت خط چين بلند نمايش داده ميشود

3-Dot : به شكل خط چين كوتاه به نمايش در مي آيد.

4-Dash-Dot : تركيبي از دو حالت فوق ميباشد

5-Dash-Dot-Dot : همانند قبلي با اين تفاوت كه بجاي يك خط كوتاه، يك خط كشيده و دو خط كوتاه به نمايش در مي آيد.

6-InsideSolid : در اين حالت درون خط بصورت توپر خواهد شد.

عنصر HScrollBar : اين عنصر نوار اسكرول افقي ميباشد. حرف H سرحرف Horizontal و به معناي افقي ميباشد:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
عنصر VscrollBar : همانند عنصر قبلي ميباشد با اين تفاوت كه بصورت ستوني خواهد بود. حرف V نيز در اينجا سرحرف Vertical است:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
تمامي خصوصيات و متدهاي اين دو عنصر با يكديگر برابر هستند و تنها تفاوت آنها در سطري و ستوني بودنشان ميباشد.

خصوصيات Max, Min : همان طوري كه از نامشان پيداست، مقدار حداقل (Min) و مقدار حداكثر (Max) را مشخص مينمايند. حداقل مقداري كه اين دو عنصر براي خصوصيت Min مي پذيرند برابر با منفي 32768 و حداكثر مقدار براي خصوصيت Max برابر مثبت 32767 ميباشد.

خصيصه ي LargeChange : مقدار پرش بزرگ در نوار اسكرول را معين ميكند. يعني هرگاه شما در بخشي خالي از نوار اسكرول (يعني به غير از دو دكمه ي جهت دار و خود نوار لغزنده) كليك كنيد به چه مقدار نوار اسكرول حركت كند:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
خصيصه ي SmallChange : اين خصوصيت همانند خصوصيت LargeChange بوده، با اين تفاوت كه ميزان پرش براي كليك بر روي دو دكمه ي كناري نوار اسكرول را تعيين ميكند. يعني هرگاه كاربر بر روي هر يك از دو دكمه ي ابتدايي و يا انتهايي كليك كند، چند واحد لغزنده جابجا شود.
خصيصه ي Value : اين خصوصيت مقدار نوار اسكرول را تعيين ميكند و در طول اجراي برنامه ميتوان به كمك اين خصوصيت وضعيت لغزنده ي نوار را كنترل نمود. اما اگر به اين خصوصيت مقدار اوليه نسبت دهيم،‌ هنگام اجراي برنامه لغزنده توسط برنامه نويس تعيين شده است، در غير اين صورت بطور پيشفرض در مركز نوار قرار ميگيرد.

حال فرض كنيد ميخواهيم هنگامي كه كاربر با نوار اسكرول كار ميكند مقدار آن تغيير يابد. براي اين كار در رويداد Change عنصر ScrollBar مينويسيم:

HScroll1.Value = HScroll1.Value

و فرضا ميخواهيم مقدار اوليه ي 100 را به آن نسبت دهيم، مي نويسيم:

HScroll1.Value = 100

كه در اينجا عنصر ما يك نوار اسكرول افقي ميباشد. براي نوارهاي اسكرول عمودي نيز همين گونه عمل ميكنيم.



جلسه ي بعد با چند دستور و تابع آشنا ميشويد.


موفق وسربلند باشید.

mazi_z_PSP
12-05-2007, 19:50
آموزش ويژوال بيسيک۶ متوسطه (بخش۷)
بسم الله الرحمن الرحیم

طبق قرار جلسه قبل شما امروز با چند تابع و دستور آشنا خواهيد شد. در ابتدا شما را با يك كلاس مهم و پركاربرد به نام ClipBoard آشنا ميكنم.

كلاس ClipBoard : اين كلاس دستيابي ما را به حافظه ي موقت Clip Board فراهم ميسازد. اين كلاس داراي 6 متد ميباشد كه به هر يك از آنها اشاره خواهيم كرد:

متد Clear : اين متد همان گونه كه از اسم ظاهري اش پيداست، اطلاعات موجود در ClipBoard را پاك ميكند. با اين عمل ميتوان حافظه ي ClipBoard را خالي نموده كه استفاده هاي زيادي دارد. به عنوان مثال شما ميتوانيد از يك تايمر استفاده كرده و در مدت زمان كوتاهي مانند 500 ميلي ثانيه، حافظه ي كليپ برد را پاكسازي نماييد، در اين حالت كاربر نميتواند از برنامه ي شما اطلاعاتي را كپي نمايد. مثلا كاربر نميتواند از فرمهاي برنامه ي شما عكس بگيرد! شكل دستوري آن بصورت زير ميباشد:

Clipboard.Clear

متد GetData : از داده اي مانند تصوير كه در حافظه ي كليپ برد موجود ميباشد استفاده ميكند. به عنوان مثال اگر تصويري در كليپ برد باشد شما ميتوانيد آن تصوير را به عنوان تصوير عنصري مثل فرم تخصيص دهيد.

نكته : دقت داشته باشيد كه تصوير در حافظه باشد و نه آدرس آن. به عنوان مثال اگر شما فايلي تصويري در درايو C داشته باشيد و در مرورگري مانند WindowsExplorer خود آن را كپي نماييد، شما تنها آدرس آن فايل را كپي نموده ايد. اما اگر فايل تصويري را در ويرايشگر تصوير مانند MSPaint بازكرده و كل تصوير يا بخشي از آن را انتخاب (Select) و سپس كپي نماييد خود تصوير در حافظه ي كليپ برد قرار خواهد گرفت و منظور ما حالت دوم ميباشد. مثال:

Form1.Picture = Clipboard.GetData

متد GetFormat : اين متد حالت دو وضعيتي (Boolean) دارد و تنها وقتي كه عدد 1 ورودي باشد جواب True خواهد بود. مثلا :

Clipboard.GetFormat (1)

متد GetText : از متن موجود در كليپ برد استفاده ميكند. مثلا:

Form1.Caption = Clipboard.GetText

متد SetData : از اين متد براي تخصيص داده اي مانند تصوير به كليپ برد استفاده مينماييم. مثال:

Clipboard.SetData LoadPicture("e:\djcsaeed.jpg")

و جهت استفاده مينويسيم:

Form1.Picture = Clipboard.GetData

كه در دستور اول فايلي تصويري را به حافظه ي كليپ برد منتقل نموده و سپس آن را توسط دستور دوم به عنوان تصوير پس زمينه ي فرم تخصيص داديم.

متد SetText : همانند متد قبلي ميباشد با اين تفاوت كه اين بار متني را به ClipBoard منتقل ميكنيم :

Clipboard.SetText ("[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]")

و جهت استفاده از آن :
Form1.Caption = Clipboard.GetText

البته در دستور اول ميتوانيم از متني در مكان دلخواه بهره بگيريم. مثلا ميخواهيم زمان جاري را نسبت دهيم مينويسيم:

Clipboard.SetText (Time$)

توابع Time$ و Time : تابع Time& زمان جاري سيستم را برميگرداند و تابع Time زمان جاري سيستم را تعيين مينمايد. مثال :

Form1.Caption = Time$

Time = "11:43"

توابع Date$ و Date : همانند دو تابع قبلي عمل ميكنند با اين تفاوت كه تاريخ جاري سيستم را برميگردانند. مثال :

Form1.Caption = Date$

Date = "08/04/1986"

تابع Now : اين تابع تاريخ و زمان جاري سيستم را برميگردان، مثال:

Form1.Caption = Now

تابع Beep : اين تابع يك بار صداي بوق سيستم عامل را به صدا در مي آورد و بصورت زير نوشته ميشود:

Beep

جلسه ي بعد نيز با چند دستور و تابع آشنا خواهيد شد.

موفق وسربلند باشید.

mazi_z_PSP
12-05-2007, 19:52
آموزش ويژوال بيسيک۶ متوسطه (بخش ۸)شنبه، 15 اردىبهشت، 1386
بسم الله الرحمن الرحیم

كلاس APP : اين كلاس مخفف Application يا كاربردي ميباشد و داراي خصيصه هايي جهت كنترل برنامه ي كاربردي ما ميباشد. اكنون به چند خصيصه آن اشاره خواهيم نمود.

App.Title : اين خصيصه عنوان برنامه ي كاربردي ما را تعيين مينمايد و همانند خصوصيت Caption مقداري از نوع رشته مي پذيرد:

App.Title = "My Application"

شما ميتوانيد اين عنوان را در TaskManager مشاهده نماييد. دقت داشته باشيد كه اگر شما بجاي رشته عددي را وارد كنيد برنامه با خطا مواجه نميشود، زيرا بطور خودكار آن عدد به رشته تبديل خواهد شد، و اين نكته در موارد مشابه نيز صدق ميكند.

App.Path : مسير جاري برنامه را برميگرداند:

Me.Caption = App.Path

App.EXEName : نام فايل اجرايي برنامه را برميگرداند:

Me.Caption = App.EXEName

App.TaskVisible : وضعيت نمايش برنامه در TaskManager را تعيين ميكند.

App.TaskVisible = False

موجب ميشود كه برنامه ي شما در TaskManager قابل مشاهده نباشد.

App.CompanyName : نام شركت سازنده ي برنامه را برميگرداند.

Me.Caption = App.CompanyName

App.Comments : توضيحات برنامه را برميگرداند.

Me.Caption = App.Comments

App.LegalCopyright و App.LegalTrademarks : اطلاعات مربوط به كپي رايت و مارك تجاري را بر ميگرداند.

توجه :‌تنظيمات مربوط به كپي رايت، مارك تجاري، نام شركت و ... را در جلسات آتي فرا خواهيد گرفت.

تابع Iif :‌اين تابع يك دستور شرط يك خطي است و در موارد ساده و كوچك مورد استفاده قرار ميگيرد. عملكرد اين تابع همانند If .. Else ميباشد:

IIf (Condition, Run Commands If Condition is True, Else)
مثال :


Dim max, a, b As Integer

a = 5

b = 10

max = IIf(a < b, b, a)

Me.Caption = max

تابع MsgBox : از اين تابع جهت نمايش يك پيغام استفاده ميگردد. ساده ترين حالت آن كه تنها يك رشته را به نمايش در آورده و پنجره اي داراي دكمه Ok ميباشد بصورت :

MsgBox "Hello World"

ميباشد. ملاحظه نموديد كه بسيار ساده ميباشد، اما اين تابع داراي پارامترهاي ديگري نيز جهت گسترش است. بنابر اين بقيه ي پارامترها اختياري ميباشند. ساختار كلي آن بصورت :

MsgBox( Notes [,Buttons] [,Title] [,HelpFile] [Contex])
ميباشد. فرض كنيد ميخواهيم يك پيغام نمايش دهد با متن My Message با عنوان Message داراي دو دكمه ي Yes و No مينويسيم:

MsgBox "My Message", vbYesNo, "Message"

حال اگر بخواهيم بر فرض يك آيكن اخطار نيز در كنار آن نمايش دهد. براي اين كار و يا افزودن موارد اضافي ديگر از + استفاده مينماييم، پس مينويسيم :

MsgBox "My Message", vbYesNo + vbExclamation, "Message"

توضيح آيكن هاي پيغام : همراه با آيكن هاي پيغام صداي پخش شده نيز تغيير ميكند. بطور كلي در ويژوال بيسيك ميتوان 5 حالت آيكن ايجاد نمود:

بدون آيكن : اگر هيچ دستوري مبني بر افزودن آيكن ننويسيم، ‌آيكني نيز همراه پيغام نمايش داده نخواهد شد.

آيكن سوال : مقدار vbQuestion را نسبت ميدهيم كه بصورت زير خواهد شد :


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
آيكن اطلاعات :‌مقدار vbInformation را تخصيص ميدهيم :


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
آيكن اخطار : مقدار vbExclamation را تخصيص ميدهيم‌ :


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
آيكن خطا : مقدار vbCritical را اختصاص ميدهيم :


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


موفق وسربلند باشید.

mazi_z_PSP
12-05-2007, 19:55
خب دوستان اميدوارم تونسته باشم کمکی به شما ها کرده باشم ديگه تو این تاپيک مقاله ای نميزارم و بيشتر رو زمينه هک کار خواهم کرد

Payman_62
13-05-2007, 00:51
سلام.
بهتره مطالب ارسالی با موضوع تاپیک ارتباط داشته باشه. فکر نمیکنم هک ارتباطی به آموزش ویبی داشته باشه.

Shahrdar
13-05-2007, 11:57
همه رو بلد بودم ولی در کل جالب بود

mazi_z_PSP
14-05-2007, 13:43
سلام.
بهتره مطالب ارسالی با موضوع تاپیک ارتباط داشته باشه. فکر نمیکنم هک ارتباطی به آموزش ویبی داشته باشه.
منظورم تو همون تاپيک هک بود نه اینجا.اگر چيزه بهتری برايه آموزش پيدا کردم اینجا ميزارم

djcsaeed
12-07-2011, 20:53
سلام

هرچند سالهاست گذشته ولی ....

اولا می فرمایید به ویژوال بیسیک ربطی نداشت پس به چی ربط داشت

ضمنا دوست گرامی که این مطالب رو میگذارید، بد نیست منبع رو ذکر کنید.

منبع گروه کامپیوتر پرشین بلاگ در سالهای 1385 و بعد

نویسنده سید سعید فرزاد (خود بنده)

موفق و پیروز باشید.

حق نشر آموزش رو حفظ بفرمایید.

---------- Post added at 08:53 PM ---------- Previous post was at 08:52 PM ----------


همه رو بلد بودم ولی در کل جالب بود

خیلی عالیه ولی کل این مسائل آغاز برنامه نویسی شیء گرا با VB6 بود

:20:

Payman_62
14-07-2011, 12:42
سلام.
بعد این همه سال تاپیک رو کشیدی بالا که بگی به چی ربط داشت؟

احتمالا منظور گذاشتن سورس ها بوده.

djcsaeed
14-07-2011, 12:44
نه عزیز، کپی رایت بود ...