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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2016, 10:08   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию форма не получает фокус

Здравствуйте.
Нужно обрабатывать событие tform1.OnKeydown();
Если на форме лежит хотя бы один визуальный компонент типа кнопка или листбокс (или фрейм с кнопками или листбоксами), то форма не получает фокус и KeyDown ей просто не приходит.
Что сделать?
BLACK_RAIN вне форума Ответить с цитированием
Старый 29.04.2016, 10:16   #2
Л.И.С.
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 17
По умолчанию

Сегодня услышал про такое свойство формы как KeyPreview. Вроде как, если оно равно true, то форма обрабатывает события прежде компонентов. Или что-то вроде того.
Оптимисты считают, что живут в лучшем из возможных миров. Пессимисты опасаются, что так оно и есть.
Л.И.С. вне форума Ответить с цитированием
Старый 29.04.2016, 11:00   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

а если для каждого компонента понадобится свой обработчик?
или фокус будет стоять на кнопке, нажму пробел и кнопка нажмется, а оно нафиг не надо?
KeyPreview это какой-то костыль. Работает, но проблема не решается.
И вообще, по нажатию стрелок фокус скачет с кнопки на кнопку, пока не упрется в ListBox/ListView.
За это не люблю VCL.
BLACK_RAIN вне форума Ответить с цитированием
Старый 30.04.2016, 05:42   #4
Л.И.С.
Пользователь
 
Регистрация: 28.04.2016
Сообщений: 17
По умолчанию

Ну... Я далеко не профессионал.
У меня недавно была проблема, как оказалось с фокусом, она решилась с помощью функции SetFocus. Может поможет, кто знает?
Код:
Form1.SetFocus
Ежли я говорю совсем уж не в жилу, то скажите, я и замолчу.
Оптимисты считают, что живут в лучшем из возможных миров. Пессимисты опасаются, что так оно и есть.
Л.И.С. вне форума Ответить с цитированием
Старый 30.04.2016, 10:05   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
а если для каждого компонента понадобится свой обработчик?
или фокус будет стоять на кнопке, нажму пробел и кнопка нажмется, а оно нафиг не надо?
KeyPreview это какой-то костыль. Работает, но проблема не решается.
И вообще, по нажатию стрелок фокус скачет с кнопки на кнопку, пока не упрется в ListBox/ListView.
За это не люблю VCL.
а какое приложение ведёт себя по-другому? фокус ввода для того и служит, чтобы система знала хэндл окна, который в данный момент принимает клавиатурные сообщения.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компьютер не получает ip-адрес Niro Свободное общение 1 10.06.2015 16:53
c# webclient не получает ответ Yoh Помощь студентам 2 11.02.2015 14:22
Форма не получает фокус phphel Общие вопросы Delphi 2 23.03.2011 20:32
сетевая карта не получает IP uvalerievna Помощь студентам 17 04.02.2011 18:03
HTTP Не получает ответ AngelOfDeath Работа с сетью в Delphi 3 23.08.2009 13:06