Hab mir Deinen Code jetzt mal zu Herzen genommen *g*.
Folgendermaßen hab ich Deinen Timer-Code verändert:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if (Keys[VK_down]) AND (Shape1.Top+Shape1.Height<=ClientHeight) then Shape1.Top:=Shape1.Top+5; if (Keys[vk_left]) AND (Shape1.Left>=0) then Shape1.Left:=Shape1.left-5; if (Keys[vk_right]) AND (Shape1.Left+Shape1.Width<=ClientWidth)then Shape1.Left:=Shape1.left+5; if (Keys[vk_up]) AND (Shape1.Top>=0) then Shape1.Top:=Shape1.top-5; |
Das funktioniert so auch, nur ist das Problem mit den 5er-Schritten, dass es dann sein kann, dass er dann unten und rechts Scrollbalken anzeigt, weils über den Rand hinausgeht, die solltest Du ausschalten, oder eben mit 1er-Schritten arbeiten und das Timer-Intervall verkürzen.
Dein Array ist auch etwas groß, aber darüber kann ich mich jetzt im Moment nicht mehr auslassen

. So wie's jetzt da steht funktionierts auf jeden Fall.
Gruß