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

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 3 123 آخرآخر
نمايش نتايج 1 به 10 از 21

نام تاپيک: آموزش ويژوال بيسيک (2)

  1. #1
    Banned
    تاريخ عضويت
    Mar 2007
    محل سكونت
    Forum.p30world
    پست ها
    1,546

    پيش فرض آموزش ويژوال بيسيک (2)

    سلام دوستان. این تاپيک برايه این ساخته شده که دوستانی که دنبال مقاله آموزشی ميگردند بتوانند در اینجا به راحتی پيدا کنن. اما متاسفانه من نميتوانم پاسخگو سوالت و مشکلات شما باشم . شما ميتوانيد در تاپيک آموزش گام به گام از تکنيک برتر سوالات خود را بپرسيد .با تشکر

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

  2. #2
    Banned
    تاريخ عضويت
    Mar 2007
    محل سكونت
    Forum.p30world
    پست ها
    1,546

    پيش فرض

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

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

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

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

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

    If i < 1 And _

    i > -5 Then

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

    Form1_

    My FormCaption=

    در اين صورت شما در هنگام اجراي برنامه با خطاي دستوري يا (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 را در يك فايل فشرده قرار داده ايم تا كساني كه بهر دليل به آن دسترسي نداشتند بتوانند از [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] دانلود كرده و استفاده كنند. رمز فايل : www.computer.persianblog.com

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

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

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

  3. #3
    Banned
    تاريخ عضويت
    Mar 2007
    محل سكونت
    Forum.p30world
    پست ها
    1,546

    پيش فرض

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

    با سلام

    جلسه ي قبل يعني جلسه اول آموزش متوسطه ويژوال بيسيك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 : شكل ما بصورت مربع گرد خواهد بود.

    خاصيت WidthBorder : به كمك اين خصيصه ميتوانيم ضخامت شكل مورد نظر را تعيين نماييم. محدوده ي اين ضخامت از 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 : اين حالت برعكس حالت قبلي است، يعني كاربر تنها ميتواند گزينه اي از ليست را برگزيند و نميتواند داده اي را وارد نمايد.

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

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

  4. #4
    Banned
    تاريخ عضويت
    Mar 2007
    محل سكونت
    Forum.p30world
    پست ها
    1,546

    پيش فرض

    آموزش ويژوال بيسيك۶ متوسطه (بخش ۳)

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

    سلام

    جلسه ي قبل با چند عنصر از جمله 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 استفاده ميكنيد در حالي كه برنامه تفاوتي به نوع زبان و بزرگي و كوچكي حرف ندارد.

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

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

  5. #5
    حـــــرفـه ای Jalal's Avatar
    تاريخ عضويت
    Jun 2006
    محل سكونت
    تهران و حومه
    پست ها
    7,972

  6. #6
    اگه نباشه جاش خالی می مونه whisper's Avatar
    تاريخ عضويت
    Dec 2006
    پست ها
    295

    پيش فرض

    مازی جان به نظر من شما وقتتو رو یه چیز دیگه بزار که تو این سایت کمتر باشه نه Vb6! دیگه خیلی قدیمی و تکنیک برتر یه کاملشو گذاشته حداقل ویروس نویسی رو آموزش بده که اینقدر در بارش فعالیت می کنی!!

  7. #7
    Banned
    تاريخ عضويت
    Mar 2007
    محل سكونت
    Forum.p30world
    پست ها
    1,546

    پيش فرض

    باشه عزيز من هم همين کار رو کردم. آموزش ويروس نويسی هستش. چون يه چند وقتی هست که تکنيک مقاله ای نذاشته من خواستم بهتر کمک کنم به دوستانی که ميخوان ياد بگيرن

  8. #8
    Banned
    تاريخ عضويت
    Mar 2007
    محل سكونت
    Forum.p30world
    پست ها
    1,546

    پيش فرض

    نه فقط سعی ميکنم مقاله ها و محتواشون فرق کنه

  9. #9
    Banned
    تاريخ عضويت
    Mar 2007
    محل سكونت
    Forum.p30world
    پست ها
    1,546

    پيش فرض

    آموزش ويژوال بيسيك۶ متوسطه (بخش ۴)

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

    سلام به همگي

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

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

    عنصر 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

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

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

  10. #10
    Banned
    تاريخ عضويت
    Mar 2007
    محل سكونت
    Forum.p30world
    پست ها
    1,546

    پيش فرض

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

    عنصر 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 را نداشته و تنها فريم اول آن را نمايش ميدهد. براي نمايش اينگونه تصاوير بايد از عنصر ديگري بهره بگيريم كه در آينده به آن اشاره خواهيم داشت.

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

صفحه 1 از 3 123 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •