unit uDisplayUtils; interface uses Windows, SysUtils, Variants, Classes, Graphics, Controls, Forms, uGUIBase, uCustomEditor; procedure ScaleFormFont(AForm : TForm); implementation uses TypInfo; procedure SetFontProperties(Control: TControl; Name: TFontName; Size: Integer; Styles: TFontStyles); // Set font properties var Index: Integer; Font: TFont; AnObject: TObject; ChildControl: TControl; begin // Set font properties try AnObject := GetObjectProp(Control, 'Font', nil); if AnObject is TFont then begin // Set properties Font := TFont(AnObject); Font.Name := Name; Font.Size := Size; Font.Style := Styles; end; except // ignorar las excepciones EPropertyError por no encontrar la propiedad end; // Set child font properties if Control is TWinControl then begin // Set for Index := 0 to TWinControl(Control).ControlCount - 1 do begin // Child control ChildControl := TWinControl(Control).Controls[Index]; // Set font properties try SetFontProperties(ChildControl, Name, Size, Styles); except // ignorar las excepciones EPropertyError por no encontrar la propiedad end; end; end; end; procedure ScaleFormFont(AForm : TForm); begin AForm.ScaleBy(Screen.PixelsPerInch, 96); SetFontProperties(AForm, Screen.IconFont.Name, Screen.IconFont.Size, Screen.IconFont.Style); end; end.