Содержание материала

 

Code:

unit glSmallFontsDefence;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

 

type

TglSmallFontsDefence = class(TComponent)

private

   procedure UpdateFonts(Control: TWinControl);

   { Private declarations }

protected

   procedure Loaded; override;

public

   constructor Create(AOwner: TComponent); override;

published

   { Published declarations }

end;

 

procedure Register;

 

implementation

 

function IsSmallFonts: boolean;{Значение функции TRUE если мелкий шрифт}

var DC: HDC;

begin

DC:=GetDC(0);

Result:=(GetDeviceCaps(DC, LOGPIXELSX) = 96);

{ В случае крупного шрифта будет 120}

ReleaseDC(0, DC);

end;

 

procedure Register;

begin

RegisterComponents('Gl Components', [TglSmallFontsDefence]);

end;

 

{ TglSmallFontsDefence }

 

constructor TglSmallFontsDefence.Create(AOwner: TComponent);

begin

inherited;

if (Owner is TForm) then (Owner as TForm).Scaled := false;

end;

 

procedure TglSmallFontsDefence.Loaded;

begin

inherited;

if (Owner is TForm) then (Owner as TForm).Scaled := false;

if csDesigning in ComponentState then

begin

   if not IsSmallFonts then

     ShowMessage('Проектирование приложения в режиме крупных' +

                  ' шрифтов недопустимо!'#13#10+

                 'Компонент TglSmallFontsDefence отказывается' +

                 ' работать в таких условиях.');

end else

   UpdateFonts((Owner as TForm));

end;

 

procedure TglSmallFontsDefence.UpdateFonts(Control: TWinControl);

var

i: integer;

procedure UpdateFont(Font: TFont);

begin

   if CompareText(Font.Name, 'MS Sans Serif') <> 0 then exit;

   Font.Name := 'Arial';

end;

begin

if IsSmallFonts then exit;

UpdateFont(TShowFont(Control).Font);

with Control do

for i:=0 to ControlCount-1 do

begin

   UpdateFont(TShowFont(Controls[i]).Font);

   if Controls[i] is TWinControl then UpdateFonts(Controls[i] as TWinControl);

end;

 

end;

 

 

end.

 
 
Вы можете добавить свойство Options типа перечисления, в котором задать опции исключения некоторых классов компонентов. К примеру, можно добавить возможность отключать замену шрифтов для потомков TCustomGrid. Очень часто пользователи используют режим крупных шрифтов, чтобы улучшить читаемость таблиц данных (TDBGrid). Тогда не надо лишать их этой возможности.
 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить