|
Разбить строку на несколько | ☑ | ||
---|---|---|---|---|
0
Креатив
22.03.12
✎
10:34
|
Есть печатная форма. В ней не умещается значение строки в одну строку. Может кто видел или у кого-нибудь есть готовый алгоритм для разбивки по количеству символов. А то так ломает писать.
|
|||
1
DrShad
22.03.12
✎
10:35
|
а что там писать?
|
|||
2
Reset
22.03.12
✎
10:35
|
По количеству в общем случае недостаточно, т.к. ширина символов разная. Разве что моноширинный шрифт использовать
|
|||
3
Креатив
22.03.12
✎
10:39
|
(2)Количество можно завсегда занизить.
(1)Строк 10, а то и 15. |
|||
4
xard
22.03.12
✎
10:40
|
(0) автоперенос отменили?
|
|||
5
lxs
22.03.12
✎
10:40
|
(4) +100500
|
|||
6
Креатив
22.03.12
✎
10:42
|
(4)Ты про тот, что в ячейках? Так он строку-то одну делает с разбухшим самомнением.
|
|||
7
Reset
22.03.12
✎
10:42
|
(3) Понятно, что _придется_ занижать. Т.е. в _большинстве_ случаев строка будет заполнена на 2/3
|
|||
8
lxs
22.03.12
✎
10:43
|
(7) у тебя пробела нет? или ты извращенец?
|
|||
9
Reset
22.03.12
✎
10:44
|
(7) Если на это пофиг, то проблема непонятна. Простейший цикл. +1 к (1)
|
|||
10
Ненавижу 1С
гуру
22.03.12
✎
10:44
|
РазмещениеТекста = Переносить
|
|||
11
Reset
22.03.12
✎
10:44
|
(8) У меня тэга <u> нет
|
|||
12
lxs
22.03.12
✎
10:46
|
(11) какого тега, ты о чем?
|
|||
13
lxs
22.03.12
✎
10:48
|
по теме, тебя чем не устраивает свойство ячейки "переносить"? Ты хочешь "лишний" текст в нижнюю ячейку писать?
|
|||
14
Креатив
22.03.12
✎
10:49
|
(13)Ага.
|
|||
15
lxs
22.03.12
✎
10:50
|
в таком случае для начала надо область добавить для строк, и потому тупо в цикле считать количество символов, но с учетом (2).
|
|||
16
comp2006
22.03.12
✎
10:51
|
Функция РазбитьСтрокуНаДвеЧасти(СтрокаДляРазбивки, Разделитель, КолСимволовДляПервойЧасти)
СтруктураРазбитыхСтрок = Новый Структура; МассивЧастейСтроки = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрокаДляРазбивки, Разделитель); Строка1 = ""; Строка2 = ""; КонтрСтрока = ""; Если МассивЧастейСтроки.Количество() > 0 Тогда Для Каждого Значение Из МассивЧастейСтроки Цикл КонтрСтрока = КонтрСтрока + " "+Значение; Если СтрДлина(КонтрСтрока)< КолСимволовДляПервойЧасти Тогда Строка1 = Строка1 + " "+Значение; Иначе Строка2 = Строка2 + " "+Значение; КонецЕсли; КонецЦикла; КонецЕсли; СтруктураРазбитыхСтрок.Вставить("Строка1", СокрЛП(Строка1)); СтруктураРазбитыхСтрок.Вставить("Строка2", СокрЛП(Строка2)); Возврат СтруктураРазбитыхСтрок; КонецФункции |
|||
17
Reset
22.03.12
✎
10:51
|
(12) У тебя цель докопаться или ты не проснулся? Я хотел подчеркиванием выделить слова.
|
|||
18
Креатив
22.03.12
✎
10:52
|
(16)Интересно, но не совсем то.
|
|||
19
lxs
22.03.12
✎
10:53
|
(17) закрыли тему) все ок
|
|||
20
comp2006
22.03.12
✎
10:54
|
(18) Понимаю! Это просто заготовка.
|
|||
21
Креатив
22.03.12
✎
11:00
|
Ладно, всем спасибо. Лень удалось забороть. Сейчас наваяю.
|
|||
22
Йохохо
22.03.12
✎
11:21
|
(0) ширина столбца = 1.25*Количество символов
по памяти с ИТС, не проверял, мб 1.15, где то в стандартах разработки интерфейса |
|||
23
Креатив
22.03.12
✎
11:47
|
Если кому интересно. стр - исходная строка, ТЗ - две колонки, предел - число символов в строке, строка - полученный обрезок
Процедура РазбитьНаСтроки(стр, ТЗ) стр1 = СокрЛП(стр); Для Каждого стрк Из ТЗ Цикл Если СтрДлина(стр1) = 0 Тогда Прервать; КонецЕсли; предел = стрк.предел; длн = 0; пп = Найти(стр1, " "); Если пп = 0 Тогда пп = СтрДлина(стр1); КонецЕсли; Пока (длн + пп < предел) и (СтрДлина(стр1) > 0) Цикл стрк.строка = "" + стрк.строка + Лев(стр1, пп); стр1 = Сред(стр1, пп + 1); длн = длн + пп; пп = Найти(стр1, " "); Если пп = 0 Тогда пп = СтрДлина(стр1); КонецЕсли КонецЦикла КонецЦикла КонецПроцедуры |
|||
24
Йохохо
22.03.12
✎
14:24
|
открой тайну предела )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |