Имя: Пароль:
1C
1С v8
УФ Растяжение поля ввода по вертикали по содержимому
,
0 xavchik
 
28.07.19
21:21
Всем привет. На УФ есть поле ввода. Значение в него устанавливается пограммно через реквизит формы. Надо сделать, чтобы в поле был всегда видет весь текст, т.е. поле растягивалось по высоте. Перепробовал уже много чего. Многострочный режим = Да не помогает. Вместо растяжения просто повляется прокрутка, а высота все равно в одну строку.
1 vde69
 
28.07.19
21:30
Элементы.ИмяПоля.Высота = НужнаяВысота
2 xavchik
 
28.07.19
21:32
(1) А как мне эту высоту вычислить-то? Она можнеть быть разная в каждом отдельном случае.
3 vde69
 
28.07.19
21:32
(2) это другой вопрос :)
4 PiotrLoginov
 
28.07.19
22:51
а если интерактивно вводить, высота увеличивается сама?
тогда может помогут методы, имитирующие интерактивный ввод?
5 Тихий омут
 
29.07.19
07:53
Подниму тему, вопрос интересный.
Положим, шрифт для поля ввода задан моноширинный, ширина поля фиксирована, перенос по целым словам, артефакты типа табуляции считаем недопустимыми - т.е. по содержимому можно определить высоту в строках плюс-минус лапоть.
Как сделать автоматическое управление высотой поля ввода при вводе очередного символа? Использование обработчиков событий ИзменениеТекстаРедактирования и ОкончаниеВводаТекста приводит к довольно неожиданным результатам. Танцы вокруг однократного обработчика ожидания, запускаемого из этих обработчиков, тоже успеха не имеют.
(4) Что это - "имитация интерактивного ввода"?
6 xavchik
 
29.07.19
12:31
(5) На самом деле, у меня задача даже проще. Мне просто при подготовке формы надо показать эти поля, заполнить текстом и все. Потом они редактировать не будут пользователей и обрабатывать события изменения даже не надо.

Также рассмотрю другие элементы управления, которые позволят выделить текст и скопировать в буфер.
7 xavchik
 
29.07.19
12:32
(4) В том-то и дело, что пытался найти правильную настройку параметром печатанием в поле вручную. Поле в зависимости от содержимого не растягивается. Если задашь высоту, например 3, то три строки показывает - все остальное прячет под прокрутку
8 xavchik
 
29.07.19
12:34
(5) "по содержимому можно определить высоту в строках плюс-минус лапоть" вот как раз лапоть этот может вызвать проблемы. В полях содержаться сообщения. Если, например, отрежет что-то важно в конце и пользователь не увиди, то это очень плохо
9 Масянька
 
29.07.19
12:41
(5) Интересный вопрос решается интересно.
Я делала так:
1. вычислить высоту одной строки (как удобно - в см, пикселях). Для стандартного (определенного) шрифта. Считаешь, сколько строк (таких) помещается на листе.
2. вычислить ширину строки (столбца) в символах. Тут - как фишка ляжет... Я делала примерно - поровну широких символов (Ш) и узких. Мне было вилы заморачиваться по ширине символа (например, широкий символ - это 1,5 узких).
3. делишь выводимую строку по ширине строки (столбца). Тут опять мне было вилы (вернее, в силу специфики) заморачиваться по переносу. Я тупо резала (посередине слова).
4. считаешь, сколько строк получилось и выводишь соответственно (на одном листе, перенос).
В общем, интересно.
10 Масянька
 
29.07.19
12:43
+ (9) Очень хочется глянуть алгоритм мелкомягких в ворде.
11 xavchik
 
29.07.19
20:50
(10) На самом деле, все это уже реализовано в 1С (я имею в виду перенос слов). Если сделать поле высотой, например, 3, то перенос отлично работает. И пре переходе на 4-ю строку это событие отлично отлавливается и добавляется прокрутка. Вопрос лишь в том, как сделать, чтобы не прокрутка добавлялась, а просто увеличивалась высота  поля, вместо того, чтобы рассчитывать его высоту самостоятельно.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн