
Zitat von
aurikel_Max:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
...
VK_UP: begin
IF not Shape1.top -5 = panel1.top then
shape1.Top := shape1.Top - 5;
end;
...
end;
end;
Statt "IF not Shape1.top -5 = panel1.top then" würde ich
if Shape1.top -5 < 0 then
benutzen.
Erstmal ist nämlich die Position des Panels für das, was darin ist, unwichtig (0 ist ganz oben; bei der Form wäre es genauso). Ausserdem könnte die Anfangsposition des Shapes auch auf einer Y-Position sein, die nicht durch 5 teilbar ist und dann würde es wieder durch die Wand gehen, weil nicht genau 0 erreicht wird.
Für rechts und unten verwendest du dann panel1.width, panel1.height (Tipp: Du musst die Ausmaße des Shapes mit einbeziehen

)