воскресенье, 20 января 2008 г.

CODEGEAR на ДВ

Не так давно совершенно случайно попал на сайт Российского представительства CodeGear Borland. Там объявлено об очень интересной программе: "Получи RAD Studio 2007 у партнеров CodeGear". В двух словах – программа для тех кто по каким-либо причинам не может скачать дистрибутив RAD Studio 2007 может приобрести электронную лицензию и обратиться к партнерам и получить дистрибутив на диске. Причем в Хабаровске указано целых 2 партнера. Видимо надо будет скататься туда, попробовать взять этот дистрибутив, если только наши предприимчивые дальневосточники не придумают его продать. :)))

Delphi & OLE & WORD

Недавно понадобилось мне написть небольшую программу по обработке писем. Необходимо было собрать несколько писем и передать их в Microsoft Word в уже отформатированном виде, чтобы максимально избывиться от ручного форматирования. В результате столкнулся с несколькими проблемами. Поиски по просторам Интернета ни к чему не привели (а может быть плохо искал), пришлось все делать методом научного тыка.

Вот некоторые из этих проблем с решениями:

Установка переносов в тексте:

// включение переносов
WordDocument1.AutoHyphenation := true;
// перенос в словах из ПРОПИСНЫХ букв
WordDocument1.HyphenateCaps := true;

 
Зеркальные поля:

WordDocument1.PageSetup.MirrorMargins := -1;
(-1 соответствует значению TRUE, 0 - FALSE)

Номера страниц:

// установка начального номера
with
WordDocument1.Sections.Item(1).Footers.item(1) do   PageNumbers.StartingNumber := 1;
// показывать номер на первой странице
with WordDocument1.Sections.Item(1).Footers.item(1) do
  PageNumbers.ShowFirstPageNumber := false;

Далее почему-то компилятор стал ругаться когда я стал передавать в метод числовые значения, пришлось его обмануть :)

Var
em, em1: OleVariant;

em := 1;    // выравнивание
            //(0 – слева, 1 – по центру,
            //2 – справа, 3 – по ширине).
em1 := 0;   // показывать номер на первой странице
with WordDocument1.Sections.Item(1).Footers.item(1) do
  PageNumbers.Add(em,em1);

Это то что касалось номеров страниц внизу листа, в верху делается аналогично:

with WordDocument1.Sections.Item(1).Footers.item(1) do   PageNumbers.Add(em,em1);