Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2014, 09:10   #1
EaRLL
Пользователь
 
Аватар для EaRLL
 
Регистрация: 03.01.2009
Сообщений: 22
По умолчанию MS Word, Table, Header. Проблема с "фокусировкой" текста в ячейки

В теме треда отражено уже почти половина проблемы, в дополнение:
Есть программа, суть которой создать через заданные поля в программе - в ворде наклепать депешу.
Так вот, к примеру возьмем почти пустую программу и пустой лист вордовский.
С помощью нехитрой функции создаем пустой лист:
Код:
procedure TfMain.toWordClick(Sender: TObject);
var
  tablic : integer;
  HeaderRange : Variant;
begin
  try
    MsWord := GetActiveOleObject('Word.Application');
  except
    try
      MsWord := CreateOleObject('Word.Application');
      MsWord.Visible := True;
    except
      Exception.Create('Error #00152');
    end;
  end;

  MSWord.Documents.Add;
с помощью второй нехитрой функции (к примеру) добавим пару слов:
Код:
  MSWord.Selection.Font.Size := 14;
  MSWord.Selection.TypeText('Просто текст');
  MSWord.Selection.Font.Bold := true;
  MSWord.Selection.TypeText(#13#10'Жирный текст');
с помощью другой нехитрой функции (начинается самое интересное) добавляем табличку с одной строкой и двумя колонками в верхний колонтитул:
Код:
  HeaderRange := MSWord.ActiveDocument.Sections.Item(1).Headers.Item(1).range;

  CreateTable( HeaderRange, 1, 2, tablic );
с помощью ещё одной нехитрой функции добавляем чуть-чуть текста в ячейки:
Код:
  SetTextToTable( tablic, 1, 1, 'Логотип');
  SetTextToTable( tablic, 1, 2, 'Инфа');

end;
что мы имеем в итоге? а мы имеем в итоге нормальную страницу, приправленную чуточкой текста, забабаханой табличкой в верхнем колонтитуле но... пустой. Казалось бы, вроде все выполнено по уму, ан нет, в чем-то загвоздка. Что самое интересное., если вместо
Код:
HeaderRange := MSWord.ActiveDocument.Sections.Item(1).Headers.Item(1).range;
поставить
Код:
HeaderRange := MSWord.selection.Range;
то табличка без проблем создается в теле после текста и в неё добавляется текст, а вот в колонтитульную таблицу вообще никак не хочет добавлятся, хоть и таблицу создает.
Кто подскажет, кто расскажет, что за проблемка?

Сами функции создания таблички и добавления текста:
Код:
function CreateTable(Range:variant; NumRows, NumColumns:integer; var index:integer) : boolean;
begin
  CreateTable:=true;
    try
      MSWord.ActiveDocument.Tables.Add(Range, NumRows, NumColumns);
      index := MSWord.ActiveDocument. Tables.Count;
    except
      CreateTable:=false;
    end;
end;

function SetTextToTable(Table:integer; Row, Column:integer; text:string) : boolean;
begin
  SetTextToTable:=true;
    try
      MSWord.ActiveDocument.Tables.Item(Table).Columns.Item(Column).
      Cells.Item(Row).Range.Text := text;
    except
      SetTextToTable := false;
    end;
end;
EaRLL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
организация поиска "Найти далее" в Table lalochka C/C++ Базы данных 3 13.11.2011 17:51
Связь автофигуры "Надпись" в Word со значением ячейки в Excel. OMEN_6666 Microsoft Office Excel 2 24.12.2010 20:43
Решение проблемы "Cannot add header information..." dr.Chas PHP 11 30.07.2010 18:45
Поиск "почти" одинаковых записей в Table хИринах Помощь студентам 1 22.06.2010 09:19