|
Изменение высоты строки в макете под наибольшую ячейкув строке | ☑ | ||
---|---|---|---|---|
0
ДедUndead
15.01.15
✎
13:59
|
Доброго дня! Или вечера, у кого что.
Коллеги, подскажите, как победить такую проблему. Нужно в макет печатной формы вывести картинку. Это нетрудно, я разобрался, как это сделать. Но тонкость в том, что в строке в одной их ячеек может быть длинная спецификация товара. Если установить фиксированную высоту строки под размер картинки, то тогда все очень просто. картинки я предварительно привожу к примерно одному размеру. Но при таком решении, если спецификация товара будет слишком длинной, то текст в такой ячейке будет обрезан, что неприемлемо. Как сделать, чтобы высота строки устанавливалась по самой высокой ячейке, с учетом того, что в строке есть картинка? Причем не могу добиться того, чтобы картинка меняла высоту ячейки. Получилось только при фиксированной высоте. Подскажите. |
|||
1
FIXXXL
15.01.15
✎
14:02
|
тебе надо узнать максимальную длину строки и с учетом этого рассчитать высоту строки?
|
|||
2
ДедUndead
15.01.15
✎
14:06
|
Сейчас выводить пытаюсь так.
Изображение = ОбъектНоменклатура.ОсновноеИзображение.Хранилище.Получить(); Если Изображение <> Неопределено Тогда Путь = ПолучитьИмяВременногоФайла("png"); Изображение = Изображение.Преобразовать(ФорматКартинки.PNG); Изображение.Записать(Путь); GFLAx.LoadBitmap(Путь); Высота = GFLAx.Height; Ширина = GFLAx.Width; GFlAx.Resize(109, (109/Ширина) * Высота); GFLAx.SaveFormat = 3; GFLAx.SaveBitmap(Путь); Изображение = Новый Картинка(Путь); Рисунок = ОбластьИзображение.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рисунок.Ширина = 25; Рисунок.Высота = 30; Рисунок.Лево = 0; Рисунок.Верх = 0; Рисунок.РазмерКартинки = РазмерКартинки.Пропорционально; Рисунок.Картинка = Изображение; КонецЕсли; ТабДокумент.Присоединить(ОбластьИзображение); |
|||
3
ДедUndead
15.01.15
✎
14:08
|
Нет, скорее узнать высоту максимально высокой ячейки в строке, с учетом того, что в строке может быть картинка и ее высоту тоже надо учитывать. она может быть самой высокой в строке.
|
|||
4
ДедUndead
15.01.15
✎
14:15
|
||||
5
Serg_1960
15.01.15
✎
14:39
|
ОбластьОписаниеТовара = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Текст);
... МаксВысота = Макс(ОбластьОписанияТовара.Высота, ОбластьИзображения.Высота); |
|||
6
Serg_1960
15.01.15
✎
14:44
|
PS: и кстати, области можно не только присоединять, но и удалять. В твоём случаи для предварительной оценки высоты может пригодиться.
|
|||
7
lEvGl
гуру
15.01.15
✎
14:53
|
автовысоту можно попробовать. в макете сделать картинку маленькой, что бы в строку помещалась и подсунуть потом в область большую картинку - должен автоматом растянуть по размеру картинки, так же с текстом
|
|||
8
ДедUndead
15.01.15
✎
14:59
|
Вот как раз вся проблема в том, что не растягивает. Я тоже так думал
|
|||
9
ДедUndead
15.01.15
✎
15:01
|
Serg_1960: Правильно понимаю, что это после добавления областей?
А как потом установить высоту строки? |
|||
10
DmitrO
15.01.15
✎
15:05
|
mxl не подходит для таких задач, ее возможности ограничены. Надо использовать html.
|
|||
11
ДедUndead
15.01.15
✎
15:09
|
ОбластьОписаниеТовара.Высота - Поле объекта не обнаружено.
|
|||
12
Масянька
15.01.15
✎
15:10
|
(9) В семерке морочила голову так (правда для каждой выводимой строки):
- в строку ячейки помещается 40 символов. - наименование тупо резала по 40 символов на каждую строку. |
|||
13
Масянька
15.01.15
✎
15:11
|
+(12) То есть: есть наименование длиной 120 символов - 40 символов + перевод строки + 40 символов + перевод строки...
|
|||
14
НЕА123
15.01.15
✎
15:12
|
(9)
как-то 1. в исходом макете автовысота истина, без максимумма; 2. делаем (9); 3. ОбластьВсяСтрока.ВысотаСтроки =0; ОбластьВсяСтрока.ВысотаСтроки = МаксВысота; |
|||
15
ДедUndead
15.01.15
✎
15:13
|
Если вот так делать
МаксВысота = Макс(ОбластьОписаниеТовара.ТекущаяОбласть.ВысотаСтроки, ОбластьИзображение.ТекущаяОбласть.ВысотаСтроки); - работает. Но высота строки - 0! |
|||
16
ДедUndead
15.01.15
✎
15:13
|
МаксВысота = 0 по какой-то причине.
|
|||
17
НЕА123
15.01.15
✎
15:14
|
*
ОбластьВсяСтрока.ВысотаСтроки = МаксВысота; ОбластьВсяСтрока.АвтоВысота = Ложь; |
|||
18
НЕА123
15.01.15
✎
15:16
|
(16)
попробуйте перед (15) ОбластьВсяСтрока.АвтоВысота = Ложь; |
|||
19
_KaA
15.01.15
✎
15:16
|
А какая платформа?
|
|||
20
ДедUndead
15.01.15
✎
15:17
|
1С:Предприятие 8.2 (8.2.19.83)
|
|||
21
kosts
15.01.15
✎
15:26
|
Выложи скрин макета, на подумать
|
|||
22
ДедUndead
15.01.15
✎
15:27
|
Макет каша, сейчас выложу
|
|||
23
ДедUndead
15.01.15
✎
15:32
|
||||
24
kosts
15.01.15
✎
15:34
|
А картинки одинакового размера?
|
|||
25
ДедUndead
15.01.15
✎
15:35
|
Высота разная, ширина одинаковая.
|
|||
26
kosts
15.01.15
✎
15:39
|
Надыбал. Если поможет.
Высота картинки остается неизменной, если она целиком расположена в одной строке. Можно добавить служебный текст (например белого цвета) с нужным количеством строк в служебную ячейку в новой служебной колонке. Тогда строка не становится меньше заданной нами высоты, но остается возможность работы автовысоты. |
|||
27
kosts
15.01.15
✎
15:40
|
(26) новую колонку не создавать, а задействовать, ту где картинка
|
|||
28
ДедUndead
15.01.15
✎
15:52
|
О, вот это может помочь!!!
|
|||
29
ДедUndead
15.01.15
✎
15:56
|
То есть, если правильн понял. Надо добавить текст в область, чтобы по высоте был примерно равен картинке. Добавить рисунок в ячейку. программно присваивать рисунку эту картинку. так?
|
|||
30
ДедUndead
15.01.15
✎
15:59
|
kosts: Кстати, откуда текст? это все, что там написано?
|
|||
31
ДедUndead
15.01.15
✎
16:42
|
Получилось, спасибо всем, особенно kosts. Элементарное решение, как сам не догадался.
|
|||
32
Serg_1960
15.01.15
✎
16:48
|
Упс :( времени нет, зря я встрял в тему. сорри.
v8: Табличный документ. Разная высота строк в разных колонках. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |