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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Alt+буква издает звук, на обработчике FormKeyDown 
:(
    Опции темы
Gershkovich
Дата 26.5.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всем привет!

В своем приложении я реализую "горячие" клавиши вот так:

Код

...
MyWin.KeyPreview:= true;
...

procedure TMyWin.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (ssCtrl in Shift) or (ssAlt in Shift) then begin
    case Key of
      65 : // 'A' call some proc;
      67 : // 'C' call some proc;
      69 : // 'E' call some proc;
    else
      inherited;
    end;
  end else begin
    inherited;
  end;
end;


Все здорово , но нажатие кнопок ALt+буква вызывает звук
(как при открытии message box-a)

С Ctrl все нормально.

В чем причина ? Не знаю даже в какую сторону думать.

Заранее спасибо.

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


Эксперт
***


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

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



а ты понажимай с альтом буковки в каком-нибудь другом приложении smile хоть в IExplorer-е... 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Snowy
Дата 26.5.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Это значит, что у тебя есть главное меню, в котором нет акселератора, соответствующего нажимаемой букве.
Поэтому воспроизводится стандартный звук Windows. 
PM MAIL   Вверх
Romikgy
Дата 26.5.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Код

procedure TMyWin.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (ssCtrl in Shift) or (ssAlt in Shift) then begin
    case Key of
      65 : // 'A' call some proc;
      67 : // 'C' call some proc;
      69 : // 'E' call some proc;
    else
  
    end;
 
 end;
end;
 


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

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


Эксперт
***


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

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



Цитата(Snowy @  26.5.2006,  14:27 Найти цитируемый пост)
Это значит, что у тебя есть главное меню, в котором нет акселератора, соответствующего нажимаемой букве.
Поэтому воспроизводится стандартный звук Windows.  

угу
Gershkovich
бынды лутше не так раздавать 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Gershkovich
Дата 26.5.2006, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Понятно. 

Правда остались вопросы:

1. Непонятно откуда у меня главное меню ?
Наверно Delphi по умолчанию как-то его встраивает в форму  ?
Где его найти и убить ?

2. Таки  inherited  можно не вставлять ?


Заранее спасибо.

Rennigth
Что такое бынды и как их лутше раздавать?
Я не силен в жаргоне. Наверно ты имеешь в виду case ?
 
PM MAIL   Вверх
Romikgy
Дата 26.5.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Gershkovich @  26.5.2006,  14:55 Найти цитируемый пост)
 Непонятно откуда у меня главное меню ?

при чем здесь главная форма?

Цитата(Gershkovich @  26.5.2006,  14:55 Найти цитируемый пост)
 Таки  inherited  можно не вставлять ?

имхо в данном случае он не нужен 


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

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


Эксперт
***


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

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



Цитата(Gershkovich @  26.5.2006,  15:55 Найти цитируемый пост)
Что такое бынды и как их лутше раздавать?
Я не силен в жаргоне. Наверно ты имеешь в виду case ?

smile ну если своими словами:
Bind (с анг. связать), связывание определенной клавиши или комбинации клавишь с какими-то действиями программы.

Добавлено @ 16:14 
Цитата(Rennigth @  26.5.2006,  14:32 Найти цитируемый пост)
бынды
 
бинды... это я описался smile
 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Gershkovich
Дата 26.5.2006, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Rennigth,  когда ты говоришь что бинды можно
по другому сделать, ты имеешь в виду стандартный компонент
"hot-keys" ? который на панели компонентов ?

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


Эксперт
***


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

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



ну вариантов довольно много можно придумать... 
в принципе можно конечно и как ты сделал, а можно взять TActionList(довольно удобная штука).
У тебя же наверника есть возможноть и мышкой выполнять какие-то действия... так вот можно привязать кнопки к ActionList и назначить HotKey-и. Также можно будет легко управля Enable/Disable(Visible/notVisible) кнопок и т.д Вообщем советую... smile 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Gershkovich
Дата 26.5.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Про TActionList я и не подумал...

Так наверно идеологически правильней будет.

Спасибо.

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

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

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

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

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


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

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


 




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


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

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