Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2014, 07:49   #1
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию закрытие формы по escape - "правильное" решение и проблемы

Здравствуйте!

снова я на каких то граблях вроде в простейших вещах

как "правильно" закрыть форму по escape?

обработать keydown или keypress, предварительно выставив keypreview в true - не подходит, начинаются проблемы в дочерних компонентах
собс-но, подробнее тут:
http://www.delphinotes.ru/2010/10/escape.html

там же рекомендуется перехватить сообщение CM_DIALOGKEY

в камментах кто-то рекомендует перехватывать CM_CHILDKEY, но и с перехватом CM_DIALOGKEY работало.... работало, пока не разместил на форме TJvCombobox из пакета компонентов JVCL - и всё, если курсор внутри контрола - нажатие escape не перехватывается

то же самое, если размещаю на форме кнопку и ставлю ей modalresult в mrCancel - хоть где находится курсор, форма закрывается, если она в штатном TCombobox - тоже закрывается, а вот с TJvCombobox - проблема

перехватил CM_CHILDKEY - всё заработало, однако именно с TJvCombobox проблема: ведёт себя так же, будто форма перехватывает все его события, закрывает окно, когда активен выпадающий список. Со штатным Combobox проблем нет

Быть может, как-то "правильно" сделать закрытие по-другому?

Или это компонент TJvCombobox так зверски глючит? Забивать костыль и перехватывать событие каждого TJvCombobox на форме (их много) не хочется!

Последний раз редактировалось AnTe; 05.06.2014 в 07:53.
AnTe вне форума Ответить с цитированием
Старый 05.06.2014, 07:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не подходит, начинаются проблемы в дочерних компонентах
Регистрируй её как горячую клавишу
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.06.2014, 08:11   #3
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию

Цитата:
Сообщение от AnTe Посмотреть сообщение
Или это компонент TJvCombobox так зверски глючит? Забивать костыль и перехватывать событие каждого TJvCombobox на форме (их много) не хочется!
Ну видимо придётся или же использовать ListBox ведь он может прекрасно его заменить. Не понимаю зачем тебе этот компонент.
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 05.06.2014, 08:13   #4
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию

Цитата:
Сообщение от Rockot Посмотреть сообщение
Ну видимо придётся или же использовать ListBox ведь он может прекрасно его заменить. Не понимаю зачем тебе этот компонент.
положим, поле ввода находится в самом низу формы.....

похоже, придётся разобраться с имплементацией интерфейса, как рекомендовал cotseec....
AnTe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка "недопустимая escape-последовательность" Jamguranga Visual C++ 1 07.02.2013 21:32
Как "повесить " передачу данных из формы на событие нажатия кнопки типа "button" ? vedro-compota JavaScript, Ajax 10 14.12.2010 21:05
Решение проблемы "Cannot add header information..." dr.Chas PHP 11 30.07.2010 18:45
"Windows заблокирован" - решение проблемы! Web-Gangsta Windows 20 25.05.2009 03:49
Запретить закрытие окошка формы крестиком "Х" Slim Microsoft Office Excel 5 28.03.2007 19:39