Here is a screencap with LCL and fpGUI side-by-side
And here is a quick example I created for you.
Each time I started X11 with 'startx -- dpi xyz' where xyz is the dpi I want to test. My system defaults to 107 dpi, though my monitor is actually higher than that.
http://opensoft.homeip.net/~graemeg/project2-80dpi.pnghttp://opensoft.homeip.net/~graemeg/project2-96dpi.pnghttp://opensoft.homeip.net/~graemeg/project2-107dpi.pnghttp://opensoft.homeip.net/~graemeg/project2-120dpi.pnghttp://opensoft.homeip.net/~graemeg/project2-140dpi.pngTo get the sample project to scale fully (not just font, but widgets and the form itself), I had to include 2 lines of code in the OnShow event handler. And if I have a multi-form application (like our commercial apps which have around 150 forms), then I simply introduce these two lines of code in a descendant form - and not in each form.
Here are the two lines of code:
if fpgApplication.Screen_dpi <> cDPI then
ScaleDPI(self, cDPI); // cDPI is the dpi you designed the form at
As you can see from the code above, fpGUI has built-in ability to return the screen DPI value for you. The ScaleDPI() function is defined in a separate unit shared by our applications, which I'll merge into fpGUI - so as to finally get you off my case.
Like I said before: Clearly fpGUI is not for you, so simply stop testing or using it. I'm certainly not forcing you to use fpGUI.
ps:
I'm also working on a Layout Manager (a port of the Java layout manager called MiGLayout) - this completely make the "supposed" DPI issue irrelevant, and probably also make the UI Designer obsolete (at least for me). MiGLayout allows you to to define sizes in any style you want. points, cm, mm, inches, pixels etc. Please take a look at the Swing demo if you want to learn more.
http://www.miglayout.com/