![]() |
![]() |
![]() |
|
Динамические поля ввода | ☑ | ||
---|---|---|---|---|
0
Aleksey1989
12.04.12
✎
09:07
|
Подскажите, пожалуйста, можно ли как-нибудь сделать так, чтобы поля ввода были динамическими, т.е. допустим, если текст, который вводится для них - помещается в одну строку, то ничего не надо делать, а если в несколько строк - то поля ввода должны увеличиваться по высоте, чтобы был виден весь текст (имеется ввиду, что свойство многострочный ввод у поля ввода установленно в "Истина")?
|
|||
1
Андрюха
12.04.12
✎
09:09
|
Никак.
|
|||
2
Cube
12.04.12
✎
09:09
|
УФ?
|
|||
3
Cube
12.04.12
✎
09:09
|
(1) Ну почему же...
|
|||
4
Андрюха
12.04.12
✎
09:11
|
Тогда тоже с интересом послушаю...
|
|||
5
Aleksey1989
12.04.12
✎
09:11
|
(2) да, УФ.
(1) Месяц назад я добивался этого эффекта, но была одна ошибка: при изменении высоты поля ввода текст, который был там введенн, удалялся. М.б. можно использовать другие элементы в 1С? |
|||
6
Рэйв
12.04.12
✎
09:18
|
(5)Перед изменением размера залить текст в буфер, после вернуть на место?
|
|||
7
Aleksey1989
12.04.12
✎
09:22
|
(6) Я насколько помню по такому принципу и делал, но почему-то у меня не получалось, т.е. в буфер ничего не сохранялось, м.б. потому что я делал это в событии "При изменении" поля ввода, а для того, чтобы текст оказался в буфере, надо закончить ввод.
|
|||
8
Cube
12.04.12
✎
09:33
|
(5) Ну я пробую так:
&НаКлиенте Процедура Реквизит1АвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) Элемент.Высота = Окр(СтрДлина(Текст) / 43, 0, РежимОкругления.Окр15как20); Реквизит1 = Текст; КонецПроцедуры //Реквизит1АвтоПодбор() Но пока такая проблема - текст съезжает вверх. То есть начало строки не видно при увеличении высоты поля ввода, чтобы его увидеть, нужно курсор сдвинуть в начало строки. |
|||
9
vmv
12.04.12
✎
09:40
|
ну почему же никак - чо ви сдаетесь сразу
на УФ я делаю так, допустим у меня есть реквизит данных "Показатель" на форме, кторый имеет тип "Характеристика". Возможные типы этой характеристики "число(2,0), строка(20) фикс., строка неограниченная. Я делаю так, создаю Группу страниц "СтраницыПоляВводаПоказатель" и Страницы и элементы формы с данными "Показатель" "СтраницаПолеВводаПоказателЧисло" "ПоказательЧисло" "СтраницаПолеВводаПоказателСтрокаФикс" "ПоказательСтрокаФикс" "СтраницаПолеВводаПоказателСтрокаМакс" "ПоказательСтрокаМаск" каорче как потом управлять типами и страница - это детский сад младшая группа, если решить проблему с размерами страниц, вообще мне надаоло жевать ету щнягу, пользуйтесь - все вазможно |
|||
10
vmv
12.04.12
✎
09:41
|
(8) расстрелять
|
|||
11
vmv
12.04.12
✎
09:46
|
+(9) естественно у страниц не должно быть заголовков, закладок и прочей бойды, т.е. юзер видит привычную плоскую форму и что там числюшка в два символа или текст в 10 киломметров - это решает управляющий реквизит, например, тип показателя.
Как тока его выбрали, программно переключаем безголовую страницу и там уже в конфиге мы рукчками настроили большие размери, рющки, хлопушкуи и поставили пущку - закативай ядро и пали, юзер счастлив. усе - идите работайте, кофейня закрывается |
|||
12
Cube
12.04.12
✎
09:46
|
(9) Ты тему прочитай ещё раз, можно на два раза. Ему надо увеличить поле ввода в высоту, а не поменять тип.
|
|||
13
Cube
12.04.12
✎
09:48
|
(11) Ну и сколько ты страниц собираешься сделать на форме, чтобы и текст в одну строку и в 20 строк нормально отображались? А если таких реквизитов на форме больше одного? Мда...
|
|||
14
vmv
12.04.12
✎
09:48
|
(12) а ты почичай паять раз - тип тут для примера тока, но если тебя трудно понять логики предложенного мной решения задачи в (0), то на пересдачу готовся)
|
|||
15
vmv
12.04.12
✎
09:50
|
(13) сколько нужно столько и создам, но УФ - это просто и переключение страниц не юзает сервер, а вот программное изменение размеров элементов формы - это смертная казнь, ладно предлагаю повешение, расстрел это для саботажников)
|
|||
16
Cube
12.04.12
✎
09:52
|
(15) Давай пример обработки с двумя реквизитами на форме, неизвестно сколько символов будет в каждом. Базары базарить каждый может, да деле докажи свою точку зрения, экзаменатор фигов...
|
|||
17
vmv
12.04.12
✎
09:53
|
+(13) и есть свойства разворачивания для фикс. строки группу фиксируешь, для неораниченной принудительно развочиваешь и т.д., но на своих страницах.
Хотя зря я это написал, пока это слишком сложно для твоей закостенелой замшелой философии форм |
|||
18
vmv
12.04.12
✎
09:54
|
(16) это платно) потрудись сам свять, я уже давно юзаю так динамику, да и тут примеры приводил
до чего народ ленивый пошел - дай г, да еще и ложку, мдя |
|||
19
Cube
12.04.12
✎
09:55
|
(18) Балабол.
|
|||
20
vmv
12.04.12
✎
09:57
|
(19) тещься и пиши г-код, я не против - у каждого свое ДАО)
|
|||
21
vmv
12.04.12
✎
09:58
|
(8) классический образчик г-кода, я думал так токлько девочки пишут после школы)
|
|||
22
Cube
12.04.12
✎
09:58
|
(20) Фиксиным попахивает... Ты, случайно, не он?
|
|||
23
Aleksey1989
13.04.12
✎
09:01
|
Я почти закончил с формированием динамических полей ввод, попозже выложу код.
Сейчас мне надо знать, как в логике программы указать, появились ли полосы прокрутки у поля или нет? Т.е. условие будет таким: Если появились полосы прокрутки, то надо увеличить высоту поля на 1. Я не знаю, есть ли в 1С возможность такой проверки. |
|||
24
vmv
13.04.12
✎
09:12
|
(23) делаешь программный скрин экрана и отправляешь файл скрина в графический анализатор и там получаешь результат да/нет)
|
|||
25
orefkov
13.04.12
✎
09:14
|
vmv всегда много трещит, чужой код всегда называет гкодом, своего кода не показывает, собеседника гнобит, при прижатии к стенке - сливается.
|
|||
26
Aleksey1989
13.04.12
✎
09:14
|
(24) А если серьезно - то никак.
|
|||
27
Aleksey1989
13.04.12
✎
09:31
|
Вот набросок кода, но в нем есть ошибка для переменной СчетчикДлины, никак не могу понять, почему она появляется, ведь она объявлена до использования, ей назначено значение, а все равно появляется ошибка: "Переменная не определена (СчетчикДлины)Если СтрДлина(Текст)><<?>>СчетчикДлины тогда (Проверка: Тонкий клиент)"
Сам код: Перем СчетчикДлины; &НаКлиенте Процедура ПриОткрытии(Отказ) СчетчикДлины = 100; КонецПроцедуры &НаКлиенте Процедура Реквизит1АвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) Если СтрДлина(Текст)>СчетчикДлины тогда ЭтаФорма.Элементы.Реквизит1.Высота = ЭтаФорма.Элементы.Реквизит1.Высота+1; СчетчикДлины = СчетчикДлины + 100; КонецЕсли; Реквизит1 = Текст; КонецПроцедуры |
|||
28
Aleksey1989
13.04.12
✎
09:38
|
(27) Проблему решил вводом реквизита формы. Но все равно интересно, почему возникала ошибка.
|
|||
29
orefkov
13.04.12
✎
10:06
|
(27)
В модулях УФ на переменные модуля тоже действуют директивы &НаСервере, &НаКлиенте и т.п. По умолчанию, если ничего не указано - &НаСервере. Попробуй &НаКлиенте Перем СчетчикДлины; |
|||
30
Cube
13.04.12
✎
14:30
|
(27) Зачем тебе вообще переменная? Сделай так:
&НаКлиенте Процедура Реквизит1АвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) Элемент.Высота = Окр(СтрДлина(Текст) / 100); Реквизит1 = Текст; КонецПроцедуры //Реквизит1АвтоПодбор() |
|||
31
Aleksey1989
13.04.12
✎
14:48
|
(30) Так тоже можно, но мне пока не очень понятно, каким образом считается высота: допустим, длина строки 200 символов, делим на 100 - получаем 2, т.е. высота будет равна 2-м. А если в поле ввода в одну строку помещается 300 символов (к примеру), то, получается, строка вовсе не нужна.
И еще: почему-то курсор постоянно возвращается в начало строки. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |