{
My forms always look bad when displayed at a screen resolution different
from the one it was designed at. I found some code in Lloyd's help file,
which made it look very easy. The only problem is that it won't compile for
me. The code is as follows:
------------------------------------------------ }
implementation
const
ScreenWidth: LongInt = 800; {I designed my form in 800x600 mode.}
ScreenHeight: LongInt = 600;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
i, OldFormWidth: integer;
begin
scaled := true;
if (screen.width <> ScreenWidth) then begin
OldFormWidth := width;
height := longint(height) * longint(screen.height) DIV ScreenHeight;
width := longint(width) * longint(screen.width) DIV ScreenWidth;
scaleBy(screen.width, ScreenWidth);
font.size := (Width DIV OldFormWidth) * font.size;
end;
end;
Then, you will want to have something that checks to see that the font
sizes are OK. Before you change the font's size, you would need to ensure
the object actually has a font property by checking the RTTI. This can be
done as follows:
USES TypInfo; {Add this to your USES statement.}
var
i: integer;
begin
for i := componentCount - 1 downto 0 do
with components[i] do
begin
if GetPropInfo(ClassInfo, 'font') <> nil then
font.size := (NewFormWidth DIV OldFormWidth) * font.size;
end;
end;
------------------------------------------------
The first problem is that the TypeInfo unit does not seem to exist. The
other problem is that the GetPropInfo() function is undefined. Apparently
it is in the TypeInfo unit. What am I missing? Has the TypeInfo class been
removed from Delphi in version 2? Is there another way to find out if a
component has a Font property? Please help!