powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / переход между элементами по ENTER
8 сообщений из 8, страница 1 из 1
переход между элементами по ENTER
    #32361751
Elena Gadjieva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кому-нибудь приходилось реализовывать следующую вещь:
нужно сделать переход по нажатию 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: первый раз - для выбора значения из списка, второй- для перехода в следующее поле
...
Рейтинг: 0 / 0
переход между элементами по ENTER
    #32361803
Berg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На вскидку может как-то так:
if ( (Key = VK_RETURN) OR (Key = VK_TAB) ) {
ActiveControl := FindNextControl(Sender, true, true, false);
}

Т.е. не переопределять код клавиши, а просто фокус установить?
...
Рейтинг: 0 / 0
переход между элементами по ENTER
    #32361850
Elena Gadjieva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно,
ActiveControl := FindNextControl(ActiveControl, true, true, false) помогает перевести курсор на следующее поле даже при открытом списке, но все равно не выполняется выбор значения из списка (по нажатию Enter значение EditValue не меняется :( ). Может быть можно как-то вызвать событие Click или MouseDown принудительно ?
...
Рейтинг: 0 / 0
переход между элементами по ENTER
    #32361931
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вызываеца.
...
Рейтинг: 0 / 0
переход между элементами по ENTER
    #32362110
Фотография Andriy Tysh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая штука, как сообщения 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).
А для комбобокса ставь Перформ на ОнСелект и будет тебе щастье.
...
Рейтинг: 0 / 0
переход между элементами по ENTER
    #32364616
Авторррр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНа событие FormKeyDown делаю следующее
Свойство KeyPreview у формы о чем-нибудь говорит?
...
Рейтинг: 0 / 0
переход между элементами по ENTER
    #32365031
Дмитрий Мыльников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, просто возми и пошли своему ComboBox сообщение о нажатии клавиши Enter средствами Windows API (SendMessage) через его дескриптор окна (ComboBox1.handle). Подробности по функции и заполнению параметров сообщения см. либо в хелпе по WinAPI либо в соответсвующих книжках, в том числе посвящённых программированию на C (я с ходу не помню, тоже нужно в книги лезть).

В этом случае ComboBox будет считать, что нажата клавиша Enter и выполнит стандартное действие на это событие, а вы дальше сможете сделать то, что хотите. Кстати, многими компонентами можно управлять, просто подобным образом посылая им нажатие нужных клавиш (и не только клавиш, но и мышки и т.п.). Через этот механизм обычно делается система записи и воспроизведения макросов, которые повторяют заданную пользователем последовательность действий.
...
Рейтинг: 0 / 0
переход между элементами по ENTER
    #32365111
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скорее еще надобы поставить
key :=0;
после нажатия Enter

____
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / переход между элементами по ENTER
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]