Please, try to be as specific as you can to tell us what you want to achieve.
What I would like to achieve is this:
For example, I draw about ten polygons (at most they could be about fifty, no more), which can all have equal or different numbers of vertices, but also different properties. Name and color are present in all of them but some may have, for example, type of cursor when the mouse passes over it. So TFigure1, TFigure2 and TFigure3 are different records (sorry if I overlooked this in my post but I did it for simplicity).
Then I save the properties of the figures in a stream.
So I close the program, reopen it and I would like to load the saved work, that is to find all the figures in their original position with all their saved data.
With your suggestions I managed to save correctly in the stream and when I reload it the data are all present.
But at this point it's all in the stream and I should overwrite my TContainer with the contents of the stream.
For example, I draw 5 polygons, save them, delete them, draw others but I don't like them, I would like to load the ones I just saved.
And please, please, please don't name variables like TContainer
Actually TContainer is not in fact a variable but it is the declared type. Then in the variables I have FContainer: TContainer;
Where in the code did you see this? So maybe I'm doing something wrong.