Читайте также:
|
|
Если на главную форму выкладываем компоненту с закладки Servers, которая называется, например WordApplication, то при запуске приложения запустится сервер автоматизации Microsoft Word, этот факт можно обнаружить, запустив на выполнение Task Manager и выбрав закладку Processes. Среди прочих процессов мы обнаруживаем WINWORD.EXE. При этом выполняются следующие действия:
§ При создании формы, в системном реестре, по идентификатору CLSID был найден сервер Word.Application
§ Запущено на выполнение приложение, находящееся по адресу в реестре (ProgID)
§ Сервер предоставил нашему приложению, которое и является контроллером автоматизации интерфейс, через который мы и получим доступ к объекту Application.
Практически всегда при работе с сервером Word вам приходится иметь дело сосвойством Documents. Это свойство представляет собой собрание всех документов, открытых в Word в данный момент. Каждый документ представлен в этом собрании как объект Document, имеющий в свою очередь собственные свойства и методы. Общее число открытых документов определяется свойством Count собрания документов Documents.
При вызове из Delphi любого метода сервера СОМ аргументы (кроме аргументов типа Text) передаются только как объекты типа OleVariant. Если какие-то аргументы не являются обязательными, то все равно они должны фигурировать в вызове метода. Только вместо их значений может быть указана EmptyParam —переменная типа OleVariant, используемая вместо необязательных параметров. Эта переменная объявлена в модулях System и OleCtrls. Таким образом, если вы хотите создать новый документ на основе обычного шаблона, вы можете записать оператор:
WordApplicationl.Documents.Add(EmptyParam,EmptyParam, EmptyParam, EmptyParam);
Важным свойством сервера Word является свойство Selection, являющееся
ссылкой на объект Selection — выделенный фрагмент текста в активном документе или, если нет выделения, то просто текущая позиция курсора в активном документе. Этот объект имеет методы InsertBefore и Insert After, аргументом в которые передается текст, вставляемый в активный документ соответственно до или после объекта Selection.
Сохранение активного документа в файле с заданным именем можно осуществить методом SaveAs класса Document, передавая в него как аргумент типа OleVariant имя файла с путем к нему. Если путь отсутствует, то файл сохраняется в текущем каталоге.
Пример:
procedure TForm1.Button3Click(Sender: TObject);
var a:OleVariant;
fileName:OleVariant;
begin
a:=true;
WordApplication1.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordApplication1.Selection.InsertAfter(''+#13);
WordApplication1.Selection.InsertAfter('hello korolev');
fileName:='c:\my1.doc';
WordApplication1.ActiveDocument.SaveAs(fileName, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam
, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam
, EmptyParam);
WordApplication1.Visible:=false;
end;
Пример замены в документе Word:
Пусть у нас имеется документ Microsoft Word:
1. Порядковый номер <Шифр>
2. От гр. <Фамилия> <Имя> <Отчество>
Фамилия имя отчество
Требуется открыть Microsoft Word, подставить значение Шифр и Фамилия, Имя, Отчество. Для работы с этим документом Microsoft Word необходимо:
1. Создать на форме компонент WordApplication
WordApplication1: TWordApplication;
2. Открыть документ
Fname:=GetCurrentDir+'/Blank.doc';
WordApplication1.Documents.Open(Fname, EmptyParam, EmptyParam, EmptyParam,EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
3. Соединиться с Сервером Word и подключиться к документу.
WordApplication1.Connect;
4. Переходим в начало документа
start:=wdStory;
WordApplication1.Selection.HomeKey(start, EmptyParam);
5. Поиск и замена в документе фрагмент '<Фамилия>' заменяем на ‘Королев’
doc:='<Фамилия>';
text:='Петров';
FOne:=wdFindStop;
ROne:=wdReplaceOne;
WordApplication1.Selection.Find.Execute(doc, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, FOne, EmptyParam, text, ROne, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
6. Сделать видимым документ, с помощью свойства WordApplication - Visible:
WordApplication1.Visible:=true;
Полный пример:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleServer, WordXP;
type
TForm2 = class(TForm)
WordApplication1: TWordApplication;
Button1: TButton;
procedure Button1Click(Sender: TObject);
Procedure zamena(doc,baz:oleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
FOne,ROne,start:OleVariant;
Fname:OleVariant;
begin
Fname:='d:\Blank.doc';
WordApplication1.Documents.Open(Fname, EmptyParam, EmptyParam, EmptyParam,EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WordApplication1.Connect;
zamena('<Фамилия>','Королев');
WordApplication1.Visible:=true;
end;
Procedure TForm2.zamena(doc,baz:oleVariant);
Var FOne,ROne,start:OleVariant;
begin
start:=wdStory;
WordApplication1.Selection.HomeKey(start, EmptyParam);
FOne:=wdFindStop;
ROne:=wdReplaceOne;
WordApplication1.Selection.Find.Execute(doc, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, FOne, EmptyParam,
baz, ROne, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;
end.
Дата добавления: 2015-11-15; просмотров: 37 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Технология COM | | | Работа с приложением Microsoft Excel |