Використання властивостей OleContainer

Як визначити характеристики OLE-об'єкта, розміщеного в OleContainer, і керувати ним?

Ім'я класу об'єкта OLE можна отримати за допомогою властивості OleClassName. Список доступних команд можна отримати за допомогою ObjectVerbs. Метод DoVerb дозволяє викликати одну із цих команд, посилаючись на її порядковий номер у списку. Цілісна властивість PrimaryVerb містить номер команди з цього списку, що виконується при активації OLE-об'єкта. Стан контейнера можна визначити за допомогою State.

Для ілюстрації їх роботи на панель із OleContainer помістимо компоненти TComboBox та TEdit.

void __fastcall TForm1::Button1Click(TObject *Sender)

if (OleContainer1->State != osEmpty)

Створення елементів керування ActiveX Поняття ActiveX.

Технологія ActiveX базується на технології Microsoft COM і дозволяє створювати та використовувати програмні компоненти, що надають різні сервіси іншим програмам та операційній системі.

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

OLE-документи - складові документи, які містять впроваджені чи пов'язані об'єкти. Ця специфікація описує правила створення контейнерів для таких документів з активацією за місцем. Зазначимо, що компонент OLEContainerDelphi та C++Builder створено з урахуванням цієї специфікації (цій темі буде присвячена одна з наступних статей цього циклу).

Керуючі елементи ActiveX, що використовують спеціальний варіант протоколу Automation (про них і йтиметься в цій статті).

Використання СОМ, і зокрема технології ActiveX, дозволяє створювати програми, що збираються з готових компонентів - елементів керування ActiveX. При цьому не маєзначення, якою мовою програмування написані як готові компоненти, так і використовує їх додаток, - аби засіб розробки підтримував можливість використання таких компонентів в додатку, що розробляється (такий додаток зазвичай називається контейнером).

Елементи керування ActiveX своєю поведінкою нагадують компоненти на панелі C++Builder. Їх можна помістити на проектовану форму, і при цьому в інспекторі об'єктів з'являться їхні властивості та події. Можна також викликати їх методи на етапі виконання програми, що використовує їх. Як було сказано вище, головна відмінність елементів ActiveX від компонентів VCL полягає в тому, що якщо компоненти, написані на Delphi, доступні для використання тільки в Delphi та C++Builder, а компоненти, написані на C++ Builder - тільки в C++ Builder, то елементи керування ActiveX можна застосовувати в будь-яких засобах розробки, що підтримують використання в додатках СОМ-об'єктів, наприклад Visual Basic, Microsoft Visual C++, PowerBuilder, Visual dBase та ін.

Елементи керування ActiveX являють собою бібліотеки, що містять код, що виконується. Ці бібліотеки можуть бути використані в різних додатках як вбудовані елементи управління, тому вони мають властивості, події та методи, доступні за допомогою автоматизації. Переважна більшість сучасних засобів розробки, як правило, дозволяє включати такі елементи в додатки, що створюються з їх допомогою. Крім цього, елементи керування ActiveX нерідко використовуються як розширення Web-браузерів з метою надання їм додаткової функціональності, наприклад, для відображення документів, відмінних від підтримуваних даним браузером.

Як будь-який СОМ-сервер, елемент керування ActiveX має унікальний ідентифікатор GUID імає бути зареєстрований у реєстрі. На підставі цього запису може бути здійснений пошук розташування файлу з розширенням *.осх, що містить його реалізацію.

Таким чином, створивши елемент керування ActiveX, що володіє функціональністю, що вас цікавить, ви можете надалі дозволити його користувачам вбудовувати цей елемент у свої додатки (наприклад, написані на Visual Basic, PowerBuilder, Delphi, C++Builder, Visual dBase та ін), відображати його в Web-браузері у складі вивантаженої з вашого Web-сервера HTML-сторінки, включати його до складу документів MS Office, при цьому ви не повинні представляти вихідний текст цього компонента.

Коли потрібно створювати керуючі елементи ActiveX?

Такий набір переваг зробив цю технологію дуже популярною, і саме тому багато сучасних засобів розробки, таких як Delphi або C++Builder, дозволяють створювати елементи керування ActiveX. Ці засоби зазвичай мають вбудовані механізми підтримки специфікації ActiveX за допомогою автоматичної генерації відповідного коду (хоча, звичайно, можна писати подібний код вручну).

Специфікація ActiveX є набором правил (а саме опис стандартних інтерфейсів), за допомогою яких слід створювати такі елементи управління. Зазначимо, що поточна версія цієї специфікації враховує можливість використання як контейнера Web-браузерів та необхідність завантаження елементів ActiveX з віддалених Web-серверів з їхньою автоматичною реєстрацією.