TTreePage.Refresh has a problem when using the UsePrinter flag. When UsePrinter is True the GetWidth and GetHeight works correctly to return the printer values. However, in Refresh the FWidth and FHeight are used and the UsePrinter flag has no effect. Thus the default values at creation are used and paging is incorrect for the most part.
My work around is the set UsePrinter true. Retrieve the printer values and then set the Width and Height. If page orientation changes I have to make sure it is done again.