Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Реакция кнопки по enter


Автор: IvanVL 31.10.2005, 10:15
Как сделать так чтобы по enter кнопка вдавливалась и возвращалась как при нажатии мышью, а то если просто свойство Defaul поставить в True, то визуально с ней ничего не происходит, хотя процедура выполняется.

Автор: _hunter 31.10.2005, 12:55
убери Default и по OnKeyDown опускай ее а по OnKeyUp поднимай

Автор: IvanVL 2.11.2005, 02:47
Цитата(_hunter @ 31.10.2005, 12:55)
убери Default и по OnKeyDown опускай ее а по OnKeyUp поднимай

Может я что-то не понял, но после того как я сделал как сказал _hunter работает только процедура KeyUp, для enter, для остальных клавиш обе процедуры.

Автор: Alexeis 2.11.2005, 10:12
У кнопки реально OnKeyDown для Enter не вызывается
Надо перехватить событие WM_KEYDOWN

Автор: IvanVL 3.11.2005, 11:23
Цитата(alexeis1 @ 2.11.2005, 10:12)
У кнопки реально OnKeyDown для Enter не вызывается
Надо перехватить событие WM_KEYDOWN

А как это делать smile

Автор: Alexeis 3.11.2005, 11:52
Нужно создать наследника Tbutton скажем

Код

TMybutton = class(Tbutton)
public
  procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;


.....

procedure TMybutton.WMKeyDown(var Message: TWMKeyDown);
Begin
   if message.CharCode = VK_RETURN
   then
     ....
   else
     inherited;
end; 


Это прехват события WM_KEYDOWN.

Автор: Rrader 5.11.2005, 05:58
А чтобы "утопить" кнопку:
Код

Button1.Perform(BM_SETSTATE, 1, 0);

Отпустить:
Код

Button1.Perform(BM_SETSTATE, 0, 0);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)