Вернуться   Компьютерный форум > Компьютеры > Программы > Программирование
 
 
Опции темы
Старый 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 на форме в бесконечном цикле и ещё кучу всего …. может есть какое то сообщение для нажатие виртуальных клавиш? научите:)
max_popov вне форума  
Ads
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 01:51. Часовой пояс GMT +4. Powered by vBulletin® Version 5.8.9
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.