Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Управление фокусом в Delphi, Помогите разобраться с установкой фокуса 
:(
    Опции темы
Sog
Дата 10.12.2005, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 10.12.2005

Репутация: нет
Всего: нет



Как установить фокус на форму? Стандартное Form1.SetFocus; почему-то не работает.
Поясню: создаём новый проект и пишем простой обработчик события Form1.OnKeyDown (например такой: if Key=VK_ESCAPE then close;). После запуска приложения можно убедиться, что кнопка работает. Теперь поместим на форму компонент, скажем RadioButton из Standart. Теперь запустим программу и ткнём в компонент мышкой. Ну и всё: нажатие Esc не обрабатывается и снять выделение с RadioButton1 (есть мысль, что не обрабатывается именно поэтому) никак не получается smile
Я понимаю, что можно обработчиком события RadioButton1.OnKeyDown сделать процедуру FormKeyDown, но это не решает вопрос с курсорными клавишами.
И ещё: мне нужно поместить фокус именно на окно (на форму), а не на компонент на ней. В этом-то и проблема! Процедурой SetFocus я могу принудительно установить фокус на любой компонент, а на само окно - не могу smile

Народ, помогите пожалуйста! smile
Заранее спасибо.
PM MAIL   Вверх
Poseidon
Дата 10.12.2005, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Установи свойство KeyPreview формы в True.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Sog
Дата 11.12.2005, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 10.12.2005

Репутация: нет
Всего: нет



Спасибо, помогло. А как быть с курсорными клавишами? Есть возможность перехватывать их нажатие?
PM MAIL   Вверх
Poseidon
Дата 11.12.2005, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Sog @ 11.12.2005, 09:28)
Есть возможность перехватывать их нажатие?
Конэчно! smile
VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
darkart
Дата 11.12.2005, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: нет
Всего: 31



Цитата

Цитата (Sog @ 11.12.2005, 09:28)
Есть возможность перехватывать их нажатие?

Конэчно!
VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN

Неа не работает... Если фокус, например, у кнопки

Это сообщение отредактировал(а) darkart - 11.12.2005, 16:36
PM MAIL WWW ICQ Skype GTalk   Вверх
Marriage
Дата 11.12.2005, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



Ак омпонента типа TApplication не решит проблему ???



--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
Sog
Дата 11.12.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 10.12.2005

Репутация: нет
Всего: нет



Что за компонента и где находится? Я честно говоря не в курсе.
PM MAIL   Вверх
Slayers
Дата 12.12.2005, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 17.7.2005
Где: Харьков

Репутация: нет
Всего: 1



Цитата(darkart @ 11.12.2005, 16:36)
Неа не работает... Если фокус, например, у кнопки

Ну тогда нада кинуть на форму таймер и написать вот такой код :
Код

IF GetAsyncKeyState (VK_DOWN)<>0 Then Close;


PM MAIL   Вверх
darkart
Дата 12.12.2005, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: нет
Всего: 31



Я так понимаю Marriage писал о TApplicationEvents, в Delphi7 находится на вкладке Additional.
PM MAIL WWW ICQ Skype GTalk   Вверх
Sog
Дата 12.12.2005, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 10.12.2005

Репутация: нет
Всего: нет



to Slayers: да, с таймером действительно работает, спасибо. А как отследить комбинацию скажем Shift+Down?

to darkart: Спасибо, нашёл.

to Marriage: А как эта компонента может мне помочь?
PM MAIL   Вверх
darkart
Дата 12.12.2005, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: нет
Всего: 31



К примеру так:
Код

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;var Handled: Boolean);
begin
  if msg.message=WM_KEYDOWN then
    if msg.wParam=VK_LEFT then showmessage('ok');
end;

PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.