Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Объекты MS Word

Работа с MS Office в Delphi.

 

Среда разработки приложений Delphi предоставляет программистам массу возможностей по созданию приложений, способных взаимодействовать с внешними программами, такими как Word, Excel, Internet Explorer, Outlook и другими, использующими механизмы Windows для обмена данными. Даже ранние версии Delphi поддерживали технологию DDE и OLE. Начиная с пятой версии Delphi, возможности были дополнены целым набором компонентов для работы с приложениями MS Office.

Функция, реализующая механизм доступа к OLE-объекту, находится в библиотеке ComObj.pas — функция CreateOleObject. Ее единственным аргументом является строка-идентификатор, а возвращает она ссылку на объект, предназначенный для управления этим объектом

function CreateOleObject(const ClassName: string): Idispatch; Эта функция всегда используется для позднего связывания.

Например:

W:=CreateOleObject('Word.Application');

Переменная W имеет тип variant, который преобразуется к любому типу объектов.

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

Идентификаторы Word.Application и Word.Application.8 (9,10) - с помощью этих идентификаторов осуществляется доступ к объекту Application и запускается приложение Word

 

Идентификаторы Word.Document, Word.Document.8 (9,10), Word.Template.8 – с помощью этих идентификаторов осуществляется доступ к объекту Document, запускается приложение Word, если оно не было запущено, создается новый документ. Если до этого приложение Word

было запущено, то новый документ создается в нем.

Итак, объект Application загружен в память компьютера, и у нас есть доступ к нему через переменную W:variant. Исследуем свойства этого объекта. Обратим внимание на коллекцию Documents. Она содержит документы, их свойства и методы для работы с ними. Элементами коллекции являются открытые в настоящий момент документы. Доступ к ним осуществляется через объекты Item(doc:variant), где doc — имя или индекс документа в коллекции. Поле Count коллекции содержит количество элементов коллекции, если Count=0, то нет ни одного открытого документа. Создадим новый документ. Для этого используем метод ADD этой же коллекции.

W.Documents.Add;

Обращаться к методу ADD коллекции Documents можно как без аргументов, так и с аргументом. Когда аргумента нет, создается обычный документ. Если метод вызывается с аргументом (строкой-указателем на файл шаблона), то создается документ по шаблону.

W.Documents.Add(OpenDialogl.FileName);

Ранее созданный документ можно открыть с помощью метода Open. При вызове метода можно указать и несколько аргументов, но главный из них — ссылка на путь и имя файла.

W.Documents.Open(0penDialog2.FileName);

W.Documents.Open(FileName:='c:\Документ1.doc', Readonly:=True);

W.Documents.Open(FileName:=' с: \Документ1.с1ос', ReadOnly:=True, PasswordDocument:='123');

Когда документы открыты, мы можем выполнять с ними любые действия, например редактировать и сохранять, но перед этим нужно выбрать в списке документ, с которым будем работать. Для этого можно использовать метод Select или Activate элемента коллекции Documents. Первый метод выбирает и выделяет документ, второй — только выбирает. Вызвать метод Activate можно двумя следующими способами, но в обоих случаях результат будет одним и тем же.

W. Documents. Item(<номер документа в списке>).Activate; W. Documents. Item(<имя документа в списке>).Activate;

Например: W.Documents.Item(ListBoxl.Itemlndex+l).Activate;

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

Для начала рассмотрим два метода, которые вставляют (записывают) текст. Метод InsertBefore записывает текст в начало содержимого объекта Range. Метод InsertAfter записывает текст в конец содержимого объекта Range. He нужно забывать, что объект Range может содержать как весь документ, так и его часть, а его методы действуют только на содержимое конкретного объекта Range. Допустим, объект Range включает в себя весь текст документа. Тогда метод InsertBefore вставит текст в начале документа, сместив текст, который уже был в документе. Метод InsertAfter при этом вставит текст в конце документа. Если объект Range включает только часть текста документа, то эти методы вставят новый текст в начало или в конец этой части, сместив текст, который был в документе до их выполнения.

Например: W.ActiveDocument.Range.InsertAfter(Memol.Text+'('+inttostr(nn)+') ');

Как выделить часть текста в документе и работать с ней, применяя описанные методы не ко всему документу, а к фрагменту? Для этой цели можно использовать функцию Range, возвращающую объект типа Range; аргументы функции — позиции начала и конца фрагмента.

var MyRange:variant;

begin

MyRange:= W.ActiveDocument.Range(100,200);

MyRange.InsertAfter('Вставляем текст в конце заданного фрагмента')

end;

Для чтения текста из открытого документа Word используется свойство Text:

Memol.Text:=W.ActiveDocument.Range.Text;

Если требуется экспортировать в программу-контроллер очень большой текст, то можно работать с его фрагментами в документе. Для этого используйте процедуру Range(first, last), где first, last — границы диапазона (позиции символов), в котором находится рабочий фрагмент.

Другой способ чтения текста документа основан на чтении слов W.Active Document.Words Memol.Lines.Add(W.ActiveDocument.Words.item(a_).Text);

Самый простой способ сохранения документа заключается в вызове метода Save объекта-документа, например: W.ActiveDocument.Save. Данный способ удобно использовать, если документ ассоциирован с файлом на диске.

Когда мы попробуем сохранить с помощью этого метода вновь созданный документ, то откроется диалоговое окно (рис. 5.12), активированное приложением Word.

Эффективным способом избежать ошибок, возникающих при сохранении документов, может быть проверка "был документ сохранен или нет" и использование для сохранения метода SaveAs. Для проверки факта сохранения открытого документа на диск используйте свойство документа Saved — если оно имеет значение True, то документ был сохранен, если False — нет.

if W.ActiveDocument.Saved then messagebox(handle,'Документ сохранен!','Внимание!',0);

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

ActiveDocument.SaveAs (FileName, FileForroat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter)

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

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

Сохранение документа с указанием пути и имени файла:

W.ActiveDocument.SaveAs(MyFileName);

W.ActiveDocument.SaveAs(FileName:=MyFileName);где MyFileName — строка, содержащая путь и имя файла.

Сохранение документа с указанием пути и имени файла, а также пароля:

W.ActiveDocument.SaveAs(FileName:=MyFileName, Password:='мой пароль')

Сохранение документа, ассоциированного с именем файла, с указанием пароля:

Если приложение обрабатывало несколько документов, и все они уже сохранены, то эти документы можно закрыть одновременно с помощью метода Close коллекции Documents. Добавим в форму приложения кнопку и напишем программный текст, который закроет все открытые документы.

W.Application.Documents.Close;

Если требуется выборочно закрывать документы коллекции, используйте метод Close объекта-документа. Например, чтобы закрыть активный документ, используйте оператор:

W.ActiveDocument.Close;

Особенность метода Close — возможность задать режим сохранения документа во время его закрытия. Оператор W.ActiveDocument.Close(True);

сохраняет и закрывает документ.

Документы закрыты, можно закрыть приложение Word и очистить память от объекта Application. Используем метод Quit объекта Application и оператор W:=UnAssigned;. Реализуем это в виде процедуры-обработчика нажатия кнопки.

procedure TForml.Buttonl6Click(Sender: TObject);

begin W.Quit; W:=UnAs signed; end;

<== предыдущая лекция | следующая лекция ==>
Основные свойства и методы компонента OleContainer | Коллекция объектов Shapes
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 899; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.