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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2011, 17:19   #1
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию Нажатие клавиш не влияет друг на друга

Как сделать так, когда я жму в перед, а потом еще и влево чтобы shape двигался и вперед и влево?
Код:
if key=VK_UP then Car.Top:=Car.Top-2;
if key=VK_LEFT then Car.Left:=Car.Left-2;
При таком коде можно ехать только в одном направлении...
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 17.03.2011, 17:32   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Принцип такой. Сначала определим нажата ли клавиша VK_UP
Код:
function VK_UPDown: Boolean;
var State: TKeyboardState;
begin
  GetKeyboardState(State);
  Result := ((State[VK_UP] and 128) <> 0);
end;
Если нажата обработаем нажатие VK_LEFT
Код:
begin
  if VK_UPDown and (key = VK_LEFT) then
  begin
    Car.Top := Car.Top - 2;
    Car.Left := Car.Left - 2;
  end;
end;
С остальным, думаю, разберешься.
_SERGEYX_ вне форума Ответить с цитированием
Старый 17.03.2011, 17:33   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GetKeyState и таймер
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.03.2011, 17:41   #4
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Цитата:
Если нажата
А как это узнать?
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 17.03.2011, 17:46   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Я же написал функцию
Код:
function VK_UPDown: Boolean;
var State: TKeyboardState;
begin
  GetKeyboardState(State);
  Result := ((State[VK_UP] and 128) <> 0);
end;
Замени в ней VK_UP на любую клавишу и узнаешь ее состояние.
_SERGEYX_ вне форума Ответить с цитированием
Старый 17.03.2011, 17:51   #6
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Не так вы меня поняли
Код:
begin
  if VK_UPDown and (key = VK_LEFT) then
  begin
    Car.Top := Car.Top - 2;
    Car.Left := Car.Left - 2;
  end;
end;
Куда это писать?
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 17.03.2011, 18:22   #7
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

_SERGEYX_, разобрался, спасибо
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Старый 17.03.2011, 19:27   #8
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

если комбинации будет много получица путаница с кодом, вот почитаи о том что говорил Пепел Феникса
http://www.z-oleg.com/delphi/hardw2.htm
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 17.03.2011, 19:34   #9
misher
Участник клуба
 
Аватар для misher
 
Регистрация: 26.05.2010
Сообщений: 1,648
По умолчанию

Цитата:
если комбинации будет много получица путаница с кодом
Нормально все, кода не так уж и много... я читал про GetKeyState решил, что сейчас ее применять не буду, а потом как сделаю и посмотрю, что получится, тогда и изменю.
This world will never be What I expected (c)
misher вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Комбо не видят друг друга Sergey112233 Microsoft Office Access 0 06.02.2011 20:15
2 bpl ссылающиеся друг на друга. eldalex Общие вопросы Delphi 2 01.11.2010 08:21
Строчки налезают друг на друга Lukker Microsoft Office Word 4 27.02.2010 07:38
Ссылка в ячейках друг на друга ded- Microsoft Office Excel 3 10.04.2009 15:42
Наложения изображения друг на друга rudakop HTML и CSS 1 16.09.2008 03:03