Yes your code works, I've just tested it. As long as it is working correctly now, you do not need to think what is the 'better' way to code it.
Here some advices, which I learned from doing programming for a long period:
1. Don't think about optimization at the beginning of writing a program or module
2. Think first to write to code that works
3. After it works as what you want, make the code beautiful (indentation, format, etc)
4. Testing, goto step 2 if you find any bug
5. Optimize the code and testing again, goto step 2 if you find any bug
Each programmer may write the same program using different ways. So there is no 'better' way. As long as the code is bug free and no security issue, it is a piece of good code.
Now, lets back to the snake story. I think the image below will give the idea what you should do next. You can use an array or a TList or other similar thing to store the snake body information. Using TList is easier, you can type less code. If you use array, then you have to write some code to handle the snake body growing in length.
In my picture below, the first item in the array is the snake's head. If you like, you can use the last item in the array as the snake's head.