Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
переход между элементами по ENTER
|
|||
|---|---|---|---|
|
#18+
Может кому-нибудь приходилось реализовывать следующую вещь: нужно сделать переход по нажатию Enter вместо Tab, при этом чтобы в элементах типа ComboBox (при получении фокуса список которых раскрывается) при нажатии Enter происходил обычный выбор из выпавшего списка (DroppedDown=True), а затем курсор переходил на следующее поле. На событие FormKeyDown делаю следующее: If Key=VK_RETURN Then Key:=VK_Tab Но если при этом DroppedDown=True, то не срабатывает ни выбор, ни переход на другое поле. Приходится делать так: If Key=VK_RETURN and Combobox.DroppedDown=False then Key:=VK_Tab При этом пользователю приходится два раза жать на Enter: первый раз - для выбора значения из списка, второй- для перехода в следующее поле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 11:06 |
|
||
|
переход между элементами по ENTER
|
|||
|---|---|---|---|
|
#18+
На вскидку может как-то так: if ( (Key = VK_RETURN) OR (Key = VK_TAB) ) { ActiveControl := FindNextControl(Sender, true, true, false); } Т.е. не переопределять код клавиши, а просто фокус установить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 11:30 |
|
||
|
переход между элементами по ENTER
|
|||
|---|---|---|---|
|
#18+
Действительно, ActiveControl := FindNextControl(ActiveControl, true, true, false) помогает перевести курсор на следующее поле даже при открытом списке, но все равно не выполняется выбор значения из списка (по нажатию Enter значение EditValue не меняется :( ). Может быть можно как-то вызвать событие Click или MouseDown принудительно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 11:56 |
|
||
|
переход между элементами по ENTER
|
|||
|---|---|---|---|
|
#18+
вызываеца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 12:50 |
|
||
|
переход между элементами по ENTER
|
|||
|---|---|---|---|
|
#18+
Есть такая штука, как сообщения WM_... Поиграй с ними. Я делаю так: procedure TfrmEnterCity.edtFindKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_RETURN: Perform(WM_NEXTDLGCTL, 0, 0); end; end; То-есть переходит на следующий елемент (см. свойство TabStop). А для комбобокса ставь Перформ на ОнСелект и будет тебе щастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 14:20 |
|
||
|
переход между элементами по ENTER
|
|||
|---|---|---|---|
|
#18+
авторНа событие FormKeyDown делаю следующее Свойство KeyPreview у формы о чем-нибудь говорит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2003, 15:09 |
|
||
|
переход между элементами по ENTER
|
|||
|---|---|---|---|
|
#18+
Короче, просто возми и пошли своему ComboBox сообщение о нажатии клавиши Enter средствами Windows API (SendMessage) через его дескриптор окна (ComboBox1.handle). Подробности по функции и заполнению параметров сообщения см. либо в хелпе по WinAPI либо в соответсвующих книжках, в том числе посвящённых программированию на C (я с ходу не помню, тоже нужно в книги лезть). В этом случае ComboBox будет считать, что нажата клавиша Enter и выполнит стандартное действие на это событие, а вы дальше сможете сделать то, что хотите. Кстати, многими компонентами можно управлять, просто подобным образом посылая им нажатие нужных клавиш (и не только клавиш, но и мышки и т.п.). Через этот механизм обычно делается система записи и воспроизведения макросов, которые повторяют заданную пользователем последовательность действий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2003, 23:48 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2115287]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 402ms |

| 0 / 0 |
