Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
kliver
Зарегистрирован: 10.07.2014 Сообщения: 12
|
Добавлено: Пн 18 Авг 2014 09:35 Заголовок сообщения: Копирование стилей для Figures |
|
|
В макете печати есть IInPictureGridFigure. Я хочу программно создать еще один грид с таким же стилем как и уже имеющегося в макете. В идеале конечно бы вообще склонировать уже имеющийся, но пока что не нашел такой возможности. Пока что делаю так:
Код: |
var newTableFigure =
MyLayoutWindow.Figures.Add(TInPictureFigureType.inftMap) as IInPictureGridFigure;
newTableFigure .Bottom = existTable.Bottom;
newTableFigure .Width = existTable.Bottom;
newTableFigure .GridFormat = existTable.GridFormat;
newTableFigure .ColFormat = existTable.ColFormat;
newTableFigure .RowFormat = existTable.RowFormat; |
Но к сожалению RowFormat/ColFormat /GridFormat не устанавливаются таким способом.
Как можно решить проблему?
Попробовал создавать так :
Код: | orgTableFigure.GetFormat(j, -1).Size[TInGridFormatKind.ingfFont] = organizationTable.GetFormat(-1, 0).Size[TInGridFormatKind.ingfColWidth]; |
Но к сожалению Ингео падает с ошибкой:
Цитата: | Разрушительный собой (Exception from HRESULT: 0x8000FFFF (E_UNEZPECTED)) |
Вот так вот ошибка не появляется:
Код: | mapTitle.GetFormat(j, -1).Size[TInGridFormatKind.ingfColWidth] = 250; //tableMapTitle.GetFormat(j, -1).Size[TInGridFormatKind.ingfColWidth];
mapTitle.GetFormat(j, -1).Update(); |
Но к сожалению размер ширины колонки не устанавливается. |
|
Вернуться к началу |
|
 |
APopov
Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
|
Добавлено: Пн 18 Авг 2014 19:34 Заголовок сообщения: |
|
|
Я пытался разобраться с этим "чудесным" элементом и его клонированием
До рабочего кода дело не дошло, но вот идеи:
* сначала проверять переопределён ли формат для нужной вам ячейки/столбца/колонки:
Код: | if (srcTableFigure.ContainsFormat(j, -1)) ... |
* не получать формат каждый раз динамически (как у вас), а взять формат в отдельную переменную, изменить что нужно, а потом сделать .Update(); //каждый вызов GetFormat делает свой объект-обёртку
* еще лучше написать функцию, которая копирует формат, проверяя задан ли конкретный элемент формата, типа:
Код: |
public static void CopyGridFormat(IInGridFormat src, IInGridFormat dest)
{
if (src.ContainsKinds(TInGridFormatKind.ingfFont))
CopyFont(src.Font[TInGridFormatKind.ingfFont], dest.Font[TInGridFormatKind.ingfFont]);
else
dst.DropKinds(TInGridFormatKind.ingfFont);
//....
dest.Update();
}
|
Если такая функция будет написана и если будет не сильно жалко, поделитесь ее кодом в этой ветке ) _________________ ОАО "Самара-Информспутник",
инженер-программист Попов Артем |
|
Вернуться к началу |
|
 |
kliver
Зарегистрирован: 10.07.2014 Сообщения: 12
|
Добавлено: Вт 19 Авг 2014 10:53 Заголовок сообщения: |
|
|
Через долгие часы мучений я тоже пришел к выводу, что нужно создавать переменную под GetFormat().
Все было хорошо до тех пор пока я не начал копировать очень много форматов:
Код: | var formatС = newTableFigure .GetFormat(0, -1);
formatC.FontFotmat[TInGridFormatKind.ingfTextFormat] = TInGridTextFormat.intfWordBreak;
formatC.FontFotmat[TInGridFormatKind.ingfTextFormat] = TInGridTextFormat.intfHorAlignCenter;
formatC.Update();
var formatR = newTableFigure .GetFormat(-1, 0);
formatR.FontFormat[TInGridFormatKind.ingfTextFormat] = TInGridTextFormat.intfWordBreak;
formatR.Update() |
В таком случае формат текста не отрабатывает. Наверное это связано с тем что не проверяю изменен ли формат перед копированием. Попробую ваше предложение насчет ContainsKinds.
И такой вопрос корректна ли такая запись:
Код: | formatC.FontFotmat[TInGridFormatKind.ingfTextFormat] = TInGridTextFormat.intfWordBreak;
formatC.FontFotmat[TInGridFormatKind.ingfTextFormat] = TInGridTextFormat.intfHorAlignCenter; |
Можно ли два раза последовательно переопределить TextFormat? Или раз у констант TInGridTextFormat.intfWordBreak и TInGridTextFormat.intfHorAlignCenter есть числовые значения их можно как-то сложить? |
|
Вернуться к началу |
|
 |
kliver
Зарегистрирован: 10.07.2014 Сообщения: 12
|
Добавлено: Вт 19 Авг 2014 14:29 Заголовок сообщения: |
|
|
Решил проблему.
Чуть позже, когда причешу решение выложу код. |
|
Вернуться к началу |
|
 |
kliver
Зарегистрирован: 10.07.2014 Сообщения: 12
|
|
Вернуться к началу |
|
 |
|