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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2009, 13:36   #1
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию Удержание клавиши

Всем привет, у меня вот такой вопрос, как сделать так чтобы при удерживание какой то определенной клавиши передвигался по форме button, а если клавишу отпускают то button останавливается. Кто знает как это сделать, помогите пожалуйста.
BuT@JL вне форума Ответить с цитированием
Старый 22.07.2009, 13:46   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

событие OnKeyPress или OnKeyDown (не помню точно) повторяются при удержании кнопки(частота зависит от настроек Windows)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.07.2009, 13:47   #3
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Код:
Button1.TabStop := false;
И, как вариант. Если кнопку не надо выделять нажатием Tab
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_UP then
    Button1.Top := Button1.Top - 4;
end;
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
событие OnKeyPress или OnKeyDown (не помню точно) повторяются при удержании кнопки(частота зависит от настроек Windows)
Если писать по кнопке,то не прокатит. Почему не знаю. Только что пробовал
psycho-coder вне форума Ответить с цитированием
Старый 22.07.2009, 13:52   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Если писать по кнопке,то не прокатит.
Можно кинуть на форму TApplicationEvents и прописать такое:
Код:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
 if msg.message=WM_KEYDOWN then
 Button1.Left:=Button1.Left+1;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.07.2009, 14:04   #5
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию

спасибо за помощь... но я не много не верно задал вопрос, то есть мне нужно при удерживании клавиши он шел например влево, а если я отпускаю клавишу, то он идет например вправо
BuT@JL вне форума Ответить с цитированием
Старый 22.07.2009, 14:05   #6
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Нетривиальный способ: в обработчике нажатия клавиши переменной, например, _Down присвоить true, а в обработчике отжатия клавиши _Down присвоить false, и не забыв применить таймер, в его процедуре срабатывания "следить" за _Down - если она true, то двигать кнопку как нужно и если false перестать ее двигать.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 22.07.2009, 14:09   #7
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию

Kotofff с помощью таймера я знаю как сделать, а мне таймер нельзя использовать, но все равно спасибо за помощь
BuT@JL вне форума Ответить с цитированием
Старый 22.07.2009, 15:18   #8
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Если таймер нельзя, то можно как Stilet предложил. Или в отдельном потоке, но это (ИМХО) извращение
psycho-coder вне форума Ответить с цитированием
Старый 22.07.2009, 17:10   #9
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию

Вооо, разобрался, спасибо большое
BuT@JL вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Залипание клавиши.... Altera Общие вопросы Delphi 2 05.11.2008 00:24
Горячие клавиши Altera Общие вопросы Delphi 5 13.09.2008 21:27
Нажатие клавиши format Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 05.05.2008 15:25
Клавиши RealSHELS Общие вопросы Delphi 3 27.03.2008 22:32
Клавиши xakkkkker Общие вопросы Delphi 1 23.03.2008 10:45