
- •Работа с сервером word
- •Работа с компонентом WordApplication Создание нового документа
- •Проверка наличия открытых документов
- •Работа с текстом
- •Работа с компонентом WordDocument
- •Работа с объектом WordFont1
- •Работа с объектом WordParagraphFormat
- •Просмотр и сохранение документов
- •Задание
- •Список переведенных студентов
Работа с сервером word
На странице Servers (или Office2k, или Office97) находятся компоненты, относящиеся к текстовому редактору Word. Компонент WordApplicationотвечает за связь с редактором. СвойствоAutoConnect =trueозначает, что соединение с сервером происходит в момент начала выполнения приложения. По умолчанию принято значениеfalse, при этом соединение с сервером можно осуществить вызовом методаConnect:
WordApplication1-> Connect();
Значения свойства ConnectKindопределяют, каким образом происходит соединение:
ckNewInstance– всегда создавать экземпляр сервера. Это значение следует выбирать, чтобы избежать опасности испортить какой-либо документ в уже выполняющемся сервере;
ckRunningInstance – обеспечить только подсоединение к выполняющемуся серверу. Годится, когда приложение должно работать с каким-то открытым документом сервера;
ckRemote – выбирается для удаленного сервера;
ckRunningOrNew– значение выбираемое по умолчанию обеспечивает соединение с уже открытым сервером или создание нового.
После запуска сервера его окно может оставаться невидимым для пользователя. Сделать окно приложения Word видимым можно так:
// для Builder5
WordApplication1-> Visible=true;
// для Builder6
WordApplication1-> set_Visible(true);
Установить местоположение и размеры окна:
WordApplication1 ->set_Left(0);
WordApplication1 ->set_Top(0);
WordApplication1 -> set_Height(200);
WordApplication1 ->set_Width(300);
WordApplication1->Disconnect();- разрыв связи с сервером. Вызов этого метода очень важен, особенно, когда приложение сервер не видимо для пользователя.
Свойство AutoQuit = trueавтоматически вызовет завершение сервера при завершении программы клиента (это полезно когдаConnectKind = ckNewInstance, т.е.приложение создало новый экземпляр сервера).
Работа с компонентом WordApplication Создание нового документа
При создании нового документа он будет добавлен к коллекции открытых в настоящий момент документов Word – Documents. Для создания документа на основе шаблона Normal в Office2k необходимо использовать оператор:
WordApplication1 -> Documents -> Add (EmptyParam,EmptyParam,EmptyParam,true);
А в Office97:
WordApplication1 -> Documents -> Add(EmptyParam, EmptyParam);
В этом случае создается документ WORD с параметрами по умолчанию, если нужно создать шаблон или документ на основе своего шаблона нужно использовать параметры.
Проверка наличия открытых документов
Свойство Countколлекции документов Documents позволяет узнать количество открытых в настоящий момент документов. Следующий оператор, например, позволяет проверить наличие открытых документов:
if (WordApplication1->Documents->Count==0)
Свойство Nameсодержит имя документа. Следующий код позволяет получить список имен всех открытых документов:
TVariant a;
int n, i;
n=WordApplication1->Documents->Count;
for (i=1; i<=n; i++)
{ a=(TVariant)i;
Memo1->Lines->Add(WordApplication1->
Documents->Item(&a)->Name);
}
Работа с текстом
При работе с текстом удобно использовать объект Selection.Selection- это выделенный объект текста в активном документе, а при отсутствии выделения текущая позиция курсора.
Методы InsertBefore и InsertAfterвставляют текст в документ соответственно до и после выделенного фрагмента.
Вставка абзаца текста:
WordApplication1 -> Selection -> InsertAfter
(TVariant(“Московский энергетический институт\n”));
Пустая строка (абзац):
WordApplication1 -> Selection -> InsertAfter (TVariant(“\n”));
Текст из разных источников:
WordApplication1 -> Selection -> InsertAfter
(TVariant(“Уважаемый” + Edit1->Text + “!\n”));
Все вставляемые фрагменты будут присоединяться к объекту Selection, а курсор перемещаться на первую позицию после вставленного текста, поэтому следующий оператор вставит текст перед всем выделенным фрагментом:
WordApplication1 -> Selection -> InsertBefore (TVariant(“ГПИ”));
Метод TypeTextвставляет или заменяет выделенный текст. Если свойствоReplaceSelection =false, текст будет вставлен в документ перед выделенным фрагментом, иначе (значениеtrue) новый текст заменит весь выделенный фрагмент.
Например, следующий код уничтожит все что мы вставили в документ предыдущими операторами:
WordApplication1 ->Options->ReplaceSelection = true;
WordApplication1-> Selection -> TypeText (TVariant(“Новый текст”);
Свертывание выделения
Выделение можно свернуть, вызвав метод Collapse. Курсор переместится к началу (wdCollapseStart) или к концу выделенного фрагмента (wdCollapseEnd).
TVariant Direction=wdCollapseEnd;
WordApplication1->Selection->Collapse(&Direction);
Выделение всего документа
Очень часто требуется выполнение команды «Выделить все», следующий метод позволяет это сделать программно:
WordApplication1->Selection->WholeStory();
Вставка картинки в документ
Clipboard()->Assign(Image1->Picture);
WordApplication1->Selection->Paste();