Поняття про Component Objects ModelПоняття про Component Objects Model, Детальна інформація
Поняття про Component Objects ModelПоняття про Component Objects Model
3. Класи в поточній програмі.
4. Класи в VCX-файлі бібліотеки, відкритою командою set classlib.
5. Класи у файлах процедур, відкритих командою set PROCEDURE.
6. Класи в послідовності виконуваних програм Visual FoxPro.
7. Реєстр OLE (якщо раніше була команда SET oleobject on).
Після того, як буде сформовано посилання на об'єкт, можна звертатися до нього точно так, як і до будь-якого створеного в програмі об'єкту класу Visual FoxPro.
Але зверніть увагу на відмінність в імені класу, об'єкт якої створюється. Звичайно використовується ім'я класу, що складається з одного слова. Для сом-об'єкту використовується ім'я класу з двох слів, перше з яких відповідає імені додатку, а друге - імені класу усередині цього додатку.
Якщо вам здастся, що все це ви вже чули, коли йшлося про OLE-автомат, ви будете недалекі від істини. Автоматизація OLE є не що інше, як частина моделі СОМ. Отже, якщо ми говоримо OLE, то маємо на увазі СОМ.
Що відбувається при зверненні до сом-об'єкту
При установці додатку, який грає роль серверу СОМ, в реєстрі Windows реєструється як сам додаток, так і всі його класи. Наприклад, подивіться в розділ реєстру Windows, що відноситься до Visual FoxPro, який також є сервером СОМ.
Можливості Visual FoxPro як COM-клієнта
Тепер розглянемо, які ж в цьому плані можливості програмного продукту Visual FoxPro.
ФУНКЦІЯ CREATEOBJECT ()
Як вже наголошувалося вище, за допомогою функції CREATEOBJECT () можна створити посилання на СОМ-об'єкт. Потрібно підкреслити, і це дуже істотно, що при зверненні до CREATEOBJECT () завжди створюється новий об'єкт.
Проведемо експеримент. Запустіть наступні команди з вікна команд:
Ох=CreateObject("Word.Application")
Оу=CreateObject("Word.Application")
А зараз викличте на екран діалогове вікно Close Program в Windows 95/98 (для цього потрібно натискувати). В NT те ж саме можна зробити за допомогою Task Manager. Після цього порахуйте, скільки екземплярів додатку WinWord запущено. Їх напевно виявляться не менше два (можливо, раніше у вас ще був відкритий цей редактор).
Тепер продовжимо наші ігри. Поверніться в Visual FoxPro і звільніть змінні Ох і Оу. Більш того, можна навіть закрити взагалі додаток Visual FoxPro. Знову порахуйте, скільки екземплярів додатку знаходиться в роботі. Їх виявиться знову два. Для того, щоб позбутися запушеного додатку СОМ-серверу, потрібно звернутися до його методу Quit ().
Наш простенький експеримент виявився вельми повчальним - будьте дуже уважні при створенні СОМ-об'єктів в додатку. Перевірте, чи не був аналогічний об'єкт вже створений раніше. Врахуйте, що кожний новий додаток-сервер відтягує на себе значні ресурси пам'яті, яку можна використовувати набагато ефективніше. Якщо вам знадобиться одержати посилання на раніше запушений СОМ-об'єкт деякого класу, використовуйте функцію GetObject ().
ФУНКЦІЯ GETOBJECT ( )
Функція GETOBJECT () певною мірою аналогічна за призначенням вже розглянутої функції CREATEOBJECT (). Вона приймає два параметри. Перший - ім'я файлу, який потрібно відкрити, а другий - ім'я класу, з яким передбачається працювати.
Функція GETOBJECT () застосовується в двох випадках:
для отримання посилання на існуючий файл;
для отримання посилання на раніше запущений додаток-сервер.
Отримання ссилки на існуючий файл
Насамперед функція GETOBJECT () може бути використана для отримання посилання на файл, зареєстрований в OLE-розділі системного реєстру.
Припустимо, ви хочете відкрити файл BUDGET.XLS, який знаходиться в кореневому каталозі диска С:. Виконати це можна двома способами. Перший - створити земпляр сом-серверу Excel функцією CREATEOBJECT () і потім викликати його метод для відкриття файлу, що цікавить вас. Другий - безпосередньо відкрити файл функцією GETOBJECT ():
oExcel = GetOBJECT("с:\budget.xls").
При цьому одночасно буде створений екземпляр об'єкту Excel, відкритий файл і одержано посилання на нього.
4. Класи в VCX-файлі бібліотеки, відкритою командою set classlib.
5. Класи у файлах процедур, відкритих командою set PROCEDURE.
6. Класи в послідовності виконуваних програм Visual FoxPro.
7. Реєстр OLE (якщо раніше була команда SET oleobject on).
Після того, як буде сформовано посилання на об'єкт, можна звертатися до нього точно так, як і до будь-якого створеного в програмі об'єкту класу Visual FoxPro.
Але зверніть увагу на відмінність в імені класу, об'єкт якої створюється. Звичайно використовується ім'я класу, що складається з одного слова. Для сом-об'єкту використовується ім'я класу з двох слів, перше з яких відповідає імені додатку, а друге - імені класу усередині цього додатку.
Якщо вам здастся, що все це ви вже чули, коли йшлося про OLE-автомат, ви будете недалекі від істини. Автоматизація OLE є не що інше, як частина моделі СОМ. Отже, якщо ми говоримо OLE, то маємо на увазі СОМ.
Що відбувається при зверненні до сом-об'єкту
При установці додатку, який грає роль серверу СОМ, в реєстрі Windows реєструється як сам додаток, так і всі його класи. Наприклад, подивіться в розділ реєстру Windows, що відноситься до Visual FoxPro, який також є сервером СОМ.
Можливості Visual FoxPro як COM-клієнта
Тепер розглянемо, які ж в цьому плані можливості програмного продукту Visual FoxPro.
ФУНКЦІЯ CREATEOBJECT ()
Як вже наголошувалося вище, за допомогою функції CREATEOBJECT () можна створити посилання на СОМ-об'єкт. Потрібно підкреслити, і це дуже істотно, що при зверненні до CREATEOBJECT () завжди створюється новий об'єкт.
Проведемо експеримент. Запустіть наступні команди з вікна команд:
Ох=CreateObject("Word.Application")
Оу=CreateObject("Word.Application")
А зараз викличте на екран діалогове вікно Close Program в Windows 95/98 (для цього потрібно натискувати
Тепер продовжимо наші ігри. Поверніться в Visual FoxPro і звільніть змінні Ох і Оу. Більш того, можна навіть закрити взагалі додаток Visual FoxPro. Знову порахуйте, скільки екземплярів додатку знаходиться в роботі. Їх виявиться знову два. Для того, щоб позбутися запушеного додатку СОМ-серверу, потрібно звернутися до його методу Quit ().
Наш простенький експеримент виявився вельми повчальним - будьте дуже уважні при створенні СОМ-об'єктів в додатку. Перевірте, чи не був аналогічний об'єкт вже створений раніше. Врахуйте, що кожний новий додаток-сервер відтягує на себе значні ресурси пам'яті, яку можна використовувати набагато ефективніше. Якщо вам знадобиться одержати посилання на раніше запушений СОМ-об'єкт деякого класу, використовуйте функцію GetObject ().
ФУНКЦІЯ GETOBJECT ( )
Функція GETOBJECT () певною мірою аналогічна за призначенням вже розглянутої функції CREATEOBJECT (). Вона приймає два параметри. Перший - ім'я файлу, який потрібно відкрити, а другий - ім'я класу, з яким передбачається працювати.
Функція GETOBJECT () застосовується в двох випадках:
для отримання посилання на існуючий файл;
для отримання посилання на раніше запущений додаток-сервер.
Отримання ссилки на існуючий файл
Насамперед функція GETOBJECT () може бути використана для отримання посилання на файл, зареєстрований в OLE-розділі системного реєстру.
Припустимо, ви хочете відкрити файл BUDGET.XLS, який знаходиться в кореневому каталозі диска С:. Виконати це можна двома способами. Перший - створити земпляр сом-серверу Excel функцією CREATEOBJECT () і потім викликати його метод для відкриття файлу, що цікавить вас. Другий - безпосередньо відкрити файл функцією GETOBJECT ():
oExcel = GetOBJECT("с:\budget.xls").
При цьому одночасно буде створений екземпляр об'єкту Excel, відкритий файл і одержано посилання на нього.
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021