![]() |
![]() |
|
![]() |
||||||||||||||||||
![]() |
![]() |
![]() |
||||||||||||||||
|
![]() |
|
![]() |
|
||||||||||||||
![]() |
![]() |
![]() |
Шаг 241 - АВТОМАТИЗАЦИЯ приложений MS Office (продолжение)Подравняем?Мы научились выводить текст на страницу. Это неплохо, но для полного счастья не хватает, чтобы этот текст был форматированным. Этим мы сейчас и займемся. Определим константы, необходимые для задания типов выравнивания, и вставки разрыва (соответственно, разрыва страницы и секции) #define AL_LEFT 0 #define AL_CENTER 1 #define AL_RIGHT 2 #define AL_JUST 3 #define BR_PAGE 0 #define BR_SECT 1 Для изменения выравнивания текста у текущего выделения есть метод void SetAlignment(long nNewValue), в качестве параметра которому передается требуемое выравнивание. Обратите внимание, что при задании строчек вывода мы по-прежнему можем пользоваться символами табуляции и перевода строки. В продолжении предыдущего шага пишем: oPar.SetAlignment(AL_CENTER); oSel.TypeText("Этот текст будет выравнен по центру\n"); oPar.SetAlignment(AL_RIGHT); oSel.TypeText("Этот текст будет выравнен по правому краю\n"); oPar.SetAlignment(AL_LEFT); oSel.TypeText("Этот текст будет выравнен по левому краю\n"); oPar.SetAlignment(AL_JUST); oSel.TypeText("Этот текст будет выравнен по по обоим краям\n"); Теперь поменяем начертание шрифта. Для этого используем методы BoldRun() и ItalicRun(): oSel.BoldRun(); oSel.TypeText("Этот текст будет жирным\n"); oSel.ItalicRun(); oSel.TypeText("Этот текст будет наклонным\n"); К сожалению, я не знаю, как сделать шрифт подчеркнутым. Для того, чтобы отключить изменение начертания, достаточно просто вызвать соответствующий метод еще раз (совсем как когда мы нажимаем/отжимаем кнопки И в заключении вставим в документ разрыв страницы. Это будет немного сложнее, поскольку метод InsertBreak требует в качестве параметра переменную типа COleVariant. Но мы можем воспользоваться простым конструктором с параметром для преобразования наших констант в требуемый тип: COleVariant сovBreakType((long)BR_PAGE); //вставить разрыв страницы oSel.InsertBreak(covBreakType); Добавляем красотыВ настоящее время редкий документ обходится без картинок. Не будем и мы лишать себя удовольствия немного разнообразить скучный текст. Для начала добавим две переменный типа COleVariant с начальными значениями TRUE и FALSE. COleVariant covTrue((short)TRUE), covFalse((short)FALSE); Теперь точно также, как раньше, добавляем 2 класса, которые отвечают за "внедренные фигуры". Первый класс, как обычно, коллекция, второй - одиночная фигура. InlineShapes oShps; InlineShape oShp; Получаем текущюю коллекцию, и добавляем в нее новую фигуру. Для этого используем метод LPDISPATCH AddPicture(LPCTSTR FileName, VARIANT* LinkToFile, VARIANT* SaveWithDocument, VARIANT* Range);. Обратите внимание на параметры. Первый - это местоположение вставляемой картинки на диске, второй - вставлять картинку в текст как она есть на момент вставки или установить связь с картинкой таким образом, чтобы при изменении изображения оно обновлялось и в документе. Третий параметр - сохранять ли картинку внутри документа. Последний параемтр мы игнорируем.Эти параметры похожи на те, которые мы настраиваем в Word`e //добавим параграф oSel.TypeParagraph(); oShps = oSel.GetInlineShapes(); oShp = oShps.AddPicture("d:\\winnt\\Rhododendron.bmp",covFalse,covTrue,covOptional); Естественно, на Вашей машине путь к картинке будет другим :) Мы можем изменять параметры нашей картинки, например, ее ширину и высоту. Например, увеличим размер вставленной картинки в 1.5 раза. float width = oShp.GetWidth(); float height = oShp.GetHeight(); oShp.SetWidth(width*1.5); oShp.SetHeight(height*1.5); СохранениеЕсли попытаться закрыть наш красивый документ, то выясниться, что имя-то мы ему не задали, и автоматически не сохранили. Пользователю приходится самому придумывать, куда записывать и какое имя давать отчету. Давайте избавим пользователя от лишних вопросов. Для этого у нас есть функция... правильно, void SaveAs(VARIANT* FileName, VARIANT* FileFormat, VARIANT* LockComments, VARIANT* Password, VARIANT* AddToRecentFiles, VARIANT* WritePassword, VARIANT* ReadOnlyRecommended, VARIANT* EmbedTrueTypeFonts, VARIANT* SaveNativePictureFormat, VARIANT* SaveFormsData, VARIANT* SaveAsAOCELetter);, опять-таки со множеством параметров. Можно настроить все, что угодно, включая пароль. _Document oActiveDoc; oActiveDoc = app.GetActiveDocument(); oActiveDoc.SaveAs(COleVariant("c:\\doc1.doc"), COleVariant((short)0), covFalse, COleVariant(""), covTrue, COleVariant(""), covFalse, covFalse, covFalse, covFalse, covFalse); На этом пока ;) все. Шаг прислал Yegor A. Blackheel (blackheel@rlt.ru) | | Автор Каев Артем. |
![]() |
![]() |
![]() |
|