|
Перенос текста по буквам в ячейке табличного документа | ☑ | ||
---|---|---|---|---|
0
supervk
14.09.13
✎
04:35
|
Как сделать перенос текста по буквам в ячейке табличного документа?
Есть этикетка (табличный документ), в которой область с названием. Это название размещается в ячейке с высотой в две строки. Названия длинные, надо, чтобы они разбивались на две строки по ширине ячейки, но не по словам, а по буквам. Без делений по слогам. Т.е. например Колбаса импортная вкусная должно разделиться на две строки таким образом: Колбаса импор| тная вкусная | Шрифт НЕ моноширинный, поэтому просчитать и заранее программно разбить на две строки через XX символов не удаётся (точнее, я не знаю как). Как, всё-таки это сделать? Подскажите, пожалуйста. |
|||
1
mehfk
14.09.13
✎
05:20
|
"Шрифт НЕ моноширинный, поэтому просчитать и заранее программно разбить на две строки через XX символов не удаётся (точнее, я не знаю как)."
Посчитай, сколько каджого символа твоего алфавита может войти в одну строку. И вычисли "коэффициент ширины", например к пробелу. Зная что в строку может уместиться n пробелов... |
|||
2
Мимохожий Однако
14.09.13
✎
08:52
|
СтрДлина (StrLen)
Синтаксис: СтрДлина(<Строка>) Параметры: <Строка> (обязательный) Тип: Строка. Исходная строка. Возвращаемое значение: Тип: Число. Длина строки. Описание: Получает количество символов в строке. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. Пример: ДлинаНаименования = СтрДлина(Товар.Наименование); |
|||
3
Мимохожий Однако
14.09.13
✎
08:52
|
В свойстве ячейки можно задать параметр Переносить...
|
|||
4
supervk
14.09.13
✎
09:12
|
(1) Ага, спасибо, mehfk, пока это единственный вариант.
(2) Только в сочетании с вариантом, предложенным mehfk (1), т.к. заранее неизвестно, сколько символов до конца края ячейки (3) "Переносить" переносит по словам. А мне надо по буквам. т.е. чтобы целое слово разбивалось на две строки. |
|||
5
mistеr
14.09.13
✎
09:51
|
(4) Можно написать ВК, которая будет рассчитывать точно с помощью функций WinAPI. Для конкретного текста, шрифта и разрешения принтера.
|
|||
6
supervk
14.09.13
✎
11:16
|
В общем, как я понял, простых решений (включить нужную галочку) не будет. Всем спасибо за помощь.
|
|||
7
mehfk
14.09.13
✎
17:45
|
(5) Вы уверны, что без ВК никак? Как-бэ текст переносит не ОС и не драйвер принтера. ПроверитьВывод и без ВК работает, не так ли? Просто это решение будет настолько тормозно, что автору лучше сделать так, как в (2) мысль дана.
|
|||
8
mehfk
14.09.13
✎
17:46
|
(7) + fix в (1)
|
|||
9
МихаилМ
14.09.13
✎
18:05
|
||||
10
mistеr
15.09.13
✎
01:34
|
(7) Я не утверждал, что никак. Я предложил как одно из решений.
(1) (2) способ не оптимальный. В худших случаях будет ошибаться, а значит придется брать запас по длине строки, часть места будет пропадать. |
|||
11
Torquader
15.09.13
✎
16:23
|
Проще всего перейти на моноширинный шрифт или вообще печатать этикетку командами принтера - тогда ничего подгонять будет не надо - там сразу известно, сколько символов может быть в строке.
Перенос по буквам выглядит не очень. Сразу вспоминается: Рассольник "Ленин градский". |
|||
12
mistеr
15.09.13
✎
17:23
|
(11) Моноширинным меньше влезет в две строки.
|
|||
13
Torquader
15.09.13
✎
18:20
|
(12) Зато гарантированно будут заполнены строки.
P.S. из файла ttf-шрифта можно узнать размеры символов, просто прочитав его силами самой 1С. |
|||
14
mistеr
15.09.13
✎
18:57
|
(13) Или ВК.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |