21.08.2007, 15:21 | #1 (ссылка) |
Новичок
Регистрация: 07.08.2007
Сообщений: 13
Репутация: 0
|
Кнопочки...
необходимо перехватывать клавиши нажатые в окне… раньше я делал это через TForm1.FormKeyPress но там не отлавливаются клавиши как shift, up, down, left, right, немного покопался и нашёл пример :
….. type TForm1 = class(TForm) procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); procedure AppIdle(Sender: TObject; var Done: Boolean); ….. var Form1: TForm1; PresedKey : char; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnIdle := AppIdle; end; procedure TForm1.AppIdle(Sender: TObject; var Done: Boolean); label endd; begin PresedKey := #0; if GetAsyncKeyState(vk_up) <> 0 then begin Form1.Caption := 'up нажата !'; PresedKey := 'U'; goto endd; end; if GetAsyncKeyState(vk_left) <> 0 then begin Form1.Caption := 'left нажата !'; PresedKey := 'L'; goto endd; end; //там ещё много клавиш не весь список //… endd: Done := True; end; здесь использую GetAsyncKeyState, у меня вопрос можно ли где в более удачном месте разместить процедуру (AppIdle) а то что то смущает Application.OnIdle := AppIdle если у меня приложение будет перерисовывать bitmap на форме в бесконечном цикле и ещё кучу всего …. может есть какое то сообщение для нажатие виртуальных клавиш? научите:) |
Ads | |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|