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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрет фокуса form и button, кто знает, раскажите 
V
    Опции темы
Darksquall
  Дата 17.3.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть Form1 на ней лежит image1 и button1 я считываю коды клавиатуры

Код

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
kbd:=inttostr(ord(Key));
end;

procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
form1.KeyDown(Key,Shift);
end;


Однако, когда Form1 теряет фокус и он переходит на button1 то расширенные коды (стрелки tab и т.д.) в Button1KeyDown не получают, получает их только Form1. Решил я запертить button получать фокус раз так, однако нужно чтобы сам он при этом работал, т.е. мышкой мы могли на него нажать. Кто че знает опишите плиз!

P.S. Setfocus на Form1 не удается т.к. и Focuscontrol пишет что не может установить фокус на невидимое окно(хотя форму я не скрывал), может это из за image который на form1 лежит.


--------------------
PM WWW ICQ   Вверх
Romikgy
Дата 17.3.2006, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Код

procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
form1.KeyDown(Key,Shift);
form1.setfocus;
end;

так попробуй


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Darksquall
Дата 17.3.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Romikgy не а не работает для всех клавиш, я пробовал так уже, Button1KeyDown не в состоянии принимать расширенные коды :-(
Добавлено @ 16:21
вот он выход

блокируем Tab

Код

  private
  Procedure CMDialogKey(Var Msg:TWMKey); message CM_DIALOGKEY;

Procedure TForm1.CMDialogKey(Var Msg: TWMKey);
Begin
If NOT (ActiveControl Is TButton) Then
If Msg.Charcode = 9 Then
Msg.Charcode := 0;
inherited;
End;

procedure TForm1.Button1Enter(Sender: TObject);
begin
form1.SetFocusedControl(Form1);
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
kbd:=inttostr(ord(Key));
end;


все заработало smile

странно но в данном случае KeyPreview:=true не сработал

Это сообщение отредактировал(а) Darksquall - 17.3.2006, 16:21


--------------------
PM WWW ICQ   Вверх
Romikgy
Дата 17.3.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Поставь у формы KeyPreview=true и будет тебе щастье


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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

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

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

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

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


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

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


 




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


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

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