![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
На форме есть 2 Shape в виде круга. Я прописал их движение на кнопки
Первый передвигается на стрелочки, второй на NUMPAD'e. Проблема в том, что они одновременно двигаться не хотят. Писал через оператор Case, if и задавал горячие клавиши и всё равно двигаются только по очереди. Код:
case Key of
VK_UP: begin
Gamer1.Top := Gamer1.Top -12;
Exit;
end;
VK_LEFT: begin
Gamer1.Left := Gamer1.Left-12;
Exit;
end;
VK_Right: begin
Gamer1.Left := Gamer1.Left+12;
Exit;
end;
VK_DOWN: begin
Gamer1.Top := Gamer1.Top +12;
Exit;
end;
//end;
//case Key of
{VK_NUMPAD8: begin
Gamer2.Top := Gamer2.Top -12;
Exit;
end;
VK_NUMPAD4: begin
Gamer2.Left := Gamer2.Left -12;
Exit;
end;
VK_NUMPAD6: begin
Gamer2.Left := Gamer2.Left +12;
Exit;
end;
VK_NUMPAD5: begin
Gamer2.Top := Gamer2.Top +12;
Exit;
end;
end;}примерный код. Если объединять в 1 Case то так же двигаются по 1. |
|
#2
|
||||
|
||||
|
А NumLock зажечь пробовали?
без горящего светодиода коды для основных стрелок и на цифровой части совпадают. Но это тоже не поможет, будет двигаться тот шейп, кого двинули первым, нужно выносить перемещение из обработчика жима на таймер, а из него следить за состоянием клавиш посредством вызова GetKeyboardState для TKeyboardState |
|
#3
|
|||
|
|||
|
Вешай поток и в нем проверяй через GetKeyState.
|
|
#4
|
||||
|
||||
|
Это не совсем так. Если вы будете быстро нажимать и отпускать клавиши, то все будет работать как задумано, а вот если вы зажмете одну клавишу и не отпуская ее нажмете вторую это уже будет не два разных нажатия а одно сложное и обрабатывать его тоже надо соответственно, а для этого есть функция GetAsyncKeyState(). Применительно к вашим шейпам делаем проверку на нажатие клавиши А:
Код:
if GetAsyncKeyState(65) < 0 then Shape2.Left := Shape2.Left - 1; |
|
#5
|
||||
|
||||
|
Да на таймере всёж легче выполнить, вот пример под D7
|