Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 дек 2024, 06:45

Обраотчик события 2-ного нажатия на поле картинки в форме ?

Автор oooo800, 06 окт 2023, 13:01

0 Пользователей и 1 гость просматривают эту тему.

oooo800

Самописная конфигурация на управляемых формах, платформа версии 8.3.23.1865.

Как реализовать, чтобы ри двойном нажатии на поле картинки формы, например выводилось окно с вопросом.

В событиях элемента формы вида "Поле картинки" не нашел "Двойное нажатие" .

LexaK

oooo800, да, обработчика двойного нет,
у нас используется обработчик простого "Нажатие"

(используйте его, пользователям скажите что это особенности платформы 1С и пусть привыкают)
если помогло нажмите: Спасибо!

oooo800

LexaK, У меня было также.
Им было ни фига не удобно, вынес на отдельную кнопку(нужную операцию) .

Вообще странно, что не посчитали в 1С нужным, наличие такого события.

LexaK

oooo800, можно конечно извратиться
например так
сделайте на форме реквизит ВремяНажатия
при нажатии на картинку получаете
ТекВремя = ТекущаяДата()
сравниваете с реквизитом ВремяНажатия если разница совтавляет 0 или 1 секунду
выполняете действие двойного клика
если нет запоминаете
ВремяНажатия = ТекВремя;

(не проверял, должно сработать)
если помогло нажмите: Спасибо!

GetNight

LexaK, направление мысли правильное, но там счёт идет на миллисекунды ;)
поэтому нужно использовать другую функцию ТекущаяУниверсальнаяДатаВМиллисекундах()

я бы сделал как-то так:

создал бы на форме реквизит "МоментНажатия" типа число и повесил на кнопку процедуру

Процедура НажатиеКнопки(Кнопка)

ТекущийМомент = ТекущаяУниверсальнаяДатаВМиллисекундах();

Если МоментНажатия > 0 И ТекущийМомент - МоментНажатия < 200 Тогда
// делаем то, что нужно
МоментНажатия = 0
Иначе
МоментНажатия = ТекущийМомент
КонецЕсли

КонецПроцедуры


И вдруг я вспомнил, что что-то подобное уже реализовывал.
Была задача сделать так, чтобы форму не могли нажать случайным нажатием на ESC.
Так как форма долго формировалась а в ней нужно было сделать много операций.

Вывел кнопку "ESC" в правый верхний угол и повесил на неё сочетание клавиш = ESC (27)
Теперь нужно либо двойное нажатие мышкой на эту кнопку, либо конкретно нажимать мышкой на кнопку Закрыть.

Вот код, который я тогда использовал (тоже приведу, он 100% рабочий)

Процедура НажатиеESC(Элемент)
ТекущийМомент = ТекущаяУниверсальнаяДатаВМиллисекундах();
Если МоментНажатияESC = 0 ИЛИ ТекущийМомент - МоментНажатияESC > 200 Тогда
МоментНажатияESC = ТекущийМомент
Иначе
ЭтаФорма.Закрыть()
КонецЕсли
КонецПроцедуры

oooo800

GetNight, вот что-то с Esc, давно читал.
Вспоминал где, не мог найти.
Спасибо, на днях попробую.
Отпишусь.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск