1 Що таке ActiveX, Система, C / C + +, статті

Технологія ActiveX, розглянута в цій статті, базується на технології
Microsoft COM (Component Object Model – модель компонентних об’єктів),
дозволяє створювати і використовувати програмні компоненти, що мають
різні сервіси іншим додаткам, компонентів та операційній системі. COM
являє собою одну з реалізацій концепції розподілених обчислень,
базується в загальному випадку на наданні можливості додаткам
використовувати для розширення своєї функціональності готові компоненти та об’єкти
(Іноді вони називаються сервісами). Технологія COM дозволяє використовувати
об’єктно-орієнтований підхід не в рамках однієї програми, а в рамках
операційної системи, але, на відміну від стандартних класів, визначених у
початковому тексті і реалізованих як об’єкти в адресному просторі одного
процесу, ці компоненти можуть у загальному випадку розташовуватися в адресних
просторах різних процесів і навіть на різних комп’ютерах.

В даний час існують три типи специфікацій COM, визначених
Microsoft і включають велику кількість інтерфейсів і функцій:


Використання 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, при цьому Ви не зобов’язані надавати вихідний текст цього компонента.

Коли слід створювати керуючі елементи ActiveX? Природно, в тих
випадках, коли функціональність, що міститься в такому елементі, унікальна. Немає
сенсу створювати ActiveX, який реалізує функціональність кнопки або текстового
редактора – таких елементів управління, у тому числі виконаних у вигляді ActiveX,
на ринку готових компонентів більш ніж достатньо. Немає сенсу створювати
ActiveX, якщо він буде використовуватися тільки в C + + Builder – в цьому випадку простіше
створити VCL-компонент, який буде працювати в використовує його додатку
значно швидше, ніж аналогічний ActiveX. Але створення елемента керування,
реалізує, наприклад, частина автоматизованого робочого місця будь-якої
категорії співробітників Вашого підприємства може в ряді випадків виявитися вельми
корисним, особливо в наступних двох випадках. Перший випадок – використання на
підприємстві різних засобів розробки, наприклад, C + + Builder і Visual Basic; в
цьому випадку розробник, що використовує Visual Basic, може вбудовувати в свої
програми ActiveX, створений іншим розробником і реалізує якусь
функціональність, використовувану кількома різними автоматизованими
робочими місцями. Другий випадок – широке використання Internet або intranet
при автоматизації підприємства. В цьому випадку ActiveX, який реалізує подібну
функціональність, може бути вбудований в HTML-сторінку і відображений в web-броузері.
Такий підхід суттєво полегшує вирішення проблеми оновлення версій
автоматизованих робочих місць, тому що замість установки нових версій на
робочих станціях досить замінити один примірник ActiveX, що зберігається на
web-сервері. Найбільш яскравим прикладом такого підходу може бути виконаний в
вигляді ActiveX «тонкий» клієнт, який отримує дані від віддаленого сервера
додатків, є, у свою чергу, клієнтом серверної СУБД.

Такий набір переваг зробив цю технологію за останні два роки дуже
популярною, і саме тому багато сучасних засобів розробки, такі, як
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.

Зазначимо, що при виборі опції Include Design-Time Licence автоматично буде
згенерований файл з розширенням *. lic, без якого даний ActiveX не можна буде
використовувати ні в яких засобах розробки, але можна постачати з готовими
додатками. Використання такого файлу буває зручно у випадку, коли ActiveX
поставляється безкоштовно його автором у складі готового продукту, але вимагає
окремого ліцензування при вбудовуванні його іншими користувачами в свої
розробки.

В результаті роботи 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 може більш-
менше гарантувати, що в інших засобах розробки цей керуючий елемент
буде вести себе так само.

У разі відсутності Visual Basic можна скористатися й більш широко
поширеним Visual Basic for Applications. З цією метою можна запустити
Microsoft Word 97, створити новий документ і вибрати на панелі інструментів
кнопку “Редактор Visual Basic”. Далі слід вибрати у вікні “Project” ім’я знову
створеного документа, клацнути по ньому правою кнопкою миші і з отриманого
контекстного меню вибрати опцію “Вставити / UserForm”. На екрані з’явиться редактор
форм Visual Basic і панель елементів. Далі потрібно натиснути правою клавішею миші
по панелі елементів і вибрати з контекстного меню опцію “Додаткові
елементи “. Тепер слід із списку всіх зареєстрованих
елементів управління ActiveX вибрати потрібний, і він автоматично опиниться на
панелі елементів Visual Basic (можна помістити його на єдину наявну
сторінку керуючих елементів або створити свою, вибравши опцію “Створити сторінку”
з контекстного меню ярличків блокнота, розташованого на панелі елементів).

Після цього можна помістити наш ActiveX на форму і спробувати змінити
будь-які його властивості, використовуючи для цієї мети вікно “Властивості”.



Рис.4. Тестування ActiveX в Visual Basic

І, нарешті, можна повернутися в редагований документ, помістити на нього
кнопку, двічі клацнути по ній і у вікні редактора коду створити процедуру,
показує створену форму, вписавши в згенерований код рядок UserForm1.Show
:

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. Додамо в них відповідний код:

void __fastcall Tpp2f::UpdatePropertyPage(void)
{
Edit1->Text=OleObject.OlePropertyGet
("CalendarDate");
Edit2->Text=OleObject.OlePropertyGet
("GridLineWidth");
}
//———————————————–
void __fastcall Tpp2f::UpdateObject(void)

{
OleObject.OlePropertySet("CalendarDate",
Variant(Edit1->Text));
OleObject.OlePropertySet("GridLineWidth",
Variant(Edit2->Text));
}


Далі слід створити посилання на сторінці властивостей в модулі, що описує
реалізацію елемента ActiveX. З цією метою слід модифіковані h-файл
. Модифікація коду полягає у вставці рядка, що вказує на необхідність
реєстрації сторінки властивостей:

BEGIN_PROPERTY_MAP(TCCX2Impl)
PROP_PAGE(CLSID_pp2f)
END_PROPERTY_MAP()

Слід також включити посилання на 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:

void __fastcall TActiveFormX::Button1Click
(TObject *Sender)
{
if (OpenPictureDialog1->Execute())
Image1->Picture->LoadFromFile
(OpenPictureDialog1->FileName);
}
//———————————————–

void __fastcall TActiveFormX::CheckBox1Click
(TObject *Sender)
{
Image1->Stretch=CheckBox1->Checked;
}


Тепер можна скомпілювати програму, зареєструвати створений 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

Зазначимо, що для успішного відображення ActiveX у броузері потрібно Microsoft
Internet Explorer версії 3.0 і вище, при цьому налаштування рівня безпеки
повинні дозволяти запуск активного вмісту, розташованого в Intranet-зоні.
Якщо як броузера використовується Netscape Navigator, він повинен бути оснащений
модулем розширення (plug-in), що дозволяє інтерпретувати тег
мови HTML як елемент керування ActiveX (природно, така можливість
існує тільки для версій Navigator, що виконуються під управлінням
32-розрядних версій Windows). Відзначимо також, що згенерувала автоматично
сторінку можна надалі відредагувати за допомогою будь-якого html-редактора (або
навіть будь-якого текстового редактора).

При поставці ActiveX через Web процедура аналогічна описаній, але замість
локальних каталогів в рядку URL слід вказати Internet-адреса Web-сервера:



Рис.11. Настроювання опцій поставки
ActiveX через Internet

Крім цього, слід звернути увагу на додаткові “пакети” або інші
файли, які слід включити в поставку, якщо опції проекту такі, що
вимагають використання будь-яких додаткових бібліотек .. Поділ ActiveX
на кілька файлів і виділення окремих пакетів може бути використано для
того, щоб зменшити в цілому час завантаження ActiveX через Internet, наприклад, в
випадку майбутньої необхідності оновлення версії ActiveX або при поставці
кількох різних ActiveX – в цьому випадку частина “пакетів” може бути встановлена
один раз, а далі проводиться поставка лише невеликий змістовної частини
елемента ActiveX. Втім, не забороняється створювати ActiveX і у вигляді одного
файлу. Відзначимо також, що при виборі опції Include CAB File compression можна
зібрати використовувані файли в один файл з розширенням *. cab, фактично
представляє собою архів, що також зменшує приблизно в два рази час
завантаження файлів через Internet.

Слід зазначити, що в активних формах можна використовувати практично всі
компоненти C + + Builder, крім TMainMenu. Можлива також динамічна генерація
додаткових форм на етапі виконання, при цьому додаткові форми вже не
будуть міститися в контейнері, а будуть представляти собою звичайні форми Windows
(І, природно, можуть містити в тому числі і TMainMenu).

На закінчення відзначимо, що, редагуючи бібліотеку типів, можна до створених
ActiveX додавати властивості і методи і потім описувати їх реалізацію в
відповідному модулі.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*