Para que no parpadee deberias usar lo que seria "double buffering" pero en una Form.
Deberias tener un TBitmap con el tamaño de toda la Form.
var
Buffer: TBitmap;
begin
Buffer := TBitMap.Create;
Buffer.Width := Form1.Width;
Buffer.Height := Form1.Height;
end;
Luego, por cada ciclo del timer:
//borrar el buffer
Buffer.Canvas.FillRect(Rect(0,0, Buffer.Width, Buffer.Height));
//dibujar la pelota en el canvas del buffer
Buffer.Canvas.Draw(X,Y, Pelota);
//volcar el buffer sobre la la Form comenzando en (0,0)
//se puede comenzar en otra posicion
Form1.Canvas.Draw(0,0, Buffer);
Si lo que etabas haciendo es mover un TPicture cambiando (X,Y), y tenes varias Botones, Edits y otras cosas en la forma, podrias probar con hacer el buffer del tamaño minimo necesario para que la imagen que se mueve quepe en el y el resto sigue siendo igual. (no te olvides de liberar el buffer: Buffer.Free).