1 Що таке activex, система, visual c, статті на
Використання COM, і, зокрема, технології ActiveX, дозволяє забезпечити створення додатків, що збираються з готових компонентів - елементів управління ActiveX, що відрізняється від звичної користувачам C ++ Builder або Delphi розробки додатків за допомогою VCL-компонентів тим, що така "збірка« не залежить від того, якою мовою написані як готові компоненти, так і використовує їх додаток - аби засіб розробки підтримувало можливість використання таких компонентів в додатку, що розробляється (такий додаток зазвичай називається контейнер м).
Елементи управління ActiveX представляють собою бібліотеки, що містять виконуваний код. Як було сказано вище, ці бібліотеки можуть бути використані в різних додатках як вбудовані елементи управління, тому вони мають властивості, подіями і методами, доступними за допомогою автоматизації. Сучасні засоби розробки, як правило, дозволяють включати такі елементи в створювані з їх допомогою додатка. Крім цього, елементи управління ActiveX нерідко використовуються в якості розширень web-браузерів з метою надання їм додаткової функціональності, наприклад, для відображення документів, відмінних від підтримуваних даними браузером.
Як будь-який COM-сервер, елемент управління ActiveX володіє унікальним ідентифікатором GUID і повинен бути зареєстрований в реєстрі. На підставі цього запису може бути здійснено пошук місця розташування файлу з розширенням * .ocx, що містить його реалізацію.
Таким чином, створивши елемент управління ActiveX, що володіє що цікавить Вас функціональністю, Ви можете надалі дозволити його користувачам вбудовувати цей елемент в свої додатки (наприклад, написані на Visual Basic, PowerBuilder, Delphi, C ++ Builder і ін.), Відображати його в web-браузері в складі вивантажених з Вашого web-сервера HTML-сторінки, включати його до складу документів MS Office, при цьому Ви не зобов'язані надавати вихідний текст цього компонента.
Такий набір переваг зробив цю технологію за останні два роки дуже популярною, і саме тому багато сучасних засобів розробки, такі, як Delphi або С ++ Builder, дозволяють створювати елементи управління ActiveX. Ці кошти зазвичай мають вбудовані механізми підтримки специфікації ActiveX за допомогою автоматичної генерації відповідного коду (хоча, звичайно, не забороняється писати подібний код вручну).
Специфікація ActiveX являє собою набір правил (а саме опис стандартних інтерфейсів), за допомогою яких слід створювати такі елементи управління. Відзначимо, що поточна версія цієї специфікації враховує можливість використання в якості контейнера web-браузерів і необхідність завантаження елементів ActiveX з віддалених web-серверів з їх автоматичною реєстрацією.
2 Створення елементів управління ActiveX на основі VCL-компонентів
Як було сказано вище, C ++ Builder 3 дозволяє створювати елементи управління ActiveX на основі VCL-компонентів. Для цієї мети використовується бібліотека Microsoft ATL (Active Template Library), що є на сьогоднішній день індустріальним стандартом і дозволяє створювати елементи ActiveX, що представляють собою скомпільований код і не потребують додаткових run-time-бібліотек для їх виконання. Процес створення такого елемента управління вельми простий.
Для створення елемента управління ActiveX слід вибрати з репозитария об'єктів сторінку ActiveX і далі - елемент ActiveX Control.
Далі слід заповнити з'явилася діалогову панель:
Рис.1. Вибір імені ActiveX, імен модулів і базового VCL-класу
Слід вибрати VCL-компонент, на основі якого буде створено елемент ActiveX. Як приклад виберемо TCalendar.
В результаті роботи ActiveX Control Wizard будуть створені кілька модулів, згенерований унікальний ідентифікатор (GUID) майбутнього ActiveX, а також відповідна бібліотека типів.
Рис.2. Проект бібліотеки ActiveX в С ++ Builder
Бібліотека типів містить відомості про властивості, події і методи компонента ActiveX, успадкованих від вихідного VCL-компонента.
Рис.3. Бібліотека типів створеного елемента ActiveX
У коді, пов'язаному з реалізацією ActiveX, можна знайти опис цих властивостей і методів.
Далі слід зберегти і скомпілювати проект і зареєструвати елемент ActiveX в реєстрі. Це робиться за допомогою вибору пункту меню Run / Register ActiveX Server.
Після цього можна протестувати створений ActiveX-компонент, відкривши його, наприклад, в Visual Basic. Відзначимо, що останні версії саме цього засобу розробки широко використовують елементи керування ActiveX в якості складових частин створюваних з їх допомогою додатків; фактично додатки Visual Basic зібрані повністю з ActiveX-компонентів. Більш того, специфікація ActiveX створена з урахуванням того, що в першу чергу Visual Basic і Visual C ++ (і лише потім інші засоби розробки) можуть бути контейнерами для цих елементів управління. Тому тестування поведінки ActiveX в VisualBasic може більш-менш гарантувати, що в інших засобах розробки цей керуючий елемент буде вести себе точно так само.
Після цього можна помістити наш ActiveX на форму і спробувати змінити будь-які його властивості, використовуючи для цієї мети вікно "Властивості".
Рис.4. Тестування ActiveX в Visual Basic
Private Sub CommandButton1_Click ()
UserForm1.Show
End Sub
Тепер можна натиснути на панелі інструментів "Visual Basic" кнопку "Вихід з режиму конструктора". Після цього натискання на створену в тілі документа кнопку призведе до появи діалогової панелі зі створеним нами елементом управління.
Можна було б, звичайно, протестувати поведінку створеного ActiveX, встановивши його в палітру компонентів Delphi або C ++ Builder. але це не найкращий спосіб тестування - адже в основі створення нашого ActiveX лежить та ж сама бібліотека VCL, що і в основі створюваного додатка для тестування ActiveX. Використання для цієї мети будь-якого не має відношення до VCL кошти розробки, здатного використовувати елементи управління ActiveX в створюваних додатках, більш виправдано. При цьому слід зауважити, що Visual Basic for Applications є найбільш часто зустрічається засіб розробки такого класу, так як входить до складу найпопулярнішого в нашій країні офісного пакету.
3 Створення сторінок властивостей
Так як елементи керування ActiveX можуть бути використані в засобах розробки, нерідко вони мають набір сторінок властивостей, що дозволяє користувачам змінювати ті чи інші властивості цього елемента управління.
Для створення сторінки властивостей виберемо з репозитария об'єктів сторінку ActiveX і елемент Property Page. В результаті отримаємо форму, на якій можна розміщувати інтерфейсні елементи.
Створимо сторінку для редагування властивостей CalendarDate і GridLineWidth. Для цього розмістимо на новоствореної формі два компоненти TStaticText і два компонента TEdit.
Рис.5. Сторінка властивостей на етапі проектування
У створеній формі є згенеровані прототипи обробників подій UpdatePropertyPage і UpdateObject. Додамо в них відповідний код:
Далі слід створити посилання на сторінці властивостей в модулі, що описує реалізацію елемента ActiveX. З цією метою слід модифікувати h-файл .Модіфікація коду полягає у вставці рядка, що вказує на необхідність реєстрації сторінки властивостей:
Слід також включити посилання на h-файл сторінки властивостей в h-файл реалізації ActiveX.
Далі слід заново скомпілювати бібліотеку ActiveX і зареєструвати її.
Якщо тепер в середовищі розробки Visual Basic помістити на призначену для користувача форму наш ActiveX і вибрати сторінку властивостей "Спеціальні", отримаємо створену нами сторінку:
Рис.6. Сторінка властивостей на етапі тестування ActiveX
При зміні значень в компонентах TEdit можна переконатися, що змінюються і відповідні властивості елемента ActiveX.
Рис.7. Результат використання сторінки властивостей
4 Створення активних форм
Активна форма - це елемент управління ActiveX, що містить кілька VCL-компонентів. Можливість створення таких елементів управління дозволяє істотно розширити коло доступних для елементів ActiveX функціональних можливостей. Створення такого ActiveX відбувається приблизно так само, як і створення звичайного застосування.
Спробуємо створити найпростіший приклад такого елемента управління. Для його створення слід вибрати зі сторінки ActiveX сховища об'єкт ActiveForm, відповісти на питання про ім'я компонента, після чого в дизайнера форм отримаємо порожню форму - заготовку майбутнього ActiveX. Додамо на цю форму компоненти TCheckBox, TButton, TImage і TOpenPictureDialog.
Рис.8. Активна форма на етапі проектування
Створимо оброблювачі подій, пов'язаних з TCheckBox і TButton:
Тепер можна скомпілювати додаток, зареєструвати створений ActiveX і протестувати його зазначеним вище способом.
Рис.9. Тестування активної форми в Visual Basic
Можна також протестувати створений ActiveX c допомогою відображення його в Internet Explorer. Для цієї мети можна вибрати пункт меню Project / Web Deployment Options і на сторінці Project в полях Target dir, Target URL, HTML dir цього діалогу вказати ім'я якогось локального каталогу.
Потім можна вибрати опцію Project / Web Deploy і після закінчення роботи Web Deployment Wizard відкрити в Internet Explorer автоматично згенерувала С ++ Builder html-сторінку c ім'ям, що збігається з ім'ям створеного проекту:
Рис.10. Тестування активної форми в Internet Explorer
Рис.11. Налаштування опцій поставки ActiveX через Internet
Крім цього, слід звернути увагу на додаткові "пакети" або інші файли, які мають бути включені в поставку, якщо опції проекту такі, що вимагають використання будь-яких додаткових бібліотек. Поділ ActiveX на кілька файлів і виділення окремих пакетів може бути використано для того, щоб зменшити в цілому час завантаження ActiveX через Internet, наприклад, в разі майбутньої необхідності оновлення версії ActiveX або при поставці декількох різних ActiveX - в цьому випадку частина "пакетів" може бути встановлена один раз, а далі проводиться поставка лише невеликий змістовної частини елемента ActiveX. Втім, не забороняється створювати ActiveX і у вигляді одного файлу. Відзначимо також, що при виборі опції Include CAB File compression можна зібрати використовувані файли в один файл з розширенням * .cab, фактично представляє собою архів, що також зменшує приблизно в два рази час завантаження файлів через Internet.
Слід зазначити, що в активних формах можна використовувати практично всі компоненти C ++ Builder, крім TMainMenu. Можлива також динамічна генерація додаткових форм на етапі виконання, при цьому додаткові форми вже не будуть міститися в контейнері, а будуть являти собою звичайні форми Windows (і, природно, можуть містити в тому числі і TMainMenu).
На закінчення відзначимо, що, редагуючи бібліотеку типів, можна до створених ActiveX додавати властивості і методи і потім описувати їх реалізацію у відповідному модулі.