Hi,
herzlich willkommen!
Ohne den Anhang gesehen zu haben, ist mir eines aufgefallen. Du setzt die Katze und die Maus im Grenzfall genau an die Außengrenze des Formulars. Es müsste eher so aussehen:
Delphi-Quellcode:
If Maus.Left > ClientWidth then
Maus.Left := ClientWidth - Maus.Width;
Edit: Aber das in einem Timer zu prüfen ist nichts. Führe diese Abfragen beispielsweise im "OnKeyPress" aus und reagiere darauf. So kannst du direkt feststellen, ob du die zwei Objekte neu platzieren kannst und wenn nicht, dann machst du es auch nicht.