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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2010, 10:51   #1
altcore
Пользователь
 
Регистрация: 31.03.2010
Сообщений: 38
По умолчанию В контрол "заносится" горячая клавиша

Есть форма, на которой курсор всегда установлен на каком-нибудь контроле типа TDBNumberEditEh. По горячей клавише NUM_ADD (+) вызывается формочка вставки нового документа. Но символ '+' успевает занестись в контрол. Пробовал все события на форме вроде OnKeyDown/Press/Up. Результат тот же. Как обойти?

add:

вопрос решился отказом от стандартных обработчиков:
Код:

Код:
...
private
  procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
...
const
  MyHotKey = ord(VK_ADD);

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
  MessageBeep(0);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterHotKey(Form1.Handle, MyHotKey, 0, MyHotKey);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnRegisterHotKey(Form1.Handle, MyHotKey);
end;
add2:

Но таким образом клавиша "+" не работает в других приложениях. Хотел выкрутиться повесив регистрацию/разрегистрацию на события onActivate/onDeactivate. Предполагалось, что при потере фокуса формой, клавиша будет нормально работать, но этого не произошло, что посоветуете?
altcore вне форума Ответить с цитированием
Старый 18.05.2010, 16:39   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

У этого TDBNumberEditEh есть onKeyDown?
Код:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
begin
    if (Key = VK_ADD) then Key = 0;
end;
пыщь
JTG вне форума Ответить с цитированием
Старый 21.05.2010, 10:31   #3
altcore
Пользователь
 
Регистрация: 31.03.2010
Сообщений: 38
По умолчанию

Событие есть, но это не решает проблему. Удалось выкрутиться так:

Код:
procedure TfmEditBase.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
...
  if (Key = VK_ADD) then begin
     Key := 0;
     clear := true;
     AddRec();
  end;
...
end;

procedure TfmEditBase.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if clear = true then begin
    Key := #0;
    clear := false;
  end;
end;
altcore вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В контрол "заносится" горячая клавиша altcore Компоненты Delphi 2 17.05.2010 11:30
Клавиша "enter " для определенных ячеек karud Microsoft Office Excel 1 02.05.2010 11:19
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Как с помощье ReadKey определить что нажата клавиша "Стрелка" Викдон Паскаль, Turbo Pascal, PascalABC.NET 5 05.02.2009 00:47