Имя: Пароль:
1C
 
многострочное Поле ввода
0 Kalen Towr
 
07.02.08
17:17
Если в процессе ввода пользователем строки в многострочном поле ввода программно сменить фокус (например, выдать Предупреждение), то весь набранный текст пропадает к чертовой матери :(
Что делать?
1 Kalen Towr
 
07.02.08
17:20
Только теперь заметил, что если поле ввода не многострочное, по при нажатии в нем клавиши сразу меняется признак измененности формы. В многострочном только когда пользователь сам сменит фокус. А до этого момента значение переменной поля не обновляется.
2 Kalen Towr
 
14.02.08
12:41
Прошу прощения, фигню написал. На самом деле проблема не в смене фокуса, а в повторном открытии формы.
Еще раз:
Есть форма с многострочным текстовым полем ввода. Она открывается ОбработкойОжидания. Так вот, если форма уже открыта, и в указанном поле уже набран какой-то текст (причем курсор еще не покидал это поле), форма открывается повторно, то текст исчезает.
Что подскажете?
3 Kalen Towr
 
14.02.08
12:42
само по себе повторное открытие необходимо, не открывать нельзя
4 lea_220400
 
14.02.08
12:44
для чего все это?
5 Kalen Towr
 
14.02.08
12:53
(4) типа органайзер/мессенжер если это интересно.
вопрос принципиальный: как при повторном открытии формы оставить набранный текст?
6 Альберт_Уфа
 
14.02.08
12:57
(5) как вариант: если это документ, то "Записать()"
7 Ёпрст2
 
14.02.08
13:01
(0) Не пользоваться повторным открытием ...а через контекст открытой формы обновлять реквизиты в обработке ожидания если форма открыта ...
8 Kalen Towr
 
14.02.08
13:06
(6) нет, это форма обработки. Но даже если бы и документ, не думаю, что что-то было бы по-другому. Полагаю 1с присваивает значение переменной поля только после того, как курсор это поле покинет. А тут до этого не доходит.
Попробовал SendKey`ем TAB послать, не помогает. Есть еще идеи?
9 Kalen Towr
 
14.02.08
13:07
(7) см. (3) или как ее тогда "всплыть"?
10 Kalen Towr
 
14.02.08
13:15
+(9) я про форму
11 DrZombi
 
гуру
14.02.08
13:19
(10)Вышли текст обработки :)
12 DrZombi
 
гуру
14.02.08
13:19
+(10)Только на форум :)
13 Ёпрст2
 
14.02.08
13:19
(9) в Обработке ожидания пишешь:

Перем Конт;
........

Если ТипЗначения(Конт)<>100 Тогда
  ОткрытьФорму("Обработка.ТвойМессенжер",Конт);
КонецЕсли;
Конт.Форма.Вася.Заголовок(ТекущееВремя());
Конт.Активизировать("Вася",1);
//Вася - текст на форме или любой другой реквизит ...
14 Kalen Towr
 
14.02.08
13:26
какой тут текст нужен?
Создай обработку. Положи на форму поле ввода. В глобальнике пропиши ее в ОбработкеОжидания с интервало, скажем, в 10 сек. Запусти. Представь себя юзером. Когда откроется форма, вводи чегонть в поле в течение 12 секунд. Через 10 сек. ты обломишься. Через 50 начнешь материться.
15 Kalen Towr
 
14.02.08
13:27
(14) к (11)
16 Kalen Towr
 
14.02.08
13:28
(13) сенкс, попробую.
17 DrZombi
 
гуру
14.02.08
13:29
(16)...шутник и притом почти ленивый
18 Kalen Towr
 
14.02.08
13:32
(13) т.е. чтобы "всплыть" форму достаточно Конт.Активизировать()?
А Конт.Форма.Вася.Заголовок(ТекущееВремя()) для прикола или тут какая хитрость?
19 Kalen Towr
 
14.02.08
13:33
(17) почти... :D
20 Ёпрст2
 
14.02.08
13:34
(18) Конечно для прикола ...
ЗЫ: Еще можешь скриптом максимизировать форму ...если что..
21 Ёпрст2
 
14.02.08
13:35
+20 только не вздумай активизировать свой реквизит многострочный - всё потеряешь... лучше текст невидимый ...Так и фокус с твоего поля не уплывёт ..
22 Kalen Towr
 
14.02.08
13:51
(21) респект.
Впрочем, с фокусом тут не так однозначно. Иногда его надо будет "уплыть". Причем еще и на другую закладку. Ладно, придумаю что-нибудь.
23 Ёпрст2
 
14.02.08
13:58
(22) Та тоже не проблема, проверить через контекст текущий нумер закладки и активизировать в ней что-нибудь ...
24 Kalen Towr
 
14.02.08
14:02
(23) а при переключении слоев текст опять не слетит?
25 Ёпрст2
 
14.02.08
14:03
(24) По идее нет ... глядеть надо ...
26 Kalen Towr
 
14.02.08
14:06
ОК
27 Kalen Towr
 
22.02.08
17:16
(25) а слетает однако :(