Top.Mail.Ru
Ответы

ПОМОГИТЕ Плиз с делфи!

Почему код в делфи не работает?

procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RIGHT then
image1.Left:=image1.Left+3;
end;

исправьте как правильно, я хотел сделать типа при задержки на стрелку вправо изображение двигается постоянно на 3 пиксела вправо

По дате
По рейтингу
Аватар пользователя
14лет

1. Свойство KeyPreview какое имеет значение? true или false?
2. Попробуй вместо VK_RIGHT $27
3. Для чего кнопка на форме- непонятно (да и зачем она нужна вообще) , не проще ли использовать событие OnKeyDown.
4. А чем обработка нажатия правой кнопки мыши не нравится?
Пример:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Hi(GetKeyState(VK_RBUTTON)) > 0 then
image1.Left:=image1.Left+Image1.Width;
end;

Аватар пользователя
Ученик
14лет

она бутет срабатывать только один раз при нажатии на кнопку

Аватар пользователя
Гений
14лет

А зачем вам какая-то кнопка? Обрабатывайте событие в форме.

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RIGHT then image1.Left:=image1.Left+3;
end;

Аватар пользователя
Гуру
14лет

потому что это событие сработает только один раз - когда ты нажмешь мышку. .

альтернатива. .
по KeyDown ты запускаешь таймер, который будет делать то, что тебе нужно, сдвигать на 3 пиксела. .

по KeyUp ты отрубаешь таймер и оно перестает сдвиагться. .

частоту таймера выставишь нужную и все норм будет