Показать сообщение отдельно
  #1  
Старый 23.10.2010, 09:45
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию событие OnKeyDown

Доброе время суток, господа. Создаю форму кидаю эдиты.....суть такова: надо чтобы в эдиты записывались комбинации клавиш нажатые в поле......думал думал.....обработал событие OnKeyDown...вот код:
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
 var s: string;
begin
  if (not (Sender is TLabeledEdit)) or ((Sender is TEdit) and
    ((Sender as TEdit).Name = TmpEdit.Name)) then
  begin
   TmpEdit.Text:= '';
   exit;
  end;

 s:= '';
 s:= ShortCutToText(ShortCut(Key, Shift));
 if (Sender as TLabeledEdit).Text = s then exit;
 ShortText:= s;
 (Sender as TLabeledEdit).Text:= s;
end;
Не обращайте внимание что у меня FormKeyDown ее я назначил общую для всех эдитов. Ну вот вроде бы работает, но не совсем так как надо, а именно: при нажатии на Ctrl в эдит почему-то выводиться сочетание Ctrl+Ctrl..... почему????? ведь клавишу одну нажал.......
и вообще почему-то не совсем корректно выдает сочетания клавиш......почему-то некоторые клавиши дублирует в названии...мож кто поможет.....а еще как мне запретить вводи символов в эдит.....чтобы даже не отображался при вводе......хочу чтоб там были тока сочетания клавиш. ShortCutToText(ShortCut(Key, Shift)) - эти процы я взял с Menu.pas, который есть в самой дельфе
__________________
APPLICATION.TERMINATOR
Ответить с цитированием