2013-04-16 86 views
-2

首先,如果標題不明確,我想提前道歉,所以我會解釋它。如何使用按鍵移動形狀:向上,向左,向下,向右移動到delphi

我創建了一個形狀,它可以移動,通過移動鼠標,當你運行程序:

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

end. 

的事情是,我不喜歡它的用戶有使用他的鼠標移動形狀,所以我想通過按下鍵盤上的按鍵UP,DOWN,LEFT,RIGHT來完成。

感謝

回答

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鍵。

+0

第一個不工作,它說:不兼容的類型:整數和程序無類型參數 – user2276109

+0

@ user2276109:我知道它在工作。 –

+0

我告訴過你它對我說的什麼 – user2276109

1

好的,我希望我能理解,因爲過了一段時間我不得不做Delphi,但是: - Form對象有一個KeyDown或KeyPressed事件,您可以對此做出反應。 - AFAIK窗體上還有一個「KeyPreview」屬性,必須將其設置爲true以使其起作用。

相關問題