As of October, 2016, Embarcadero is offering a free release
of Delphi (Delphi
10.1 Berlin Starter Edition ). There
are a few restrictions, but it is a welcome step toward making
more programmers aware of the joys of Delphi. They do say
"Offer may be withdrawn at any time", so don't delay if you want
to check it out. Please use the
link to let me know if the link stops working.
Support DFF - Shop
If you shop at Amazon anyway, consider using
this link. We receive a few cents from each purchase.
Support DFF - Donate
If you benefit from the website, in terms of
knowledge, entertainment value, or something otherwise useful,
consider making a donation via PayPal to help defray the
costs. (No PayPal account necessary to donate via credit
card.) Transaction is secure.
e-mail with your comments about this program (or anything else).
A recent (September 2009) purchase of a 17" laptop with a high resolution
(1920x1200) screen uncovered problems introduced by screen scaling which I had
not previously considered.
Vista and XP have a user option to adjust the assumed dots per inch (DPI)
screen resolution. Without other knowledge, the system assumes 96 DPI.
If you use a screen with higher resolution, text and other graphics elements
will display with 96 DPI scaling and show smaller than expected. In my
case, too small for easy reading with these old eyes.
My laptop screen is about 14.5" x 9" which works out to 132 DPI. I set
the new resolution to 150% which is about 144 DPI which is very readable and
still leaves more screen real estate than on my "old" 13" laptop.
Now to the part that affects Delphi and many other 3rd party apps when screen
image elements increase by 150% over their designed sizes.
- Every TForm has an AutoScroll property which defaults to
True and an AutoSize property which defaults to False. Most
apps will therefore appear with the designed pixel size and scroll bars
added to adjust for the scaling that has enlarged text and most contained
controls. Swapping these values (so that AutoScroll=false and
AutoSize=true) resolves many of the scaling problems.
- If the form has many controls placed directly on it, AutoSize will
resize the form just enough to enclose them all, but leave no margins
around those touching the edge. Controls which contain other controls
and have their Alignment property set to alClient work
well. The best way I've found to fix the "no margin" problem is to cut
the existing controls, then add a TBevel aligned as alClient
and paste the controls back into it. You'll have to temporarily set
the form's AutoSize to false to expand the form and the TBvel
to leave margin space around the other controls.
- The AutoSize property is defined in TControl but it is not
exposed in every descendent. So while a TLabel will
automatically expand to show it's caption text, a TCheckBox
will not. In those cases I have simply expanded the control to fit the
larger text and assume that smaller text will still display fully.
I have converted a couple of programs (Brute Force
and WordStuff 2 so far) and don't plan on any
massive conversion effort to handle DPI scaling. Changes will be
incorporated as other updates are posted. If you use DPI scaling and run
across a DFF program that needs fixing,
let me know.
|Original: September 18, 2009
October 23, 2016