|
Перетаскивание Drag&Drop отменить по условию (да/нет) в динамическом списке |
☑ |
0
Said_We
14.09.17
✎
17:04
|
Есть динамический список номенклатуры с дополнительными данными из других источников. Пользователи в этом списке могут переносить элементы и группы номенклатуры из одного родителя в другого. Действие эти им разрешены. Есть одно НО.
Пользователи иногда случайно это делают и что бы исключить эту случайность достаточно задать им вопрос уверены они в своих действиях или нет.
Столько лет, а с перетаскиванием никогда не приходилось работать. Не было нужды.
Собственно вопрос. Как пользователю отменить свое действие, ответив на вопрос, что он не уверен в своих действиях.
Есть событийная процедура ОкончаниеПеретаскивания. К моменту вызова этой процедуры действие уже завершено и установка СтандартнаяОбработка = ЛОЖЬ не будет приводить к отмене действия.
Вижу только один вариант - запоминать перед началом перетаскивания откуда я перетаскиваю и в конце если пользователь отказался от своих действий, то делать обратный перенос.
Но как-то это не красиво и по дубовому.
Есть какие-то нормальный и простой способ?
|
|
1
Numerus Mikhail
14.09.17
✎
17:08
|
Есть еще ПроверкаПеретаскивания, НачалоПеретаскивания и просто Перетаскивание.
Может одно из них подойдет?
|
|
2
Said_We
14.09.17
✎
17:10
|
Они возникают либо вначале перетаскивания либо в процессе, а мне нужно только при завершении.
По факту переносить надо или это случайные действия и ручки шаловливые.
|
|
3
Said_We
14.09.17
✎
17:49
|
Тишина какая-то.
По ходу не только я один не работал с этим...
Я тут ещё один способ придумал. Тоже не через одно место.
На форму вывести галочку при установки которой перетаскивать можно, при снятии нельзя. После перетаскивания галочку сбрасывать.
Режим такой. Включил перетаскивание - перетащил. Перетаскивание отключилось.
|
|
4
Fragster
гуру
14.09.17
✎
17:54
|
заставьте юзеров играть в сапера старого, с 8*8 пикселей клеткой.
случайно, блин...
ну а вообще - событие Перетаскивание - то, что нужно.
|
|
5
AllJoke
14.09.17
✎
17:59
|
ТаблицаФормы (FormTable)
ОкончаниеПеретаскивания (DragEnd)
Синтаксис:
ОкончаниеПеретаскивания(<ПараметрыПеретаскивания>, <СтандартнаяОбработка>)
Параметры:
<ПараметрыПеретаскивания>
Тип: ПараметрыПеретаскивания.
Содержит перетаскиваемое значение, тип действия и возможные действия при перетаскивании.
<СтандартнаяОбработка>
Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.
Значение по умолчанию: Истина.
Описание:
Возникает при окончании перетаскивания в поле источнике данных.
|
|
6
Said_We
14.09.17
✎
18:15
|
(5) Это к чему?
СтандарнаяОбработка = Ложь не отменяет само перетаскивание.
Оно отменяет стандартную обработку события перетаскивания, но не само перетаскивание.
|
|
7
Said_We
15.09.17
✎
09:18
|
(4) Да событие "Перетаскивание", то что нужно. Отличается от описанного поведения, которое я нашел. По факту срабатывает при отпускании кнопки мыши, а не при наведении на то куда хочешь перенести, но ещё не отпустил кнопку.
Ошибочное описание я нашел и поверил ему, что даже пробовать не стал.
Еще раз убеждаюсь, что верить описанию нельзя.
Спасибо.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший