Вы можете добавлять OLE объекты  таблицы, формы и отчеты. Для получения более подробной информации о добавлении OLE объектов в отчеты смотрите описание задачи Как: добавить в отчеты поля типа General.

Добавление OLE объектов в таблицы

Вы можете включить в таблицу документы Word с помощью создания полей General и добавлением документов либо путем связки, либо путем встраивания.

Для добавления OLE объекта в таблицу

  1. Откройте таблицу в Table Designer (Конструкторе таблиц).

  2. В Table Designer  (Конструкторе таблиц), создайте поле General.

  3. Откройте таблицу для просмотра в окне Browse.

  4. Выполните двойной щелчок на поле General для того, чтобы открыть окно редактирования.

    NoteСовет

    Вы можете, кроме того использовать команду MODIFY GENERAL.

  5. В меню Edit щелкните поInsert Object.

Для программного добавления OLE объекта в таблицу

  • Используйте команду APPEND GENERAL.

Для получения более подробной информации смотрите описание команды APPEND GENERAL.

Вы можете использовать APPEND GENERAL для включения объектов OLE или ссылок на OLE объекты, созданные такими приложениями, как Microsoft Excel и Word. Эти приложения поддерживают как ссылки (linking), так и включения (embedding). Однако, некоторые приложения, такие как Microsoft Graph поддерживают только включение (embedding). Когда вы используете команду APPEND GENERAL, вы можете импортировать OLE объект из файла или вставить его в поле типа General. Если поле уже содержит включенный объект, то он будет замещен новым.

NoteЗамечание

В отличие от APPEND и APPEND BLANK, APPEND GENERAL не добавляет в таблицу новую запись.

Например, предположим, что у вас имеются файлы Microsoft Word, которые вы желаете сохранить в таблице Visual FoxPro. Если у таблицы имеется поле General с именем WordDoc, вы можете вложить документ с помощью приведенного ниже программного кода:

 CopyCode imageСкопировать код
CREATE TABLE oletable (name c(24), worddoc g)
CD GETDIR()

nFiles = ADIR(aWordFiles, "*.doc")
IF nFiles > 0
   FOR i = 1 to nFiles
      APPEND BLANK
      REPLACE Oletable.Name WITH aWordFiles(i,1)
      APPEND GENERAL WordDoc FROM aWordFiles(i,1)
   ENDFOR
ELSE
   MESSAGEBOX("No Word files found.")
ENDIF
NoteЗамечание

Рассмотренный пример собирает только те файлы, которые имеют расширение .doc, используемое по умолчанию файлами Word. Поскольку Microsoft Word и OLE ожидают такого расширения, то файлы автоматически ассоциируются с сервером Word, когда вы используете APPEND GENERAL.

Если вы используете другое расширение, отличающееся от ожидаемого сервером, вы должны объявить класс сервера, используя опцию CLASS. Например, если вы добавите класс для Word в рассмотренном примере, то код видоизменится к приведенному ниже виду:

 CopyCode imageСкопировать код
APPEND GENERAL WordDoc FROM wordfiles(i,1) CLASS "Word.Document"

Если у вас имеются файлы с широко употребляемыми расширениями (например, .bmp), тогда должны использоваться другие серверы и вы можете использовать опцию CLASS для указания конкретного сервера, который вы желаете использоваться для этих файлов. В качестве альтернативы, если вы используете ссылочные объекты вместо вложенны, то используйте ключевое слово LINK так, как показано в следующем примере:

 CopyCode imageСкопировать код
APPEND GENERAL WordDoc FROM wordfiles(i,1) LINK CLASS "Word.Document"

В дополнение к сказанному, вы можете замещать данные в объекте, используя ключевое слово DATA команды APPEND GENERAL.

Добавление OLE объектов в формы

Используя Form Designer (Конструктор формы), вы можете добавлять в форму вставляемые OLE объекты с помощью элемента управления OLE Container.  В дополнение к этому, вы можете отображать OLE объекты из полей типа General, используя элемент управления OLE Bound. Когда вы добавляете в форму OLE объект либо с помощью OLE Container, либо с помощью OLE Bound, у вас имеется больше возможностей управления над открытием и редактированием объекта.

Вы можете определить, будет ли OLE объект открыт или он будет редактироваться при получении им фокуса или в случае, когда пользователь будет производить на нем двойной щелчок, установкой свойства AutoActivate элементов управления OLE bound или OLE container. Свойство AutoVerbMenu указывает, будет ли контекстное меню элемента управления позволять пользователю открывать или редактировать OLE объект. Для управления доступом, который определяет, что объект OLE может быть только открыт или изменено программно с помощью метода DoVerb, установите свойство AutoActivate в 0 - Manual и AutoVerbMenu в  false (.F.).

Для того, чтобы добавить OLE объект в форму

  1. В  Form Designer (Конструкторе форм), добавьте в вашу форму элемент управления OLE Container. Откроется диалоговое окно Insert Object (Вставить объект).

  2. В этом диалоговом окне выберите либо Create New (Создать новый) или Create from File (Создать из файла).

  3. ВЫберите подходящий вам OLE объект из списка Object Type (Тип объекта).

Вы можете, кроме того, настроить полоску инструментов Form Controls (Элементы управления форм) так, чтобы вы смогли непосредственно добавлять в форму конкретные OLE объекты.

Для того, чтобы добавить OLE объекты в полоску инструментов Form Controls (Элементы управления формы)

  1. Из меню Tools (Инструменты) выберите Options (Параметры).

  2. На закладке Controls (Элементы управления) диалогового окна Options (Параметры) выберите ActiveX controls (Элементы управления ActiveX).

  3. В списке Selected, выберите OLE объекты и элементы управления ActiveX, которые вы желаете иметь в полоске инструментов Form Controls (Элементы управления формы).

  4. Щелкните по кнопке Set as Default (Установить по умолчанию), а затем щелкните по кнопке OK (Сделано).

  5. В полоске инструментов Form Controls (Элементы управления формы) выберите View Classes (Обзор классов), и затем выберите ActiveX Controls (Элементы управления ActiveX).

Для отображения OLE объекта из поля типа General

  1. В конструкторе формы добавьте в вашу форму OLE Bound control.

  2. Укажите поле типа General, которое содержит данные с помощью установки свойства ControlSource объекта.

    Например, если имеется таблица с именем Inventory и поле типа General с именем Current, тогда установите свойство ControlSource в значение Inventory.Current.

Вы можете, кроме того, отобразить OLE объект из поля типа General программным способом:

 
Код Комментарии

frm1 = CREATEOBJECT("form")

Создаем форму.

frm1.ADDOBJECT("olb1",

"oleboundcontrol")

Добавляем элемент управления.

frm1.olb1.ControlSource =

"Inventory.Current"

Привязываем данные к элементу управления.

frm1.olb1.Visible = .T.

frm1.Visible = .T.

Обеспечиваем видимость формы и элемента управления.

Смотрите также