![]() |
|
![]() ![]() ![]() |
|
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Закрываю таким образом дочерние формы. Обрабатываю событие формы OnKeyPress, при этом KeyPreview = true.
|
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
А клавиша обрабатывается второй раз или нет? У меня была похожая проблема с DBGrid: когда фокус был на нём - горячие клавиши не обрабатывались. Пришлось использовать обработчик DBGridKeyPress(). Также, возможно, что эту клавишу перехватывает TWebBrowser. Например, в FireFox'е клавиша Esc - это прервать загрузку страницы. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
||||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Интересный вопрос, но тем не менее... Проверьте, срабатывает KeyPress у TWebBrowser. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
||||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Вот тестовый проект, имитирующий проблему. Очевидно есть зависимость от того, загружаю ли я в WebBrowser контент. Если не загружаю - то все срабатывает. А если загружаю Form2->WebBrowser1->Navigate(WideString("about:blank")); - то срабатывает только однократно.
Это сообщение отредактировал(а) Нитонисе - 7.1.2013, 18:53 Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Так оно и есть. WebBrowser перехватывает ESC. Если добавить на форму ещё один контрол и перед нажатием ESC передать фокус ему, то всё ОК. Дело в том, что WebBrowser - это обёртка над COM-объектом (типо как MS Word, Excel и т.п.). По сути, это приложение в приложении. У него есть свои обработчики. Единственный выход - перед нажатием ESC - передавать фокус.
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Но ведь если в браузер не загружен контент, то форма закрывается всегда. Может стоит как-то перед Esc выгружать контент, придавая компоненту начальное состояние? Добавлено через 10 минут и 54 секунды Со сменой фокуса не ясно в какой момент ее выполнить. У TWebBrowser нет события OnKeyPress. Наверное надо как-то запрещать этому компоненту получать фокус. |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Ещё не факт, что в этот момент уже создан COM-объект. Возможно, это просто VCL обёртка отображается и все. Я же говорил, что это приложение в приложении получается. Никак не запретишь ему этого делать. Фокус можно перекидывать либо сразу после Navigate(), но тут есть проблема - пользователь может тыкнуть по странице. Либо завести таймер, который этим займётся ![]() -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
||||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Можно и так. Но я думаю, что не будет ничего страшного, если даже будет 2 сек.
![]() -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
Можно использовать компоненты TActionList или TMainMenu. Добавить в него действие и установить у него свойство ShortCut = Esc.
|
|||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Добавил компонент TActionList. Добавл действие Action1, установил его свойство ShortCut=Esc. Что делать дальше не знаю, потому что с этим компонентом никогда не работал ![]() |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
||||
|
||||
Нитонисе |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Хм. Работает
![]() Это был такой эффект если действие Action1 прописать в свойстве формы Action. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |