Windows Font Size variations


I've been exploring what mechanisms Delphi has to work with the fact that
Windows users can set the font size scale factor (small, large, custom %, etc).

I'm aware of the Scaled property in the TForm, but how exactly is this supposed
to be used?  Is there some overview documentation that discusses how to deal
with the font size variations?

I've looked at a couple of alternatives, both of which seem fairly
ugly, especially due to screen real estate requirements which have
caused us to resort to MS Sans Serif 8 point when in a 680x480 res
screen configured for small fonts.:

    1. When running in large fonts, attempt to override Windows scale factors
       by walking the object tree looking for font references, and adjusting
       them down to size, which unfortunately requires switching to a font
       that has a smaller than 8 point size available, since we are already
       using 8 and it's gotten too big when in large fonts.  This also has the
       effect of overriding the users preferences within our application.

    2. Set Scaled=False and attempt to scale and reposition all objects (again
       by walking the object tree) to compensate for large font settings,
       assuming that the screen is larger than 640x480 and rescaling the
       application to a larger size will fit the larger screen.

Both of these solutions are messy because it requires that every FormCreate
event call a function that will walk the form tree and understand every
component that might be present that contains a font property (case 1)
or a size or position property (case 2).  And this is a medium sized team
project that would need to make sure all developers conform to whatever
standards of component and sizing usage are ultimately developed.

It seems to me that there may be a third option, and that is to use whatever
Delphi capabilities for scaling are present for this purpose.  The problem is
finding the documentation on this.  Beyond the Scaled property on the Tform,
I've not found any other discussion of this sort of thing.  Where might it
be documented, or if it is not, does anyone know how Scaled (and any other
related capabilities) are intended to be used?

To some extent, a .exe built with forms with Scaled=True seems to
resize and reposition things reasonably, but not all components do this,
in particular, the String Grid seems that it does not rescale (though it
does seem to reposition).  Do I just use trial and error, adjusting whatever
parameters aren't adjusted automatically, or is there some definitive
documentation on how such things should be handled?

Keith Doyle