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

2015-08-23СтудИзба

Описание файла

Файл "5. Работа с сервером Word" внутри архива находится в папке "Разработка многомодульных интегрированных SDI-приложений". Документ из архива "Разработка многомодульных интегрированных SDI-приложений", который расположен в категории "". Всё это находится в предмете "проектирование программного обеспечения автоматизированных систем" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "проектирование по автоматизированных систем" в общих файлах.

Онлайн просмотр документа "5. Работа с сервером Word"

Текст из документа "5. Работа с сервером Word"

Работа с сервером 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();

Работа с компонентом WordDocument

Присоединение к активному документу:

WordDocument1 -> ConnectTo ( WordApplication1 -> ActiveDocument);

Выделение фрагментов в документе

Content – объект отражающий весь текст документа. С его помощью можно изменить свойства текста, например,

WordDocument1 -> Content->Font->Bold=0;

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

TVariant i=3;

RangePtr MyRange;

MyRange=WordApplication1 -> ActiveDocument->Paragraphs->Item(i)->get_Range();

MyRange->Font->Italic=true;

Также можно указать номера символов, ограничивающих интересующий нас фрагмент документа:

TVariant i=1, j=20;

RangePtr MyRange=WordDocument1->Range(&i,&j);

MyRange->Font->Italic=true;

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

TVariant i=2;

WordDocument1->Paragraphs->Item(i)->get_Range()->Select();

WordApplication1-> Selection->InsertBefore(TVariant("Москва"));

Закрытие документа

Метод Close выполняет закрытие документа.

WordDocument1->Close();

Если документ был изменен, то Word предложит сохранить его. Для подавления этого запроса необходимо использовать Close с параметром:

TVariant d;

d=(TVariant)wdDoNotSaveChanges;

WordDocument1->Close(&d);

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

TVariant d;

int n, i;

d=(TVariant)wdDoNotSaveChanges;

n=WordApplication1->Documents->Count;

for (i=1; i<=n; i++)

{ a=(TVariant) i;

WordApplication1->Documents->Item(&a)->Close(&d);

}

Работа с объектом WordFont1

Присоединение к объекту Selection можно выполнить так:

WordFont1->ConnectTo(WordApplication1->Selection->Font);

После установления связи с фрагментом текста можно задавать различные параметры. Например:

  • Выбрать шрифт

WordFont1->set_Name(TVariant(“Times New Roman”));

  • Установить размера

WordFont1->set_Size(18);

  • Жирность

WordFont1->set_Bold(true);

  • Подчеркивание

WordFont1->set_Underline(wdUnderlineSingle);

Различные виды подчеркивания задают специальные константы (вместо имен можно использовать числовые константы):

  • wdUnderlineNone = 0 – без подчеркивания,

  • wdUnderlineSingle = 1 – одинарное;

  • wdUnderlineDouble = 3 – двойное подчеркивание,

  • wdUnderlineDotted = 4 – точечное;

  • wdUnderlineDash = 7 - пунктирное,

  • wdUnderlineDotDash = 9 – штрих-пунктир,

  • wdUnderlineWords = 2 – подчеркнуть слова и т.д.

Цвет символов можно установить так:

WordFont1->set_ColorIndex(wdRed);

Цвет можно задать следующими константами: wdAuto = 0, wdBlack = 1, wdBlue = 2, wdTurquoise = 3, wdBrightGreen = 4, wdPink = 5, wdRed = 6, wdYellow = 7, wdWhite = 8, wdDarkBlue = 9 и т.д.

В Builder C++ 5.0 значения свойств задаются без использования методов set_…(). Например,

WordFont1->Underline=wdUnderlineSingle;

WordFont1->Bold=true; WordFont1->Bold=1;

Работа с объектом WordParagraphFormat

Присоединение к объекту Selection->ParagraphFormat

WordParagraphFormat1->ConnectTo(WordApplication1->Selection-> ParagraphFormat);

Компонент WordParagraphFormat помогает легко задать свойства, отвечающие за оформление текста. Следующие примеры позволяют понять как это делается.

Межстрочный интервал

WordParagraphFormat1->set_LineSpacingRule(wdLineSpaceSingle);

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

  • wdLineSpaceSingle = 0,

  • wdLineSpace1pt5 = 1,

  • wdLineSpaceDouble=2.

Выравнивание

WordParagraphFormat1->set_Alignment(wdAlignParagraphLeft);

Следующие константы задают:

  • wdAlignParagraphLeft = 0 – выравнивание по левому краю,

  • wdAlignParagraphCenter = 1 – по центру,

  • wdAlignParagraphRight = 2- по правому краю,

  • wdAlignParagraphJustify = 3 – по ширине.

Отступ

  • Отступ первой строки

WordParagraphFormat1->set_FirstLineIndent(36.0);

  • Отступ перед абзацем

WordParagraphFormat1->set_SpaceBefore(0);

  • Отступ после абзаца

WordParagraphFormat1->set_SpaceAfter(12);

Установить стиль абзаца

Например оформим фрагмент текста как заголовок первого уровня (стиль “Заголовок1”):

WordParagraphFormat1->set_Style(TVariant(“Заголовок 1”));

Просмотр и сохранение документов

Просмотр общей информации о документе:

WordApplication1->Dialogs->Item(wdDialogFileSummaryInfo)-> Show(TVariant(30000));

Сохранение документа пользователем

WordApplication1->Dialogs->Item(wdDialogFileSaveAs)->Show(EmptyParam);

Следующий код обращается к диалоговому окну Word «Сохранить как…», оставляя приложение Word невидимым для пользователя. Если пользователь сохраняет документ, его имя появляется в строке Label1.

WordApplication1 -> set_Visible(false);

if (WordApplication1 -> Dialogs->Item(wdDialogFileSaveAs)->

Show(EmptyParam ) == -1)

{

Label1->Caption= WordDocument1 -> Name;

}

Программное сохранение и открытие документов

Сохранить документ можно так:

TVariant FileName= "F:\\Work\\fff.doc" ;

WordDocument1 -> SaveAs(&FileName);

Для того, чтобы открыть документ используется метод Open коллекции Documents:

WordApplication1 -> Documents -> Open(TVariant("F:\\Work\\ddd.doc"));

Режим предварительного просмотра:

WordDocument1 -> PrintPreview();

Задание

  • В текстовом редакторе MS Word создать документ и внести в него три абзаца любого текста. В каждом абзаце минимум по три строки. Сохранить текст в отдельной папке.

  • В среде Builder C++ разработать приложение для управления Word – сервером и передачи информации в его документы. Операции для связи с сервером могут быть оформлены в виде команд меню или в виде кнопок на форме приложения. Кроме меню и кнопок на форму следует поместить три компонента TLabel (“Фамилия”, “Группа”, “Группа”), три компонента для ввода текста TEdit и компонент TImage.



Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее