I came across TFormSize which is nice, but some other things on a form like a TDBGrid needs all fields order, width, sort order saved, a TListView may need to save same type of things as well as which view mode it is in. Do you have anything that can handle those as well?
Also noticed that it saves with WM_DESTROY but once it returns from WM_ENDSESSION the WM_DESTROY may never occur.
At this moment we do not have a specific component for this but it is good idea.
Note though that our TAdvStringGrid, TDBAdvGrid have a method .SaveColSizes, .SaveColPositions that will persist column sizes/positions.
We have extended TFormSize with the event OnLoaded/OnSaved so that from these events, custom values can be persisted.