如何使用键按钮移动形状:在delphi中向上,向左,向下,向右移动

时间:2013-04-16 18:41:59

标签: delphi key shape

首先,如果标题不清楚,我想提前道歉,所以我会解释一下。

我创建了一个形状,你可以通过在运行程序时移动鼠标来移动它:

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
shape1.Left:=x;
shape1.Top:=y;
end;

end.

事情是,我不喜欢用户必须使用他的鼠标来移动形状,所以我想通过按下UP,DOWN,LEFT,RIGHT的键按钮来完成它。键盘。

由于

2 个答案:

答案 0 :(得分:7)

只需在表单中添加OnKeyDown事件处理程序:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_UP:
      Shape1.Top := Shape1.Top - 10;
    VK_DOWN:
      Shape1.Top := Shape1.Top + 10;
    VK_LEFT:
      Shape1.Left := Shape1.Left - 10;
    VK_RIGHT:
      Shape1.Left := Shape1.Left + 10;
  end;
end;

你甚至可能

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Delta: integer;
begin
  if ssShift in Shift then
    Delta := 1
  else
    Delta := 10;
  case Key of
    VK_UP:
      Shape1.Top := Shape1.Top - Delta;
    VK_DOWN:
      Shape1.Top := Shape1.Top + Delta;
    VK_LEFT:
      Shape1.Left := Shape1.Left - Delta;
    VK_RIGHT:
      Shape1.Left := Shape1.Left + Delta;
  end;
end;

这样用户可以通过按住Shift键微调位置(以像素精度)。

答案 1 :(得分:1)

好的,我希望我能做到这一点,因为我必须做Delphi一段时间,但是: - Form对象具有您可以做出反应的KeyDown或KeyPressed事件。 - AFAIK表格上也有一个“KeyPreview”属性,必须设置为true才能使其生效。