Тема: Как отменить закрытие формы по вводу Enter?

Стандартно на форме редактирования объекта, при вводе значения в атрибут, если пользователь нажимает Enter, то форма закрывается. Не очень привычно поведение для пользователей, они ожидают, что фокус перейдет на следующий элемент ввода. Можно как-то настроить, чтобы при вводе значений по Enter форма не закрывалась? А не программировать обработку введенного символа на каждом контроле.

Re: Как отменить закрытие формы по вводу Enter?

Я уже про это спрашивал. Молчат...
Скорее всего ответ будет типа:

Sub Form_BeforeClose(Form, Obj, Cancel)
  Cancel=true 
  Set WshShell = CreateObject("WScript.Shell")
  WshShell.SendKeys("{TAB}")
End Sub


Проблема только в том, что после отмены закрытия формы переход курсора идет на первый атрибут, а далее {TAB}-ми надо переключить "на следующий" по ходу атрибут. Но вот узнать на каком атрибуте был нажат Enter я не знаю как. И у контролов нет свойства "Order". Он же "Порядок следования" (переключения TAB-ом контролов). Его можно узнать/изменить похоже только через редактор форм, а программно никак.
Есть некое свойство SelectedItems, но что за оно и как работает неизвестно... может это оно.

(изменено: m_skipper, 21 июня 2017г. 14:41:04)

Re: Как отменить закрытие формы по вводу Enter?

Для контрола редактирования атрибута, есть флаг "Многострочный".
Для activex контролов есть флаг "Принимать клавишу Enter"

В этом случае Enter будет обрабатываться контролом, а не закрывать диалог.
Но перехода по tab по enter автоматического не будет, только в таблице между ячейками.

Общего свойства подобного "закрывать по еnter диалог" на диалоге нет.

Поведение - по tab переходить между контролами не предусмотрено и эмулировать не просто, если вообще возможно(нет возможности переставить focus на произвольный контрол)