Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
Защита приложений от крупных шрифтов.Вы когда-нибудь проверяли как будет выглядеть написанная вами с
такой любовью программа с системе с крупными шрифтами? Согласитесь, это
неприглядное зрелище. Наползающие друг на друга метки и поля редактирования,
надписи, которые заканчиваются где то за пределами формы и т.п. После этого
появляется неконтролируемая неприязнь к пользователям, которые предпочитают
режим крупных шрифтов. Но это их право. И ваша проблема.
Предлагаемое решение способно защитить программу от влияния режима крупных
шрифтов и не отказываться от шрифта MS Sans Serif при разработке программы.
Подход состоит в том, чтобы заменять все шрифты MS Sans Serif на Arial при
запуске программы при крупных шрифтах. Создавать программу, естественно, следует
при мелких шрифтах. 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). Тогда не надо лишать их этой возможности. |
Форум Программиста
Новости Обзоры Магазин Программиста Каталог ссылок Поиск Добавить файл Обратная связь
Flora24 Доставка цветов Нарткала Цветочная лавка АЖУР.
Рейтинги
|