为什么不能用,我没有反应(我想用方向键控件panel的位置)(50分)

  • 主题发起人 主题发起人 laohe
  • 开始时间 开始时间
L

laohe

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key='Key_Left' then
panel1.Left:=panel1.Left+ 2
else if Key='Key_Right' then
panel1.Left:=panel1.Left- 2
else if Key='Key_Up' then
panel1.Top:=panel1.Top- 2
else if Key='Key_Down' then
panel1.Top:=panel1.Top+ 2 ;
end;
 
form1.keypreview := true;
 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin


if Key=vk_Left then begin
Key := 0;
panel1.Left:=panel1.Left- 2;
end else if Key=vk_Right then begin
Key := 0;
panel1.Left:=panel1.Left+ 2;
end else if Key=vk_Up then begin
Key := 0;
panel1.Top:=panel1.Top- 2;
end else if Key=vk_Down then begin
Key := 0;
panel1.Top:=panel1.Top+ 2 ;
end;

end;

搞定了
 
不错,不过个人认为用case结构可能会更加清晰明了。
case key of
vk_Left: begin
Key := 0;
panel1.Left:=panel1.Left- 2;
end;
vk_Right: begin
Key := 0;
panel1.Left:=panel1.Left+ 2;
end;
vk_Up: begin
Key := 0;
panel1.Top:=panel1.Top- 2;
end;
vk_Down: begin
Key := 0;
panel1.Top:=panel1.Top+ 2;
end;
end;
 
OldKey := Key;
Key := 0;
case Oldkey of
vk_Left: panel1.Left:=panel1.Left- 2;
vk_Right: panel1.Left:=panel1.Left+ 2;
vk_Up: panel1.Top:=panel1.Top- 2;
vk_Down: panel1.Top:=panel1.Top+ 2;
else
key :=oldkey;
end;
 
感谢两位优化了代码

一人25分,不多还请不要介意
 

Similar threads

后退
顶部