Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций РСОИ.doc
Скачиваний:
20
Добавлен:
04.11.2018
Размер:
1.93 Mб
Скачать

2.12. Технологія ActiveХ

Продовженням розвитку технології COM є створення єдиного стандарту реалізації компонентного підходу до програмування – стандарту ActiveХ.

З погляду моделі об’єктів COM елемент керування ActiveХ – це сервер, що підтримує технологію Automation, реалізований у вигляді динамічної бібліотеки, що виконується в адресному просторі вашого застосунка і дозволяє візуальне редагування.

2.12.1. Використання готових елементів АctiveХ

Разом з Delphi постачається ряд компонентів ActiveX від сторонніх розроблювачів (ChartFX, VSSpell та інших). Інформація про встановлені в системі елементи ActiveX є в реєстрі Windows. Для перегляду цього списку необхідно вибрати пункт меню Delphi Component/Import ActiveX Control. У формі, що з’явилася – Import ActiveX – подана інформація про всі елементи ActiveX, зареєстровані у системі. У рядку під списком вибору показано, у яких файлах вони розташовані.

Зазвичай, всі елементи ActiveX, які розповсюджуються у складі великих програмних продуктів, реєструються автоматично при їхній інсталяції. Зареєструвати новий елемент можна, принаймні, трьома шляхами:

  1. натисканням кнопки Add у цьому діалоговому вікні;

  2. викликанням системної утиліти regsvr32.exe (входить до складу операційних систем родини Windows (95/98/NT/XP/Vista), а також OSR2);

  3. викликанням утиліти tregsvr, що постачається з Delphi у вихідних текстах (папка \DEMOS\...\ACTIVEX\TREGSVR, де «…» означають можливі проміжні підкаталоги залежно від версії середовища Delphi).

Якщо обрано один з елементів ActiveX, у полі Class Names будуть перераховані всі класи, що містяться в цьому файлі. В інших полях пропонується вибрати сторінку Палітри компонентів для майбутнього використання обраного елемента в Delphi.

Наступний крок – створення файла обгортки (wrapper). Цей файл являє собою опис бібліотеки типів (усіх методів, властивостей і подій, що містяться в елементі) мовою Object Pascal. Його ім’я складається з імені ActiveX і рядка “_TLB.PAS”. Натискання кнопки Create Unit тільки створює цей файл (з метою ознайомлення і тестування), а натискання кнопки Install продовжує процедуру встановлення.

Примітка 1. Елемент керування, що встановлюється, має вміщуватися в один з пакетів (packages). Можна вибирати один з наявних файлів DPK чи створити новий. Після компіляції пакета елемент ActiveX у вашому розпорядженні.

Примітка 2. У разі виконання численних експериментів з різними ActiveХ-елементами, визначаючи ступінь їхньої придатності, краще створити новий пакет.

Деінсталяцію елемента ActiveX варто починати з видалення посилання на нього. Для цього треба відкрити необхідний файл DPK, забрати непотрібні елементи і перекомпілювати пакет. Після цього елемент (чи елементи) зникнуть зі сторінки в Палітрі компонентів. Якщо ви впевнені, що цей елемент більше ніким не використовується, можете видалити інформацію про нього із системного реєстру (кнопка Remove). Тільки після цього можна видалити з диска сам файл OCX (DLL).

Розглянемо як приклад використання елемента IwebBrowser зі складу Microsoft Internet Controls (файл SHDOCVW.DLL). Він являє собою ядро браузера від Microsoft, до того ж його використання наочне і не позбавлене практичного змісту.

Використання елемента IWebBrowser

Після того, як виконано всі описані вище операції, у вашому розпорядженні буде файл SHDOCVW_TLB.PAS. У ньому наведено опис інтерфейсу IWebBrowser:

IWebBrouser = interface(IDispatch) [IID]

Procedure GoBack; safecall;

Procedure GoForward; safecall;

Procedure GoHome; safecall;

Procedure GoSearch; safecall;

Procedure Navigate(url: WideString; var flags: OleVariant, var TargetFrameName: OleVariant; var PostData: OleVariant; var Headers: OleVariant); safecall;

Procedure Refresh; safecall;

Procedure Refresh2(var Level:OleVariant,); safecall;

Procedure Stop; safecall;

Function Get_Application: IDispatch; safecall;

Function Get_Parent: IDispatch; safecall;

Function Get_Container: IDispatch; safecall;

Function Get_Document: IDispatch; safecall;

Function Get_TopLevelContainer: WordBool; safecall;

Procedure Get_Type: WideString; safecall;

Function Get_Left: Integer; safecall;

Procedure Set_Left(P: Integer); safecall;

Function Get_Top: Integer; safecall;

Procedure Set_Top(P: Integer); safecall;

Function Get_Width: Integer; safecall;

Procedure Set_Width(P: Integer); safecall;

Function Get_Height: Integer; safecall;

Procedure Set_Height(P: Integer); safecall;

Function Get_LocationName: WideString; safecall;

Function Get_LocationURL: WideString; safecall;

Procedure Get_Lbusy: WordBool; safecall;

Property Application: IDispath read GetApplication_;

Property Parent_: IDispath read Get_Parent;

Property Container_: IDispath read Get_Container;

Property Document_: IDispath read Get_Document;

Property TopLevelContainer_: WordBool read Get_TopLevelContainer;

Property Type_: WideString read Get_Type;

Property Left: Integer read Get_Left write Set_Left;

Property Top: Integer read Get_Top write Set_Top;

Property Width: Integer read Get_Width write Set_Width;

Property Height: Integer read Get_Height write Set_Height;

Property LocationName: WideString read Get_LocationName;

Property LocationUrl: WideString read Get_LocationUrl;

Property Busy: WordBool read Get_Busy;

end;

Крім інтерфейсу, в цьому файлі міститься опис об’єкту Delphi TWebBrowser_v1, що є надбудовою над інтерфейсом IwebBrowser і містить методи і властивості, точно відповідні методам і властивостям інтерфейсу. Це зроблено для того, щоб підвести єдиний базис під всі елементи, що вбудовуються, і забезпечити їм, з погляду Delphi, подібну поведінку. Загалом, усі класи-надбудови над ActiveX породжені від класу ToleControl. У нього є властивість OleObject, що являє собою посилання на потрібний вам інтерфейс. Однак надійніше викликати необхідні методи через методи відповідного класу Delphi.

Примітка 3. Клас TWebBrowser є надбудовою над інтерфейсом IWebBrowser2 з розширеними можливостями.

Наведемо практичне застосування властивостей і методів інтерфейсу IwebBrowser. У браузері показане використання методів GoBack та Navigatе:

Procedure TForm1.BackTooButtonClick(Sender:TObject);

Begin

WebBrowser_V11.GoBack;

End;

Procedure TForm1.GoToolButtonClick(Sender:TObject);

Var ov1,ov2,ov3,ov4: OleVariant;

Begin

WebBrowser_V11.Navigate(ComboBox1.Text,ov1,ov2,ov3,ov4);

End;

Розроблений браузер може бути корисним при налагодженні застосунків, що використовують протокол HTTP, зокрема, модулів розширення ISAPI/CGI.