
- •Часть II
- •Главные составные части среды программирования
- •Формы, модули
- •Интеллектуальный редактор
- •Палитра Компонент
- •Дополнительные элементы
- •Структура проекта
- •Структура модуля
- •Проект Delphi
- •Стандартные компоненты
- •Свойства формы
- •События формы
- •Создание форм разного вида
- •Конструирование меню
- •Компоненты
- •Общие принципы создания меню
- •Пункты меню
- •TMainMenu - компонент
- •Основные свойства tMainMenu
- •Основные методы tMainMenu
- •События tMainMenu
- •TMenuItem - класс
- •Основные свойства tMenuItem
- •Основные методы tMenuItem
- •События tMenuItem
- •Рисование и закраска Графические компоненты
- •Свойство объектов Canvas
- •Полный список методов tCanvas
- •Основные события tCanvas
- •Объект tPaintBox
- •TImage - компонент
- •TShape - компонент
- •Файлы и устройства ввода/вывода
- •Использование файловых переменных. Типы файлов
- •Операции ввода/вывода
- •Процедуры и функции для работы с файлом
- •Контроль ошибок ввода/вывода
- •Атрибуты файла. Поиск файла
- •Базовые классы tStream и tHandleStream
- •Свойства и методы класса Tstream
- •Класс tFileStream
- •Класс tMemoryStream
- •Класс tStringStream
- •Оповещение об изменениях в файловой системе
- •Компоненты, используемые для создания баз данных
- •Открытие и закрытие DataSet
- •Работа с Данными
- •Использование SetKey для поиска в таблице
- •Использование фильтров для ограничения числа записей в DataSet
- •Теория ole
- •Ole Контейнер Основные свойства и методы компонента OleContainer.
- •Работа с ms Office в Delphi.
- •Объекты ms Word
- •Свойства и методы объекта Selection
- •Коллекция объектов Shapes
- •Объекты ms Excel
- •Создание объекта ExceLApplication, запуск и визуализация окна приложения
- •Работа с листами рабочей книги
- •Программирование диаграмм Excel в Delphi
- •Коллекция Charts, размещение диаграммы и исходных данных
- •Тип диаграммы
Объекты ms Word
Идентификаторы 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;