Здравствуйте, no_such_nick, Вы писали:
[skiped]
Сказать что код ужасный значит ничего не сказать...


Проблема в следующем:
ты завёл две переменные:
ball:TBall;
point:Tpoint;
и они у тебя ни как не связаны т.е. ты меняешь координаты у point, а выводишь на канву ball т.к. это два совершенно разных объекта то изменение состояния объекта point не влияет на объект ball
Для решения твоей задачи тебе нужен только(!) один объект
ball:TBall у этого объекта нужно менять координаты и выводить его на канву. Чтобы сделать доступными в нём твои методы из TPoint которые отвечают за перемещение объекта помести их после модификатора доступ public.
[skiped]
public
property x: integer read xread write xwrite;
property y: integer read yread write ywrite;
[skiped]
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"