Создание и отображение OLE-документов в формах стр.1. Электронный учебник по курсу "повышение квалификации руководящих работников, специалистов и преподавателей вуза в области икт"


Обзор

Основы OLE

Объект TOLEContainer

Пример OLE приложения

Сохранение OLE объекта в базе данных

  1. Обзор
  2. Из статьи Вы узнаете основные сведения об OLE, некоторые вещи относительно OLE 2 и OLE Automation. В статье рассказывается об использовании объекта TOLEContainer для построения OLE приложения в Delphi.
  3. Основы OLE
  4. Прежде, чем перейти к рассмотрению основ OLE, потребуется изучить терминологию.

    Аббревиатура OLE обозначает Objects Linked and Embedded (Присоединенные И Встроенные Объекты - ПИВО J ). Данные, разделяемые между приложениями называются OLE объектом. Приложение, которое может содержать OLE объекты, называют OLE контейнером (OLE Container). Приложение, данные из которого можно включить в OLE контейнер в виде OLE объекта, называют OLE сервером.

    Например, MicroSoft Word может включать в документ графические объекты, аудио- и видеоклипы и множество других объектов (такой документ иногда называют составным документом - compound document ).

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

    OLE является дальнейшим развитием идеи разделяемых между приложениями данных. Если с помощью DDE можно было работать с текстом, то OLE позволяет легко встроить в приложение обработку любых типов данных. Как и в случае с DDE, для правильной работы приложения-клиента (OLE контейнера) требуется наличие приложения OLE сервера. Каждый раз, когда в программе-клиенте пользователь обращается к OLE объекту с целью просмотра или редактирования данных (обычно двойной щелчок мышкой на объекте), запускается приложение-сервер, в котором и происходит работа с данными.

    В природе существует несколько видов OLE, отличающихся по способу активации OLE сервера. OLE версии 1 запускает сервер в отдельном окне. OLE 2 реализует то, что называется in-place activation and editing. В данном случае сервер запускается “внутри” приложения-клиента, модифицирует вид системного меню, линейки инструментов и др. Развитие идеи OLE привело к появлению OLE automation - приложение-клиент может выполнить часть кода сервера. Тип OLE объекта, помещенного в программу-клиент, определяется тем, какую версию OLE поддерживает сервер.

  5. Объект TOLEContainer
  6. Объект TOLEContainer находится на странице System Палитры Компонент и нужен для создания приложений OLE-контейнеров. TOLEContainer скрывает все сложности, связанные с внутренней организацией OLE и предоставляет программисту достаточно простой интерфейс. Построим простейшее приложение с использованием OLE объекта. Создайте новый проект и поместите на форму TOLEContainer, в Инспекторе Объектов дважды щелкните мышкой на свойство ObjClass или ObjDoc - появится стандартный диалог Windows “Insert Object” (см. рис.1)

    В этом диалоге есть список всех зарегистрированных в системе OLE-серверов (регистрация происходит при инсталляции программы). Тип OLE-объекта определяется как раз тем сервером, который Вы укажете. Если Вы создаете новый объект (Create New), то при нажатии кнопки OK запустится программа OLE-сервер, в которой и формируется новый объект. После выхода из программы-сервера новый OLE объект включается (embedded object) в программу. OLE объект можно создать используя уже имеющийся файл в формате одного из OLE-серверов. Для этого нужно выбрать пункт Create from File (см. рис.2)


    Выбранный объект можно как включить в приложение, так и присоединить, отметив пункт Link.

    Итак, давайте при создании нашего проекта создадим новый объект, выбрав для этого, например, Microsoft Word Document (рис.1). Нажмите OK и после того, как запустится MS Word, наберите там любой текст (“Это OLE-объект Microsoft Word document ”). Для завершения работы в меню есть специальный пункт “File|Close and Return to Form1” (Win’95+MS Word 7.0). Запустите проект, он будет выглядеть примерно так:

    Щелкните дважды мышкой на OLE-контейнер - запустится MS Word с документом из OLE-объекта, который можно редактировать, при этом все изменения сохраняются в OLE-объекте.

    Если во время дизайна Вы выбираете объект для включения в OLE-контейнер, то он полностью записывается в файл формы (FORM1.DFM) и в дальнейшем прикомпилируется к EXE файлу. В случае очень больших объектов это может привести во время дизайна к длительным паузам и даже к возникновению ошибки “Out of resource”. Поэтому рекомендуется большие объекты делать присоединенными (linked).

  7. Сохранение OLE объекта в базе данных

Иногда необходимо хранить OLE объекты не в файлах, а в базе данных (BLOB поле в таблице). Конечно, в данном случае OLE объект должен быть присоединенным (embedded) в целях переносимости. К сожалению, в стандартной поставке Delphi нет специального объекта типа TDBOLEContainer для данных целей, но OLE объект можно сохранять и восстанавливать с помощью методов SaveToStream и LoadFromStream. Например:

procedure TOLEForm.SaveOLE(Sender: TObject);

BlSt: TBlobStream;

begin

With Table1 do

BlSt:=TBlobStream.Create(BlobField(FieldByName("OLE")),

bmReadWrite);

OLEContainer.SaveToStream(BlSt as TStream);

BlSt.Free;

Чтобы включить содержимое из других программ, например Word или Excel можно использовать объект связывание и внедрение (OLE).

Интерфейс OLE поддерживается множеством различных программ и используется для помещения содержимого, созданного в одной программе, в другую программу. Например, можно вставить документ Office Word в книгу Office Excel. Чтобы посмотреть, содержимое какого типа можно вставить, на вкладке Вставка в группе Текст выберите элемент Объект . В поле Тип объекта отображаются только объекты программ, установленных на данном компьютере и поддерживающих интерфейс OLE.

Общие сведения о связанные и внедренные объекты

Данные, которые копируются в Excel из другой программы, поддерживающей интерфейс OLE (например, Word), можно вставить как связанный объект или внедренный объект. Основные различия между внедренными и связанными объектами заключаются в том, где хранятся данные и как обновляется объект после вставки в конечный файл. Внедренные объекты хранятся в той книге, в которую вставлены, и не обновляются. Связанные объекты остаются в отдельных файлах и могут обновляться.

Связанные и внедренные объекты в документе

1. У внедренного объекта нет связи с исходным файлом.

2. Связанный объект связан с исходных файлом.

3. При обновлении исходного файла обновляется связанный объект.

Когда следует использовать связанные объекты

Используйте связанные объекты, если нужно, чтобы данные в конечном файле обновлялась при изменении данных в исходном файле.

При использовании связанного объекта исходные данные хранятся в исходном файле. В конечном файле отображается представление связанных данных, однако хранится в нем только информация о местоположении исходных данных (и размере, если объект является диаграммой Microsoft Excel). Для поддержания связи с исходными данными файл, в котором они хранятся, должен быть доступен на локальном диске или в сети.

Связанные данные могут обновляться автоматически при изменении данных в исходном файле. Например, если в документе Word выделяется абзац, который затем вставляется в качестве связанного объекта в книгу Excel, то при изменении данных в документе Word данные в книге Excel также будут изменены.

Когда следует использовать внедренные объекты

Используйте внедренный объект, если не требуется, чтобы скопированные данные изменялись при их изменении в исходном файле. Версия исходных данных полностью внедряется в книгу. При копировании данных в качестве внедренного объекта конечный файл занимает больше дискового пространства, чем при связывании данных.

При открытии файла на другом компьютере можно просмотреть внедренный объект, не имея доступа к исходным данным. Поскольку внедренный объект не связан с исходным файлом, он не обновляется при изменении исходных данных. Чтобы изменить внедренный объект, дважды щелкните его для открытия и редактирования в исходной программе. Исходная программа (или другая программа, позволяющая редактировать объект) должна быть установлена на компьютере.

Изменение способа отображения объекта OLE

В книге связанный объект или внедренный объект может отображаться либо в том же виде, что и в исходной программе, либо в виде значка. Если книга будет просматриваться через Интернет и ее не придется печатать, можно выбрать отображение этого объекта в виде значка. Это уменьшает площадь, занимаемую объектом на экране. Для просмотра этого объекта в исходном виде необходимо дважды щелкнуть его значок.

Внедрение объекта на лист

Вставка ссылки на файл

Примечание:

Создание объекта в Excel


Внедрение объекта на лист

Вставка ссылки на файл

Можно просто добавить ссылку на объект, а не ее внедрения полностью. Можно сделать, если книгу и объект, который вы хотите добавить хранятся на сайте SharePoint, общем сетевом диске или же расположении и расположение файлов не изменится. Это удобно, если связанный объект изменяется, так как ссылка всегда открывается последнюю версию документа.

Примечание: Если связанный файл переместить, ссылка не будет работать.

Создание объекта в Excel

Можно создать новую объекта на основании другая программа не выходя из книги. Например если вы хотите добавить более подробное описание диаграммы или таблицы, можно создать внедренный документ, например файл Word или PowerPoint в Excel. Вы можете установить для отображения объекта вправо на листе или добавить значок, который открывает файл.


Связывание или внедрение содержимого из другой программы с помощью OLE

Можно связать или внедрить содержимое (целиком или частично) из другой программы.

Внедрение содержимого из другой программы

Связывание или внедрение Частичное содержимое из другой программы

Изменение способа отображения объекта OLE

    Объект тип объекта (например, Объект Документ ) и выберите команду Преобразовать .

    • Чтобы отобразить содержимое объекта, снимите флажок В виде значка .

      Чтобы отобразить значок, установите флажок отобразить в виде значка . При необходимости можно изменить по умолчанию значок или подпись. Чтобы сделать это, щелкните Значок изменения и щелкните значок, который вы хотите из списка значок или в поле заголовок введите метку.

Управление обновлением в связанных объектах

При установлении связей с другими программами обновление может выполняться одним из следующих способов: автоматически при открытии конечного файла, вручную, если нужно посмотреть предыдущие данные перед их обновлением из исходного файла, или с помощью запроса обновления, независимо от включенного способа обновления (автоматически или вручную).

Установка обновления вручную связи с другой программой

Установка автоматического обновления связи с другой программой

Проблема: не удается обновить автоматические связи на листе

Параметр Автоматически в Excel переопределяется параметром Обновить ссылки на другие документы .

Чтобы обеспечить автоматическое обновление автоматических связей с объектами OLE, сделайте следующее:

Немедленное обновление связи с программой

Изменение содержимого из программы OLE

В приложении Excel можно изменить содержимое, связанное или внедренное из другой программы.

Редактирование связанного объекта в исходной программе

Редактирование внедренного объекта в исходной программе

    Дважды щелкните внедренный объект, чтобы его открыть.

    Внесите необходимые изменения.

    Если изменение объекта происходит прямо в окне открытой программы, щелкните за пределами объекта, чтобы вернуться в конечный файл.

    Если изменение объекта выполняется в исходной программе, открытой в отдельном окне, для возврата в конечный файл выйдите из исходной программы.

Примечание: Если дважды щелкнуть некоторые внедренные объекты, такие как видео- и звуковые клипы, начнется их воспроизведение, а не открытие. Чтобы изменить такой внедренный объект, щелкните правой кнопкой мыши значок или объект, наведите указатель на элемент Объект тип объекта (например, Объект Клип мультимедиа ), а затем выберите команду Изменить .

Редактирование внедренного объекта в программе, отличной от источника

    Выделите внедренный объект, который необходимо изменить.

    Щелкните правой кнопкой мыши значок или объект, наведите указатель на элемент Объект тип объекта (например, Объект Документ ) и выберите команду Преобразовать .

    Выполните одно из следующих действий.

    • Чтобы преобразовать внедренный объект в тип, выбранный в списке, установите флажок преобразовать в .

      Чтобы открыть внедренный объект в формате, выбранном в списке, без изменения типа внедренного объекта, установите флажок активизировать как .

Выделение объекта OLE с помощью клавиатуры

    Нажмите клавиши CTRL+G для отображения диалогового окна Переход .

    Нажмите кнопку Выделить , выберите вариант объекты и нажмите кнопку ОК .

    Несколько раз нажмите клавишу TAB, пока не будет выделен требуемый объект.

    Нажмите клавиши SHIFT+F10.

    Наведите указатель на элемент Объект или Объект Диаграмма и выберите команду Изменить .

Проблема: при двойном щелчке по связанному или внедренному объекту появляется сообщение "Нельзя изменить"

Это сообщение появляется, если невозможно открыть исходный файл или программу-источник.

Убедитесь, что исходная программа доступна. Если исходная программа не установлена на компьютере, преобразуйте объект в формат файла той программы, которая есть на компьютере.

Убедитесь, что имеется достаточно памяти. Убедитесь, что на компьютере имеется достаточно памяти для запуска исходной программы. В случае необходимости для освобождения памяти закройте другие программы.

Закройте все диалоговые окна. Если исходная программа запущена, убедитесь, что в ней нет открытых диалоговых окон. Переключитесь в исходную программу и закройте все открытые диалоговые окна.

Закройте исходный файл. Если исходный файл является связанным объектом, убедитесь, что он не открыт другим пользователем.

Убедитесь, что имя исходного файла не изменилось. Если исходный файл, который требуется изменить, является связанным объектом, убедитесь, что он имеет то же имя, что и при создании связи, а также что он не был перемещен. Чтобы узнать имя исходного файла, выделите связанный объект, а затем на вкладке Данные в группе Подключения выберите команду Изменить связи . Если исходный файл был переименован или перемещен, воспользуйтесь кнопкой Смена источника в диалоговом окне Изменение связей , чтобы найти исходный файл и восстановить связь.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community , попросить помощи в сообществе Answers community , а также предложить новую функцию или улучшение на веб-сайте

OLE-технология

OLE – технология(Object Linking and Embedding – объектное связывание и встраивание) позволяет создавать сложные составные документы, в которых содержатся разнотипные объекты, созданные различными приложениями. Так в текстовый документ редактора Word можно вставить таблицу Excel, диаграмму, поясняющую текст, или математическую формулу, для пользователя это останется единым документом. Приложение, отвечающее за составной документ, принято называть контейнером. Оно имеет сложную структуру, так как умеет работать с “чужими” объектами. Приложение, создавшее объект, называется сервером.

Контейнеры и серверы могут поддерживать два режима взаимодействия:

    встраивание (внедрение) объектов. Этот режим означает, что данные объекта будут храниться вместе с основным документом (например, внедренная таблица Excel будет сохранена в.doc – файле редактора Word).

    связывание объектов. В составном документе хранится только ссылка на объект, данные которого находятся в другом документе.

При внедрении увеличивается объем хранимых документов, однако, их легче перемещать, тогда как при связывании, необходимо помнить, что изменение места расположения файлов может привести к ошибочным ссылкам.

Для редактирования связанных данных открывается отдельное окно, того приложения, в котором эти данные были созданы, т.е. сервера. При внедрении объектов можно также запустить сервер в отдельном окне, но можно и редактировать данные «на месте» («in Place»), т.е. в окне контейнера, если он это позволяет. В этом случае контейнер обязан иметь меню, а загрузившийся «in Place»сервер дополнит его своими командами.

Компонент OLEContainer

На странице System палитры компонент в Borland Builder С++ есть специальный компонент, предназначенный для внедрения и связывания объектов из других приложений - OLEContainer .

Основные свойства

Свойство State позволяет определить состояние объекта и его сервера. Его значения:

    osEmpty–контейнер не содержит объекта;

    osLoaded– объект в контейнере, сервер не выполняется;

    osRunning– сервер запущен;

    osOpen– OLE –объект открыт в отдельном окне сервера;

    osInPlaceActive– объект активизирован «на месте», но меню еще не изменено. Это промежуточное состояние объекта перед полной загрузкой сервера.

    osUIActiveобъект активизирован «на месте», меню изменено.

Следующий код позволяет определить имя объекта, загруженного в контейнер (свойство AnsiString OleClassName ), способ работы с объектом (Linked = true– связывание, иначе – внедрение), а также получить имя связанного документа:

if (OleContainer1 -> State != osEmpty)

Label2 -> Caption = OleContainer1 -> OleClassName;

// Состояние контейнера – целое число, начиная с 0 (osEmpty)

Label6 -> Caption = OleContainer1 -> State;

if (OleContainer1 -> Linked)

Label4 -> Caption = OleContainer1 -> SourceDoc;

Свойство bool AllowInPlace определяет возможность редактировать внедренный объект «на месте». ЕслиAllowInPlace = trueиIconic = false(свойствоIconicопределяет должен ли объект быть представлен в виде пиктограммы), то «InPlace» – редактирование разрешено. ПриAllowInPlace = falseсервер будет открываться в отдельном окне.

Свойство AutoActivate имеет три возможных значения:aaManual,aaGetFocus,aaDoubleClickи определяет способы активизации загруженного в контейнер объекта.

По умолчанию AutoActivate = aaDoubleClick , то есть объект становится активным при двойном щелчке. ЗначениеaaGetFocus определяет активизацию при получении фокуса ввода. ПриAutoActivate = aaManual за активизацию объекта отвечает программист. В этом случае можно использовать метод компонента-контейнераDoVerb, который отвечает за передачу команд от контейнера серверу. Например, можно воспользоваться следующим оператором:

OleContainer1->DoVerb (ovShow); // Показать объект

Кроме посылки команд серверу, методы контейнера обеспечивают создание, загрузку и разрушение объектов. Перейдем к их рассмотрению.

Создание и сохранение нового объекта (внедрение)

Создание нового объекта можно обеспечить использованием специального диалогового окна Insert Object (вставка объекта) или вызовом методаCreateObject . В первом случае класс объекта выбирает пользователь из системного списка возможных объектов, а во втором программно создается конкретный объект.

Для использования диалогового окна можно воспользоваться следующим кодом, расположенным, например, в команде меню «новый»:

AnsiString File_Name; // переменная объявлена глобально или в классе формы

if (OleContainer1->InsertObjectDialog())

{ File_Name = "";

OleContainer1->DoVerb(ovShow);

В появившемся диалоговом окне необходимо установить значение RadioButton- кнопки «Создать новый», в списке выбрать необходимый тип объекта и щелкнуть «OK».

Программно объект можно создать так (операторы можно вставить, например, в соответствующие пункты меню):

    таблица Excel

OleContainer1->CreateObject("Excel.sheet",false);

    документ Word

OleContainer1->CreateObject("Word.Document",false);

Если создать нужно объект, имя типа которого неизвестно, то нужно обратиться либо к соответствующей документации по серверу, либо написать тестовую программу с загрузкой объекта методом OleContainer->InsertObjectDialog() и воспользоваться свойствомOleContainer -> OleClassNameдля определения его имени.

При создании нового объекта используется внедрение (так как для связывания необходим файл). В этом случае за хранение данных объекта отвечает программа - контейнер. Сохранить данные в файле можно с помощью метода SaveToFile (<имя файла>), например, в пункте меню «Файл - Сохранить…» можно использовать следующий код:

void __fastcall TForm1::FSaveClick(TObject *Sender)

{ if (File_Name=="")

if (SaveDialog1->Execute())

File_Name = SaveDialog1->FileName;

OleContainer1->SaveToFile(ChangeFileExt(File_Name,".ole"));

В данном примере расширение файла.ole указывает на то, что объект будет сохранен в специальном формате отличном от формата сервера. Приложение - сервер отдельно от контейнера прочесть эти данные не сможет.

Функция ChangeFileExt была использована в примере для замены расширения файла. При выполнении команд сохранения и извлечения данных из файла могут понадобиться и другие функции обработки имен файлов:

    ChangeFileExt (const AnsiString FileName, const AnsiString Extension)– принудительно изменяет имя файла FileName, заменяя расширение на Extension;

    функция AnsiString ExtractFileExt (AnsiString FileName) возвращает расширение файла и, следовательно, позволяет проверить его тип;

    AnsiString ExtractFileName (AnsiString FileName)возвращает имя файла, извлеченное из строкиFileName, т.е. после последнего обратного слэша или двоеточия;

    AnsiString ExtractFilePath (AnsiString FileName)извлекает путь к файлу, включая последний слэш или двоеточие;

    AnsiString ExtractFileDrive (AnsiString FileName) извлекает диск файла с двоеточием (например, «D:»).

Метод контейнера LoadFromFile (<имя файла>)позволяет загрузить запомненный объект в контейнер:

void __fastcall TForm1::FOpenClick(TObject *Sender)

if (OpenDialog1->Execute())

if (ExtractFileExt(OpenDialog1->FileName)!= ".ole")

File_Name = OpenDialog1->FileName;

OleContainer1->LoadFromFile(File_Name);

OleContainer1->DoVerb(ovShow);

Создание объекта из файла (внедрение)

Для создания объекта из имеющегося файла можно воспользоваться тем же окном Insert Object , как и в случае создания нового объекта. В случае внедрения пользователь устанавливает значение RadioButton-кнопки «Создать из файла», а для поиска файла щелкает на кнопке «Обзор…».

Программный способ создания объекта из файла обеспечивается методом: OleContainer-> CreateObjectFromFile (AnsiString<имя файла>,boolIconic).

Параметры методы определяют имя исходного файла и режим отображения объекта (Iconic=true– объект в виде пиктограммы). Вот такой код можно вставить в соответствующий пункт меню:

void __fastcall TForm1::FFileClick(TObject *Sender)

if (OpenDialog1->Execute())

OleContainer1->CreateObjectFromFile(OpenDialog1->FileName,false);

OleContainer1->Repaint();

Метод OleContainer->Repaint() приводит к перерисовке окна контейнера и, следовательно, появлению данных объекта на экране.

Создание связанного объекта

Так же как и при внедрении создать связанный объект может или пользователь или программист.

Пользователю в окне Insert Object следует выполнить действия по выбору файла, перечисленные выше, и дополнительно установить флажок «Связь».

Программист должен воспользоваться методом: OleContainer->CreateLinkToFile (AnsiString <имя файла>, bool Iconic).

Поскольку при связывании редактировать объект можно только в отдельном окне, то для сохранения объекта пользователь может обратиться к меню сервера.

Работа с сервером

Поскольку работать с данными объекта может только программа создавшая объект (сервер), то контейнеру могут потребоваться знания о возможных действиях над объектом. Метод DoVerb (int Verb)требует выполнения одной из команд, а весь список возможных действий содержит свойствоObjectVerbs компонента контейнера. Получить этот список можно только после загрузки объекта в контейнер, и, естественно, что каждый сервер (а, следовательно, и объект) имеет свой список команд.

Константа ovShow– это пример зарезервированной OLE – команды. Использование методаDoVerbс параметромovShow, которое было уже рассмотрено в одном из предыдущих разделов, приводит к немедленному открытию сервера.

Следующий код проявляет список возможных команд объекта в компоненте ListBox(команды нумеруются с нуля) и просит выполнить вторую команду в списке:

ListBox1->Items = OleContainer1->ObjectVerbs;

OleContainer1->DoVerb(1);

Кроме этого контейнер может попросить сервер сохранить данные объекта в виде документа в формате сервера. Для этого используется метод SaveAsDocument (<имя файла>). Этот документ в дальнейшем может обрабатываться приложением сервером без участия контейнера. Интересно, что этот метод можно использовать как для связанных так и для внедренных объектов.

При завершении работы с объектом программа может освободить OleContainer, вызвав метод OleContainer->DestroyObject() - разрушить загруженный объект. Этот метод можно вызывать перед загрузкой нового объекта или в команде меню «Файл-Выход».

1. Создать новое приложение. На главной форме расположены следующие компоненты:

  • Несколько элементов Label

И два невизуальных компонента:

Примерный вид главного окна приложения представлен на рисунке. В OleContainerзагружен рисунок (файл с расширением.bmp). Состояние сервера:osRunning.

2. Добавить на форму компонент, в котором будет отображаться информация об объекте: «не загружен» / «внедрение» / «связывание».

3. Меню должно содержать следующие команды:

    «Объект» (InsertDialog, новый объект Excel, новый объект Paint, внедренный из файла, внедренный из «имя презентации PowerPoint», связанный из файла, связанный из «имя документа Word», Выполнить команду);

    «Свойства» (Свойства объекта, Команды сервера);

    «Справка» (О программе).

Предусмотреть, чтобы пункты меню были доступны только в тот момент, когда соответствующие им действия могут быть выполнены. Например, пункт «Объект»| «Выполнить команду» может быть доступен только, если объект загружен в OleContainer, а в список ListBox помещен список доступных команд сервера.

4. Для всех команд меню создать соответствующие обработчики событий.

    «Файл» | «Загрузить объект» - сохраненный объект загружается из ole – файла.

    «Файл» | «Разорвать связь» - разрыв связи с объектом;

    «Файл» | «Выход» - корректный выход из программы (если была связь с объектом разорвать ее);

    «Объект» | InsertDialog – объект и его способ загрузки в контейнер выбирается в диалоговом окне пользователем;

    «Объект» | «Объект Excel» – создается новый объект;

    «Объект» | «Объект Paint» – создается новый объект;

    «Объект» | «Внедренный из файла» – имя файла определяется пользователем в диалоговом окне OpenDialog;

    «Объект» | «Внедренный из «имя презентации PowerPoint» - в контейнер вставляется предварительно созданная презентация слайдов;

    «Объект» | «Связанный из файла» » – имя файла определяется пользователем в диалоговом окне OpenDialog;

    «Объект» | «Связанный из «имя документа Word» - в контейнер вставляется предварительно созданный документ;

    «Объект» | «Выполнить команду» - серверу для выполнения передается команда, выбранная пользователем в списке ListBox$

    «Свойства» | «Свойства объекта» - контейнер запрашивает у сервера имя объекта, состояние сервера и имя связанного документа, на основании полученной информации делается вывод: «объект – не загружен / внедрен / связан». Полученная информация выводится в компоненты Label главного окна приложения.

    «Свойства» | «Команды сервера» - список команд сервера выводится в компоненте ListBox;

    «Справка» | «О программе…» - окно с информацией оприложении и его авторе.

5. Провести полное тестирование приложения на различных объектах и серверах.

Библиотека OLE-объектов

OLE-объектом называется любой документ, сформированный с использованием технологии OLE (Object Linking and Embedding). Многие программные приложения, работающие под управлением Windows, поддерживают данную технологию и формируют документы, которые могут быть переданы другому программному приложению в качестве объекта. Примерами таких объектов являются: рисунок Painbrush, документ WinWord, рабочий лист Excel, формула Equation, картинка Clip Gallary.

Библиотекой OLE-объектов называется совокупность всех OLE-объектов, создаваемых Вами в процессе работы с конкретным НТЗ. Доступ к Библиотеке OLE-объектов осуществляется из основного окна Конструктора тестов или в МТЗ при нажатии командной кнопки "Добавить объект" или "Вставить объект".

За один сеанс обращения к OLE-Библиотеке можно создать или изменить несколько объектов. В дальнейшем, при формировании тестовых заданий Вам останется только выбрать нужный объект в качестве элемента задания.

Интерфейс Библиотеки OLE-объектов обеспечивает:

  • Просмотр OLE-объектов;
  • Ввод нового OLE-объекта;
  • Удаление OLE-объекта;
  • Модификацию OLE-объекта;
  • Копирование OLE-объекта;
  • Переход к конкретному OLE-объекту;
  • Изменение формы отображения OLE-объекта;
  • Отображение инструкции по работе с Библиотекой OLE-объектов.

При активизации Библиотеки OLE-объектов (осуществляется в МТЗ при выполнении функции "Вставить объект") открывается окно (Рис. 3), состоящее из поля просмотра, функционального меню и индикатора списка OLE-объектов.

Индикатор списка

Индикатор списка отображает общее количество OLE-объектов, порядковый номер представленного в поле просмотра объекта и его уникальный идентификационный номер (состоит из дефиса OLE- и числа, заключенного в фигурные скобки). Идентификационный номер объекта формируется автоматически, не изменяется и не присваивается вновь даже в случае удаления объекта, владеющего им. С помощью индикатора списка можно выполнять следующие операции: переход к началу списка, переход к предыдущему по списку объекту, переход к концу списка, переход к следующему по списку объекту.

Поле просмотра (также носит название "OLE-контейнер") предназначено для отображения выбранного объекта. При входе в Библиотеку OLE-объектов из основного окна Конструктора тестов выбранным является первый элемент из списка, а при входе из Мастера тестовых заданий выбранным является:

  • При вводе нового элемента ТЗ - первый из списка объектов;
  • При модификации элемента ТЗ - объект, отображаемый в окне просмотра МТЗ.

Находясь в среде OLE-библиотеки выбор объекта можно осуществить двумя способами:

Путем нажатия управляющих кнопок индикатора списка

Выполняя команду меню "Объект / Перейти к …" и указав уникальный номер OLE-объекта в списке библиотеки. Например, для выбора объекта, изображенного на рисунке необходимо ввести значение 25.

Выбранный элемент называется активным.

Формирование Библиотеки

Допустим, Вы имеете содержание тестовых заданий, предоставленных Вам автором.

Можно последовательно вводить тестовые задания, формируя объекты по мере необходимости.

Предварительно, до ввода тестовых заданий, Библиотека наполняется объектами, которые в дальнейшем могут быть использованы в качестве элементов тестовых заданий.

Одновременно используются оба вышеперечисленных способа. Часть объектов создается непосредственно в ходе формирования заданий, другая формируется вне Мастера тестовых заданий.

После окончательного формирования Накопителя тестовых заданий удалите неиспользуемые объекты в режиме диагностики НТЗ. “Лишние” объекты увеличивают размер базы данных НТЗ.

Создание нового объекта допустимо двумя способами:

Первый способ

Для создания нового объекта необходимо выбрать команду меню "Объект \ Новый", при этом открывается окно "Вставка объекта", где необходимо установить переключатель "Создать новый \ Создать из файла" в нужную Вам позицию.

Выбрав переключатель "Создать из файла" Вы можете задать имя файла одним из следующих способов:

  • написать в появившемся рядом окне полный путь файла с нужным объектом
  • нажать кнопку Обзор (Browse), при этом активизируется стандартное окно Windows для выбора файла.
  • до тех пор, пока Вы не выполнили конвертацию, выбранный файл не должен менять своего месторасположения;
  • любые изменения в файле повлекут автоматическое изменение и в OLE-объекте (при его активизации).

Нажмите кнопку ОК. При успешном внедрении выбранный Вами объект отображается в окне просмотра Библиотеки OLE-объектов.

Выполните команду меню "Вернуться" или дважды щелкните левой кнопкой мыши по отображению объекта.

Примечание. Если Вы используете связные объекты, то необходимо следить за тем, чтобы файлы не меняли своего расположения до момента конвертации НТЗ в asq-файл. После конвертации связь с объектом системой не отслеживается. Если Вы выбрали технологию использования связных файлов (что в некоторых случаях целесообразно) рекомендуем Вам держать все такие файлы в отдельном каталоге. При переносе НТЗ (файл с расширением ast) на другой компьютер не забывайте перенести и данный каталог.

При выборе переключателя "Создать новый" появляется окно с перечнем программных приложений, которые зарегистрированы на данном компьютере в каталоге \Windows\System или System32.

Сделайте выбор приложения, в котором будет создан новый объект. Нажмите кнопку "ОК".

Загрузится выбранное программное приложение, в котором Вы формируете объект.

После выхода из программного приложения Вы возвращаетесь в окно OLE-библиотеки. Выполните команду меню "Вернуться" или дважды щелкните левой кнопкой мыши по отображению объекта.

Созданный Вами объект должен отображаться в поле просмотра. Отсутствие изображения означает, что выбранное вами программное приложение не позволяет внедрить объект. Причины могут быть различны. Стабильное повторение такой ситуации с конкретным программным приложением означает, что данное приложение не может быть использовано для создания OLE-объекта. В некоторых случаях следует посоветоваться с системным программистом, так как причины некорректной обработки OLE-объектов могут быть обусловлены сбоями в работе операционной системы и приложений, установочными параметрами самих приложений.

Если со вставкой объекта ничего не получилось (к сожалению не каждый объект может быть вставлен), об этом Вы узнаете по чистому полю просмотра (OLE-контейнеру). Не стоит беспокоиться о пустых или неиспользованных объектах OLE-библиотеки. Их можно удалить в любое время.

Второй способ

Выбираете из OLE-Библиотеки объект, наиболее близкий по изображению и копируете его. В поле просмотра отображается созданная Вами копия объекта и указатель индикатора устанавливается на номер вновь созданного путем копирования объекта.

Выбираете команду "Изменить". Активизируется программное приложение, в среде которого Вы доводите изображение объекта до нужного Вам.

После выхода из программного приложения вы возвращаетесь в окно OLE-библиотеки. Выполните команду меню "Вернуться" или дважды щелкните левой кнопкой мыши по отображению объекта.

Замечание. Вы можете сократить количество операций, выполнив команду "Копировать и изменить".

Просмотр объектов

Последовательный просмотр всех объектов осуществляется при нажатии управляющих кнопок индикатора списка. При этом меняется содержимое поля просмотра.

Выборочный просмотр объекта возможен при выполнении команды меню "Объект / Перейти к". Вводить нужно уникальный идентификационный номер объекта без дефиса "OLE-", т.е. только цифровое значение, отображаемое в фигурных скобках.

Номер отображаемого в конкретный момент времени объекта указан на индикаторе списка.

Изменение существующего объекта

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

Выполните команду меню "Объект / Изменить" или дважды щелкните левой кнопкой мыши по отображению объекта. Открывается редактор, в котором был создан выбранный объект. Выполните необходимые изменения; порядок действий определяется средой редактирования. По окончании редактирования необходимо выйти из редактора (например, Word), не забыв сохранить изменения. После закрытия редактора Вы возвращаетесь в окно Библиотеки OLE-объектов. Доступна только команда меню Вернуться.

Выполните команду меню Вернуться или дважды щелкните левой кнопкой мыши по отображению объекта.

Технология ole позволяет импортировать объекты из других приложений с сохранением связей. Причем если вставить изображение из такого приложения как Word или график из Excel, то оно будет сохраняться в файле как внедренный объект, т.е. при передаче чертежа вам не нужно его архивировать с чертежом, как это необходимо делать при использовании внешних ссылок в Автокаде .

На вкладке «Вставка» расположена команда «Ole-объект» AutoCAD.

После активации команды появляется диалоговое окно “Вставка объекта».

Здесь можно создать новый файл. В этом случае вам следует указать приложение (Photoshop, Microsoft Excel, Word, Power Point и т.д.), в котором вы будете работать, и, впоследствии, поместить ваш объект в Автокад или же сразу работать на основе существующего файла. На практике намного чащи используется именно второй вариант. Рассмотрим его более подробно.

В диалоговом окне «Вставка объекта» установите галочку «Создать из файла», после чего нажмите кнопку «Обзор», чтобы выбрать подходящий файл. После проделанных действий прописывается путь к вашему документу.

Существует два варианта вставки:

1) Независимая – после вставки объекта он «стационарно» хранится в Автокаде. И при изменении исходного файла в вашем чертеже никакие изменения не происходят.

2) Связывание файлов – в этом случае их местоположение на компьютере должно оставаться неизменным. При изменении пути связь будет теряться. Поэтому эти файлы оптимальние всего хранить в одной папке. Чтобы связать файлы AutoCAD установите галочку «Связь» в диалоговом окне «Вставка объектов» (рис. 3).

Рис. 3 – Работа с ole-объектом Автокад на основе существующего файла.

После нажатия ОК ваш оле-объект вставляется в рабочее пространство AutoCAD. Теперь с ним можно работать как с обычными примитивами Автокада, например, применять команды редактирования.

Рис. 4 – Ole-объект Автокад в виде картинки из Word.

Если дважды ЛКМ щелкнуть по такому ole-объекту, то откроется приложение, в котором изначально он был создан (или хранился). В данном примере вставлялась обычная картинка из Word.

Рис. 5 – Наличие обратной связи позволяет открыть исходное приложение (в данном случае Word).

Внедрение Ole в Автокад через буфер обмена.

Ole AutoCAD: секреты и хитрости.

В этом курсе на практических примерах рассмотрена работа с Ole-объектами Авткоад. В видео-формате рассказано про:

Настройки качества вывода ole-объектов на печать;

Как убрать рамку которая по умолчанию обрамляет эти объекты;

Системные переменные при работе с оле Автокад;

Обратный процесс вставки ole-объектов из Автокада в сторонние приложения.

Что же, как видите, оле-объекты в Автокаде - технология очень полезная! А самое главное, использование этого принципа позволяет ответить на вопрос: "Как вставить картинку в Автокад не ссылкой?" Теперь вы можете смело внедрять логотип своей фирмы на чертежи или подложки к проектам и при этом не бояться, что у других пользователей эти графические объеты не будут отображаться.







2024 © gtavrl.ru.