|
|
آموزش ساخت ActiveX Control |
|
|
به عنوان اولين موضوع در اين وبلاگ ميخواهيم در مورد ActiveX Control صحبت كنيم. مقداري مقدمه و بعد شروع! شما تا حالا خيلي با كنترلهاي موجود در vb كار كردهايد مثل CommandButton، Label، PictureBox و همچنين شايد با كنترلهاي خارجي مثل WindowsMwdiaPlayer، Common Dialog Control، Microsoft Windows Common Controls و... كار كرده باشيد، ولي آيا تا به حال از خودتون پرسيديد كه خود اينها چطور درست ميشن؟ شايد فكر كنيد كه براي نوشتن اينها از يك زبان ديگر مثل C و يا چيز ديگري استفاده ميشود و همچنين شايد فكر كنين كه ساختن آنها يك كار سختي است. ولي اين طور نيست، اكثر اين كنترلها را ميشود با خود VB ساخت. نحوة ساخت آنها هم دقيقاً مثل اين است كه يك فرم VB طراحي ميكنيد و شايد هم راحتتر از آن، پس تا پايان اين مقاله با ما همراه باشيد. ميخواهيم يك كنترل ساده بسازيم. اين كنترل يك دكمة ساده است كه هنگام فشرده شدن رنگ خود را عوض ميكند و پس از رها شدن دكمه ماوس توسط كاربر به رنگ اوليه خود بازميگردد. پنجره VB را باز كنيد و از پنجره محاوره New Project گزينه ActiveX Control را برگزينيد. يك صفحة خالي، دقيقاً مثل فرمهاي VB خواهيد ديد. اين پنجره، همان كنترل ما است. پروژه را ذخيره كنيد. حتمآ ديدهايد كه هنگامي كه يك كنترل را در روي فرم ميگذاريد، در پنجرة Properties در سمت چپ پنجره اصلي VB، ويژگيهاي آن كنترل ديده ميشوند و بعضي از آنها قابل تغيير هستند و بعضي نيستند، همچنين انواع مختلفي دارند، بعضي عددي هستند، بعضيها True – False هستند، بعضيها تصوير قبول ميكنند و ... . ما هم در هنگام طراحي كنترل، بايد تعدادي ويژگي يا Property براي آن تعريف كنيم، مثلاً رنگ زمينه در حالت معمولي، رنگ زمنيه در حالت فشرده شدن و ... . خود VB خيلي از Propertyهاي مورد نياز و ضروري را (مثل Name) به طور پيشفرض براي كنترل ما قرار ميدهد. براي ديدن كنترلي كه ميسازيد، ميتوانيد مانند حالت عادي از كليد F5 و يا گزينة Start از منوي Run استفاده كنيد، در اين صورت كنترل در يك پنجره Internet Explorerديده خواهد شد؛ ولي اگر بخواهيد به طور كلي آزمايش كنيد، مثلاً Propertyهاي آن را ببينيد، بايد فايل OCX بسازيد. اكنون اين عمل را بر روي كنترلي كه ساختيم انجام ميدهيم: از منوي File گزينه Make YourContrl.ocx… را انتخاب كنيد. مسير مورد نظر را انتخاب كنيد. (بهتر است يك پوشه جديد ايجاد كنيد و كنترل OCX را در آن ايجاد كنيد.) ميتوانيد با زدن كليد Options… تنظيمات بيشتري انجام دهيد. نام مورد نظر را انتخاب كرده و OK را بزنيد. كنترل مورد نظر ساخته ميشود. اكنون يك vb جديد باز كنيد و از پنجره New Project، Standard EXE را انتخاب كنيد. بر روي يكي از كنترلهاي ToolBox راستكليك كنيد و گزينة Components… را انتخاب كنيد. (ميتوانيد كليدهاي Ctrl+T را فشار دهيد.) كليد Browse… را بزنيد و مسيري كه در آن كنترل را ساختيد، باز كنيد و كنترل خود را انتخاب كرده و Open كنيد. كنترل شما به ليست اضافه خواهد شد. (احتمالاً با نام Project1). آن را تيك زده و OK كنيد. يك كنترل با عكس يك قلم به كنترلهاي موجود اضافه خواهد شد. اين كنترل، همان كنترل ما است. (در صورت Load نشدن كنترل، دوباره به Components… رفته و گزينههاي Project1 ديگر را امتحان كنيد. بعدآً نام آن را عوض خواهيم كرد.) كنترل جديد را روي فرم بگذاريد، اين كنترل بيرنگ و بياسم و بينشان، همان كنترل ما است كه Propertyهايي كه VB به صورت اتوماتيك براي آن گذاشته است در پنجره Properties قابل رؤيت هستند. اكنون اين پنجره را بسته و به پنجره طراحي كنترل خودمان بازگرديد. برنامهنويسي را شروع ميكنيم. ميخواهيم دكمه ما در حالت عادي سبز باشد و در حالت فشرده شدن، قرمز شود. روي پنجره كليد F7 را فشار دهيد تا پنجره كد باز شود. رويداد Initialize به طور پيشفرض ظاهر خواهد شد. اين رويداد هنگامي اجرا ميشود كه كاربر، كنترل ما را در روي فرم خود قرار دهد. در داخل اين Event (رويداد) كد زير را بنويسيد: UserControl.BackColor = vbGreen همانطور كه ميدانيد، اين كد رنگ زمينه را به رنگ سبز درميآورد. پنجره كد را ببنديد و با زدن كليد F5 برنامه را اجرا كنيد. در صورت ظاهر شدن پنجره محاوره Project1-Project Properties، كليد OK را فشار دهيد. كنترل را به رنگ سبز در IE خواهيد ديد. IE را ببنديد و همچنين دكمه End را نيز بزنيد. در هنگام فشرده شدن نيز بايد رنگ زمينه قرمز شود، پس پنجره كد را باز كنيد و در رويداد MouseDown كد زير را بنويسيد: UserControl.BackColor = vbRed هنگام رها كردن دكمة ماوس نيز بايد رنگ مورد نظر، دوباره سبز شود، پس در رويداد MouseUp كد زيرا را بنويسيد: UserControl.BackColor = vbGreen برنامه را اجرا كرده و امتحان كنيد. در صورتي كه فايل OCX را بسازيد و از آن در يك برنامه استفاده كنيد، در ليست رويدادهاي كنترل، رويدادهاي كمي خواهيد ديد و مثلاً رويداد مهم Click را نخواهيد ديد. براي قرار دادن اين كنترل بايد آن را تعريف كنيم. ميتوانيم اين كار را به طور دستي انجام دهيم ولي يك كار راحتتر نيز وجود دارد. از منوي Project گزينة Add UserControl را انتخاب كنيد. آيكن VB ActiveX Control Interface Wizard را انتخاب كرده و Open كنيد. يك ويزارد باز خواهد شد. از اين ويزارد براي تعريف ويژگيها و رويدادها و همچنين متدها به طور اتوماتيكوار و بدون نياز به برنامهنويسي استفاده ميشود. در صورتي كه در طراحي ActiveX حرفهاي شويد ميتوانيد با برنامهنويسي ويژگيها و بقيه را تعريف كنيد. كليد Next را فشار دهيد. گزينههاي سمت چپ، موارد تعريف شده در VB هستند و گزينههاي سمت راست، مواردي هستند كه پس از پايان ويزارد در كنترل ما قرار خواهند گرفت. تمام آنها را برگردانيد. (كليد << را فشار دهيد تا كادر سمت راست خالي شود، البته در صورتي كه قبلاً مواردي را تعريف كرده باشيم، فقط آنها در اين ليست خواهند بود. در آن موقع، با آنها كاري نداتشه باشيد). از كادر سمت چپ، Click را پيدا كرده و كليد Add (>) را بزنيد. Click به ليست سمت چپ اضافه خواهد شد. Next را بزنيد. يك ليست خالي ديگر خواهيد ديد. اين صفحه از ويزارد براي تعريف مواردي است كه در صفحه قبلي وجود نداشت. حالا با آن كاري نداريم. Next را بزنيد. در اين صفحه در كادر سمت چپ، مواردي كه انتخاب و يا تعريف كردهايم ديده ميشوند. Click را انتخاب كنيد. از منوي پايينافتادني Control، گزينه UserControl را انتخاب كنيد. در منوي پايينافتادني زير آن نيز گزينه click را انتخاب كنيد. با اين كار ما به VB گفتيم كه هنگامي رويداد Click اجرا ميشود كه كاربر روي كنترل ما (UserControl) كليك كند. Next را بزنيد. در اين صفحه تيك View Summary Report را برداريد، و Finish را كليك كنيد. پنجره كد را باز كنيد. تغييراتي خواهيد ديد. اينها همان كدهايي هستند كه ما بايد خودمان مينوشتيم. البته در تعريف رويدادها، اين كدها كم هستند، ولي هنگام تعريف Propertyها خواهيد ديد كه چقدر زيادند. حالا ميتوانيد فايل OCX را دوباره بسازيد و از آن استفاده كنيد. براي تغيير نام كنترل و همچنين پروژه، از منوي Project، زيرمنوي Project1 Properties… را انتخاب كنيد. در برگه General در كادر Project Name: نام مورد نظرتان را (مثلاً MyButton) وارد كرده و OK كنيد. در ادامه مقاله چندين Property و Event به كنترل خودمان اضافه خواهيم كرد.
|
||
|
2
نوشته شده در یکشنبه 4 اردیبهشت1384ساعت 17:47 توسط موسي مرادي
|
||