Персональний сайт - Як створювати елементи керування ActiveX у VB
Насамперед зазначимо.
VB5/CCE не дозволяє створювати автономні програми, але з ними можна працювати серед системи. Фактично такі програми можна використовувати лише для налагодження елементів керування та з метою навчання. При цьому VB5/CCE має всі інтелектуальні можливості середовища розробки VB 5.0 і дозволяє використовувати додаткові продукти третіх фірм.
Для створення елементів керування ActiveX за допомогою VB5 можна використовувати три основні сценарії:
1. Створення елементів управління від початку. VB5 має все необхідне для створення повністю автономних елементів керування ActiveX прямо в середовищі. І хоча це справді тепер можливо, цей шлях не дуже простий і, мабуть, наступні два варіанти набудуть більшого поширення.
2. Виділення підкласу та налаштування існуючого елемента керування ActiveX. Як відправна точка розробники можуть скористатися численними комерційними продуктами (в каталозі VBPJ наведено список із понад 2 тис. подібних компонентів). Для цього необхідно виділити підклас і налаштувати будь-який елемент управління, наприклад, змінивши значення його властивостей, а потім скомпілювати його, створюючи тим самим версію користувача цього компонента.
3. Об'єднання різних елементів керування ActiveX у єдиний комплекс. Для цього розробники можуть об'єднати в один проект різні готові елементи управління, потім налаштувати їх зовнішній вигляд та функції, а потім скомпілювати один компонент. Напевно, цей сценарій стане найбільш популярним способом створення елементів управління користувача.
Питання ліцензування
Елементи керування ActiveX зазвичай містять дві частини, що підлягають ліцензуванню: компонент, який використовується під час розробки(design time element), та модуль підтримки (runtime element). Зазвичай розробник набуває повних прав використання додаткового елемента управління, що дозволяє застосовувати його (елемент) у будь-якому середовищі розробки.
Після того як розробник завершує створення програми, він має право передавати його кінцевим користувачам у вигляді EXE-файлу разом з модулем підтримки для даного елемента управління. Таким чином, кінцеві користувачі отримують можливість застосування цього елемента керування ActiveX всередині цієї програми, але вони не можуть використовувати його для власних розробок.
Така ситуація аналогічна і для Інтернет-сценаріїв. Будь-який розробник може створити елемент керування ActiveX з купленого компонента ActiveX третьої фірми, а потім ви можете працювати з новим елементом управління всередині Webсторінки. Кінцевий користувач, який "запускає" його всередині цієї Webсторінки, має повні права на модуль підтримки для даного елемента управління всередині сторінки, проте він не може використовувати його для розробки, не придбавши спочатку відповідну ліцензію.
Необхідно підкреслити, що для деяких елементів керування ActiveX ліцензійна політика може відрізнятися від описаної вище. Тому завжди слід вивчати ліцензійну угоду, яка додається до конкретного елемента управління, щоб отримати точну інформацію про права використання та обмеження.
Приклад створення елемента керування ActiveX
Це ми покажемо з прикладу варіанта об'єднання готових елементів управління ActiveX серед VB5/CCE. У разі нашою метою буде створення елемента управління, зображеного на рис. 1 і зазвичай званого вертушкою (spinner). Його ідея проста - клацаючи мишею стрілки, користувачможе збільшувати чи зменшувати числове значення у вікні. Тепер, коли ми визначили, що ми хочемо отримати, можна розпочати його створення.
Мал. 1.Це зображення елемента керування, яке ми хочемо створити.
Крок 1. Створюємо тест-контейнер
Запустіть VB5/CCE, виділіть значок Standard EXE в вікні New Project і клацніть кнопку Open. Цим ви створюєте програму-контейнер, яка буде використовуватися для тестування створюваного нами елемента управління.
Крок 2. Починаємо створення нового елемента керування
У меню File виберіть команду Add Project. У діалоговому вікні Add Project виділіть піктограму ActiveX Control і натисніть кнопку Open. Тепер у вас на екрані має бути два відкриті проекти, дуже схожі один на одного. Але Project1 - це програма (Form), а Project2 - елемент управління користувача (UserControl).
Зверніть увагу, що на панелі інструментів з'явився новий елемент керування. Якщо підвести до нього курсор миші, на екрані з'явиться його поточне ім'я - "UserControl1". Однак значок, відповідний даному елементу керування, пофарбований у сірий колір, що означає, що він недоступний на даний момент. Він стане доступним лише за кілька кроків.
Якщо вас не влаштовує ім'я, присвоєне за умовчанням, його можна поміняти будь-якої миті. Давайте зробимо це зараз - виділіть у вікні проектів значок UserControl1 і в полі Name вікна Properties, що з'явилося, введіть нове ім'я, наприклад MySpinner (рис. 2).
Мал. 2.Два проекти на одному екрані: Project1 - це програма (Form), а Project2 - елемент управління користувача (UserControl).
Крок 3. Малюємо візуальний інтерфейс свого елемента управління
Для створення нашого елемента управління об'єднаємо дваСтандартні компоненти: TextBox (текстове вікно) і VSrollBar (вертикальне прокручування).
Спочатку клацніть піктограму TextBox на панелі інструментів і за допомогою миші намалюйте маленьке текстове вікно у верхньому лівому куті вікна форми Project2. Потім так само намалюйте у вікні елемент управління VScrollBar праворуч від TextBox.
Зверніть увагу, що в Project2 використовуються зараз три візуальні компоненти: спеціальна форма типу UserControl, яку ми назвали MySpinner, і два елементи керування - TextBox (Text1 - стандартне ім'я) і VScrollBar (VScroll1). Загальні розміри нового елемента керування визначатиметься саме формою UserControl. Оскільки за умовчанням вона вийшла занадто великою, то змініть за допомогою миші розміри таким чином, щоб елементи управління, що вже намальовані, опинилися всередині форми (рис. 3).
Мал. 3.Малюємо візуальний інтерфейс нового елемента управління.
Можна було зробити і по-іншому: спочатку визначити загальні розміри нової форми, а потім під неї підганяти розміри стандартних компонентів.
Крок 4. Пишемо код для керування подіями
Тепер потрібно написати певний код, за допомогою якого поточне значення вертикального прокручування буде відображатися в текстовому вікні при натисканні мишею стрілок. Для цього двічі клацніть мишею зображення намальованої вами вертикальної прокрутки і в вікні Code в процедуру VScroll1_Change (обробка події "Зміна значення") введіть наступний рядок:
Зверніть увагу, що як тільки ви ввели знак ".", на екрані з'явився список всіх допустимих властивостей для даного елемента керування (мал. 4) текстового вікна. Це приклад нових "інтелектуальних" властивостей середовища розробки VB. Ви можете або вибрати потрібний елемент списку (клацнувши двічімишею або виділивши клавішами та натиснувши Tab), або ввести ім'я властивості вручну. В останньому випадку курсор сам пересувається за списком, і якщо ви, не закінчивши повністю введення імені, натиснете Tab або Enter, автоматично вставиться поточний елемент списку. (При введенні "Value" достатньо ввести "v".) На жаль, якщо ви введете неправильне ім'я (наприклад, "velue"), то жодного повідомлення про помилку відразу не з'явиться - це буде виявлено лише при запуску програми на виконання або компіляції.
Мал. 4.Пишемо код для керування подіями.
Загалом новий елемент управління готовий. Тепер закрийте вікно Code, клацнувши на ньому кнопку "Закрити" ("хрестик" у правому верхньому кутку), а потім так само закрийте Project2.
Крок 5. Протестуємо отриманий елемент керування
Зараз, якщо ви все зробили правильно, елемент керування MySpinner на панелі інструментів не пофарбований у сірий колір, що означає, що він готовий для використання.
Щоб протестувати його, клацніть цей значок на панелі інструментів і намалюйте його на формі Form1 як показано на рис. 5. Натисніть клавішу F5 або кнопку Start, щоб запустити програму. Коли ви почнете клацати стрілки MySpinner, числове значення у тестовому вікні змінюватиметься. Запрацювало!
Мал. 5.Тестування першого варіанта нового елемента управління.
Крок 6. Продовжуємо розробку – подальша модернізація MySpinner
Запрацювало, але не зовсім так, як цього хотілося б. По-перше, у момент запуску програми з'являється незрозуміле слово "text", і тільки після того, як ви натиснули стрілки, - потрібні числові значення. По-друге, сам шрифт у вікні надто дрібний. По-третє, числове значення не хоче ставати менше нуля. Отже, наш елемент управління вимагає деякого доопрацювання.
Для цього знову викличемо на екран Project2, натиснувши його значок у вікні Project. Зверніть увагу, що піктограма MySpinner у вікні інструментів знову стала сірою (недоступною), а зображення на формі Form1 вкрилося штрихуванням.
Зробимо необхідні доповнення. У вікні Properties для елемента управління Text1 встановимо значення властивості Text = 000 (просто щоб добре бачити розмір цифр), а потім клацнемо назву властивості Font і в вікні встановимо потрібний розмір шрифту, наприклад 18. А для VSrcoll1 надамо властивості Min (нижня межа діапазону ) значення -32766. Двічі клацніть за формою MySpinner і в процедурі UserControl_Initialize (вікно Code) введемо рядок для встановлення початкового значення вікна (рис. 6):
Мал. 6.Продовжуємо розробку нашого компонента. Уточнюємо значення властивостей та програмний код.
Крок 7. Створення автономного управління
Закриємо всі вікна Project2 і повторимо тестування, описане у кроці 5. Тепер наш елемент управління працює набагато краще і виглядає симпатичніше (рис. 7).
Мал. 7.Так виглядає остаточний варіант нового елемента управління тестовому додатку.
Тепер можна створити автономний компонент. Для початку замінимо стандартне ім'я Project2 більш оригінальне, наприклад TestCont. Потім у меню File виберемо команду TestCont.ocx, у вікні Make Project натиснемо OK і. наш автономний елемент керування MySpinner, записаний під ім'ям TextCont.ocx, готовий до використання у будь-якому середовищі розробки, яке підтримує технологію ActiveX.
Запустіть ще раз VB5 (будь-яку редакцію), виберіть у меню Project команду Components, знайдіть у вкладці Controls наш TestCont, позначте його, а потім натисніть OK. Новий елемент управління MySpinner відразу ж з'явиться напанелі інструментів. Можете працювати