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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2018, 00:47   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию Delphi 10.2 В MSWord увеличить толщину границы таблицы

Доброе время суток форумчане,

У меня есть функция, с помощью котрой я вставляю в MSWord таблиц:

Код:
function CreateTable(ANumRows, ANumColumns: integer;
                     var ATableID: integer): boolean; export;
var
  sel_: variant;
begin
  CreateTable := true;
  try
    sel_ := Words_Templs.selection;
    Words_Templs.ActiveDocument.Tables.Add(Range := sel_.Range, NumRows := ANumRows, NumColumns := ANumColumns);
    ATableID := Words_Templs.ActiveDocument.Tables.Count;
  except
    CreateTable := false;
  end;
end;
Таблица в Word вставляется, но с прозрачными границами.
Макрос (в Word) для зарисовки границ (черные линии), выдал:
Код:
With Selection.Borders(wdBorderTop)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With...

Я попробовал в Delphi 10.2, создать такой же код:
Код:
sel_.Cells.Borders.Item(1).LineStyle := 1;
sel_.Cells.Borders.Item(1).LineWidth := 2;
sel_.Cells.Borders.Item(1).Color := 0;
но так я делаю видимой только верхнюю границу, и только первой ячейки. А мне нужно всю таблицу сделать видимой

Каким образом это можно сделать?

Последний раз редактировалось KBO; 04.06.2018 в 01:50.
KBO вне форума Ответить с цитированием
Старый 04.06.2018, 01:37   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
'Запрашиваемый номер семейства не существует'
Вроде бы это ВэБэшный аналог ошибки Subscript out of range. То есть какое-то значение за пределами диапазона.

Предполагаю, что тут:

Код:
sel_.Cells.Borders.Item(0).LineStyle:=$00000001;
должно быть Item(1)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 04.06.2018, 02:01   #3
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Да, не с нуля начинается, (

А как мне всю таблицу отобразить, а то
Код:
sel_.Cells.Borders.Item(1).LineStyle := 1;
sel_.Cells.Borders.Item(1).LineWidth := 2;
sel_.Cells.Borders.Item(1).Color := 0;


sel_.Cells.Borders.Item(2).LineStyle := 1;
sel_.Cells.Borders.Item(2).LineWidth := 2;
sel_.Cells.Borders.Item(2).Color := 0;

sel_.Cells.Borders.Item(3).LineStyle := 1;
sel_.Cells.Borders.Item(3).LineWidth := 2;
sel_.Cells.Borders.Item(3).Color := 0;


sel_.Cells.Borders.Item(4).LineStyle := 1;
sel_.Cells.Borders.Item(4).LineWidth := 2;
sel_.Cells.Borders.Item(4).Color := 0;
чтоб границы были у одной ячейки, как-то НЕ ТО
KBO вне форума Ответить с цитированием
Старый 04.06.2018, 06:59   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цикл до Items.Count - думаю, есть такое свойство, если Items является коллекцией
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 04.06.2018, 14:08   #5
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Цикл до Items.Count - думаю, есть такое свойство, если Items является коллекцией
К сожалению, на
Код:
for i := 1 to sel_.Cells.Borders.Item.Count do
begin
  sel_.Cells.Borders.Item(i).LineStyle := 1;
  sel_.Cells.Borders.Item(i).LineWidth := 2;
  sel_.Cells.Borders.Item(i).Color := 0;
end;
ошибка:
... exception class EOleError with message 'Method 'Items' not supported by automation object'.
KBO вне форума Ответить с цитированием
Старый 04.06.2018, 14:22   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Внутренний голос подсказывает, что должно быть примерно так
Код:
sel_.Cells.Item[m,n].Borders[xlDiagonalDown].LineStyle:=...
xlDiagonalDown

PS только внутренний голос excel вспомнил, а не word. Но там должно быть похоже, сохрани макрос и посмотри как в нем устроено
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 04.06.2018 в 14:33.
Аватар вне форума Ответить с цитированием
Старый 04.06.2018, 16:02   #7
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Все проще:

Код:
begin
      LSel.Tables.Item(1).Borders.item(-1).LineStyle:=1;
      LSel.Tables.Item(1).Borders.item(-2).LineStyle:=1;
      LSel.Tables.Item(1).Borders.item(-3).LineStyle:=1;
      LSel.Tables.Item(1).Borders.item(-4).LineStyle:=1;
      LSel.Tables.Item(1).Borders.item(-5).LineStyle:=1;
      LSel.Tables.Item(1).Borders.item(-6).LineStyle:=1;
    end;
KBO вне форума Ответить с цитированием
Старый 04.06.2018, 16:05   #8
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
sel_.Cells.Item[m,n].Borders[xlDiagonalDown].LineStyle:=...
Вместо "xlDiagonalDown", сейчас используют
цифровые константы
KBO вне форума Ответить с цитированием
Старый 04.06.2018, 16:10   #9
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

А еще такой вопрос, вот есть шаблон, *.doc,
я туда подставляю значения.

У меня также в шаблоне, есть таблица, у которой есть только шапка
Мне нужно нужно заполнить таблицу.
Я могу заполнить эту таблицу, не имея ее идентификатора?
Или мне нужно полностью вставлять готовую таблицу вместе с шапкой?

P.S.
Хотя существует вероятность изменения шапки в шаблоне самим пользователем

Последний раз редактировалось KBO; 04.06.2018 в 16:15.
KBO вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi работа с MsWord McFrey Помощь студентам 2 01.12.2012 13:33
delphi + MSWord (Font - Symbol) Dandy777 Общие вопросы Delphi 4 31.10.2012 14:30
перенос строки при достижении границы столбца таблицы html css gunsoy HTML и CSS 7 08.08.2012 13:01
Перенос строки при достижении границы таблицы gunsoy HTML и CSS 0 30.04.2012 11:54
delphi и MSWord Doget Помощь студентам 1 18.05.2009 14:39