169 похожих чатов

Всем привет! Использую кастомное модальное диалоговое окошко, все по классике

- mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработчик событий клавиатуры, в котором отслеживаю работу горячих клавиш. Есть там и обработка RETURN (ловит нажатие Энтера то бишь).
Так вот в вышеупомянутом диалоговом окне если я жму на Enter, то после его закрытия, в главной форме я тоже ловлю реакцию на нажатый Enter (сейчас по умолчанию на кнопке Да фокус стоит, с ModalResult=mrOK).

Как бы мне прекратить передачу этого сообщения главной форме, кто знает ?

20 ответов

16 просмотров

Если форма кастомная, то отлавливай в ней return и ставь key := #0

Олег-Гранишевский Автор вопроса
Володя
Если форма кастомная, то отлавливай в ней return и...

Этот способ знаю, но он почему то не работает. Главная все равно ловит событие. Форма с диалоговым окном - кастомная, да.

Олег Гранишевский
Этот способ знаю, но он почему то не работает. Гла...

А как ты его ловишь? OnKeyDown? DefaultHandler? или ещё как-нибудь?

Олег-Гранишевский Автор вопроса
Володя
А как ты его ловишь? OnKeyDown? DefaultHandler? ил...

Пробовал эти два обработчика. KeyPreview-свойство у формы True, тоже, разумеется.

Олег-Гранишевский Автор вопроса
Володя
Я про главную форму, какой там обработчик

procedure TfrmMAIN.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

Олег Гранишевский
procedure TfrmMAIN.FormKeyUp(Sender: TObject; var ...

А теперь попробуй в модальной тоже keyUp обрабатывать

Олег Гранишевский
procedure TfrmMAIN.FormKeyUp(Sender: TObject; var ...

Я даже на тестовом примере повторить не могу

Олег-Гранишевский Автор вопроса
Олег Гранишевский
проблема не повторяется?)

ага, с showmodal или просто show никакой разницы нет

Олег-Гранишевский Автор вопроса
Олег-Гранишевский Автор вопроса
Володя
понял, у меня 12.1

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

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

Олег-Гранишевский Автор вопроса
Михаил Усков
перед ShowModal диалога отключай KeyPreview у отсл...

Тогда по идее активный контрол на основной форме словит событие

Олег-Гранишевский Автор вопроса
Володя
Тогда по идее активный контрол на основной форме с...

ага, так и есть) а мне как раз этого и не надо

Олег-Гранишевский Автор вопроса
Володя
А проверь кто в Sender приходит

активный контрол главной и приходит. тот который до появления диалога был активен

Похожие вопросы

Обсуждают сегодня

Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет. Хотел бы написать для себя свою ос. Причины: 1) нужен опыт в чем-то 2) будет меньше весить 3) свое, но там будут свои задумки Я понимаю что нужно писать для всег...
Shadow Akira
18
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
5? да там все 10
Boris Vinogradov
12
now Linux kernel development is becoming a dictatorship group: https://www.youtube.com/watch?v=xPF2NSFvNCc
Sharuzzaman Ahmat Raslan
23
Приветствую всех, может кто знает как это реализовать? Чтобы окно не сворачивать и восстанавливать, чтобы обойтись без этого. Просто сделать скриншот всего, что есть под актив...
di ma
6
Всем привет! Скажите, никто не пытался уменьшить размер процесса ssl, которые ассоциируется с открытым соединением (не помню точное название этого процесса, но там была какая-...
Алексей
20
Ок. Где достать 11 версию дельфи. На офф сайте ссылки на неё нет... Какие есть варианты?
Serg Vish
19
привет всем. Народ, кто-нибудь работал с мультипоточностью? Где посмотреть/ что почитать посоветуете? В идеале чтоб материал был максимально сжатый, времени читать например в...
Serg Vish
18
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
Карта сайта