|
v7: Обработка поля ввода и кнопки | ☑ | ||
---|---|---|---|---|
0
ВопросБот
22.07.15
✎
12:44
|
Не воткну как стандартно обработать следующий момент: у меня есть поле ввода, скажем, для поиска документа и рядом кнопка для поиска. Нужно иметь возможность искать как при нажатии на Enter в поле ввода, так и кнопкой. Проблема в том, что когда вешаю процедуру на оба этих элемента управления, то, при желании выполнить поиск кнопкой, процедура выполняется дважды: сначала при сходе с элемента управления поле ввода ("реквизит диалога"), затем при нажатии кнопки. Как этот момент правильно реализовать в 7-ке?
|
|||
1
Builder
22.07.15
✎
13:06
|
ВыполнятьФормулуТолькоПриИзменении(<?>);
Синтаксис: ВыполнятьФормулуТолькоПриИзменении(<Режим>) Назначение: Установка режима выполнения формулы выбранного поля табличной части документа. Параметры: <Режим> - число: 1 - формула вызывается только при изменении значения поля, 0 - вызывается и при переходе между полями. Замечание: Доступ к методу возможен только в контексте Модуля формы через атрибут Форма. Подробнее см. в документации, глава 'Атрибуты и методы контекста Модуля формы' |
|||
2
ВопросБот
22.07.15
✎
13:17
|
(1) не понял, как это применить к (0)
насколько я понял эта процедура только к табличной части относится |
|||
3
Builder
22.07.15
✎
13:21
|
(2) Ну значит не применяй :)
|
|||
4
ВопросБот
22.07.15
✎
13:26
|
(3) вроде бы задача-то стандартная должна быть. Может есть возможность отключить выполнение формулы при сходе с элемента управления? Только Enter чтобы работал?
|
|||
5
HawkEye
22.07.15
✎
13:28
|
(0) как программа должна понять что нажав Enter - ты не хочешь выполнять поиск?
|
|||
6
ВопросБот
22.07.15
✎
13:31
|
(5) на поле ввода повесил формулу. Хочу чтобы выполнялась только по Enter, а при сходе с элемента управления - не выполнялась.
|
|||
7
palpetrovich
22.07.15
✎
13:32
|
а так:
Процедура ПриИзм(кн="") если кн="Кнопкой" тогда кн=""; возврат; конецесли //... КонецПроцедуры |
|||
8
ВопросБот
22.07.15
✎
13:32
|
+(6) хотя, можно оставить и выполнение при сходе с элемента управления, но тогда мне как-то нужно контролировать изменение значения, т.е. переменную модуля заводить чтоли?
|
|||
9
palpetrovich
22.07.15
✎
13:36
|
+(7) проверил, работает
//******************************************* Процедура ИзмПоле(кн="") Если кн = "Тыцнуть" Тогда кн = ""; Возврат; КонецЕсли; Сообщить("ИзмПоле"); КонецПроцедуры |
|||
10
HawkEye
22.07.15
✎
13:39
|
(8) заведи переменную модуля
|
|||
11
ВопросБот
22.07.15
✎
13:41
|
(7)(9) это не поможет. Попробуй введи значение в поле и следом нажми кнопку - процедура выполнится дважды.
|
|||
12
ВопросБот
22.07.15
✎
13:41
|
(10) не хочется
|
|||
13
palpetrovich
22.07.15
✎
13:42
|
(11) мля, я в (9) проверил уже. естественно на поле ввода ИзмПоле(), на кнопку ИзмПоле("Тыцнуть")
|
|||
14
HawkEye
22.07.15
✎
13:51
|
(12) не заводи ))
|
|||
15
ВопросБот
22.07.15
✎
14:04
|
(13) разобрался, спасибо. Видимо, это то, что нужно.
|
|||
16
ВопросБот
22.07.15
✎
14:10
|
(15)+(13) нет, подожди, что-то тут не так. Чем твой код отличается от того, как если бы я просто не повесил никакого кода на кнопку?
|
|||
17
ВопросБот
22.07.15
✎
14:17
|
Вобщем просто убрал код с кнопки. В предыдущей реализации этот вариант не подходил, а теперь, пожалуй, оставлю так.
|
|||
18
palpetrovich
22.07.15
✎
14:21
|
(17) ну, ваще-т да, решение немного "от лукавого" :)
и вообще, решение предполагает, что на форме более нет других элементов, Если есть, то при смене фокуса процедура сработает тоже |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |