Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GridKeyUp и InputBox - застреваю при нажатии Ентера [D7, XP, 2003]


Дмитрий ©   (2014-09-26 15:20:00) 

В обработчике грида KeyUp проверяю нажатые клавиши (Ентер или Ф2) и вызываю ИнпутБокс.

После ввода значения и подтверждения Ентером тут же повторно открывается ИнпутБокс.
Как предотвратить?


Дмитрий   (2014-10-06 18:22:00) [1]

к настоящему моменту у меня был реализован вариант с подпоркой
попробовал перенести в обработчик кейдаун - там подпорка не потребовалась. а внешний эффект абсолютно идентичен
даже при длительном удержании клавиши
так что, приму кейдаун

вариант с
PeekMessage(WinMsg, Handle, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE);
не помог, лишний "ентер" не сбрасывается


junglecat   (2014-10-01 15:00:00) [2]

если уж очень хочется повесить на keyup, то нужен костыль
типа
S := InputBox(...);
if (S <> '') then begin
 ...
 PeekMessage(Msg, Handle, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE);
end;
либо
if FInputConfirmed then begin
 FInputConfirmed := false;
 Exit;
end;
S := InputBox(...);
if (S <> '') then begin
 FInputConfirmed := true;
...
end;


Дмитрий   (2014-10-01 14:36:00) [3]

> Key := 0;

подтверждаю,
пробовал - не памагаит
((((


junglecat   (2014-10-01 10:06:00) [4]

> [12] Плохиш ©   (01.10.14 00:33)

в данном случае мы все равно попадем в обработчик keyup после закрытия инпутбокса, так что не сработает


Плохиш   (2014-10-01 00:33:00) [5]


> здесь не поможет

это скажет системе, что нажатие кнопки уже обработано и дальнейшая обработка не требуется.


junglecat   (2014-09-30 21:00:00) [6]

> Key := 0;

здесь не поможет


Плохиш   (2014-09-30 18:36:00) [7]

Key := 0;


junglecat   (2014-09-30 17:21:00) [8]

потому что модальные диалоги закрываются по факту нажатия, а не отпускания


Дмитрий   (2014-09-30 16:50:00) [9]

почему кейап не ловится?


junglecat   (2014-09-30 15:59:00) [10]

нет. кейдаун уже отловлен инпутбоксом при закрытии


Дмитрий   (2014-09-30 15:55:00) [11]

взамен будет ловиться ненужный кейдаун
разве нет?


junglecat   (2014-09-30 14:52:00) [12]

повлияет, так как сейчас ловится ненужный keyup от инпутбокса, судя по всему


Дмитрий   (2014-09-30 14:38:00) [13]

чтобы обработка происходила при отпускании клавиши
думаете, повлияет на сабж?


junglecat   (2014-09-28 11:35:00) [14]

тогда почему не KeyDown?


Дмитрий   (2014-09-26 15:44:00) [15]

Ф2 не отрабатывается по КейПресс


junglecat   (2014-09-26 15:21:00) [16]

а почему не KeyPress?


Наверх

Титульная страница Поиск, карта сайта Написать письмо