Вы когда-нибудь проверяли как будет выглядеть написанная
вами с такой любовью программа с системе с крупными шрифтами? Согласитесь,
это неприглядное зрелище. Наползающие друг на друга метки и поля
редактирования, надписи, которые заканчиваются где то за пределами формы и
т.п. После этого появляется неконтролируемая неприязнь к пользователям,
которые предпочитают режим крупных шрифтов. Но это их право. И ваша
проблема.
Вы наверняка задавались вопросом о том, как избежать искажений. И находили в
сети одни и те же рецепты: использовать шрифты TrueType и отключать свойство
Scaled у форм. Рецепт, предлагающий использовать только шрифты TrueType +
Scaled = False для форм - верен. Однако тут есть некоторые неудобства.
Дело в том, что ни один из стандартных TrueType шрифтов не сравнится по
качеству отображения с MS Sans Serif, который по умолчанию используется в
вашем приложении. Самый близкий - Arial все же имеет довольно заметные
отличия и проигрывает MS Sans Serif по читаемости.
Искажений форм так же полностью избежать не удастся. Особенно это может
повлиять на компоновку сложных форм, а также при использовании в интерфейсе
изображений и прочих немасштабируемых элементов. Иногда хочется просто
запретить масштабирование и защитить программу от влияния крупных шрифтов.
Но использовать MS Sans Serif в этом случае нельзя, так как в режиме крупных
шрифтов система "сдвигает" их на 2 пункта вверх и шрифт 8pt MS Sans Serif
выглядит как 10pt MS Sans Serif при мелких шрифтах.
для справки
В режиме стандартных размеров шрифтов в качестве системного
используется, в основном, MS Sans Serif - рубленый шрифт без засечек. Он
имеет размеры 8pt, 10pt, 12pt, 14pt, 18pt и 24pt. В основном
используется размер 8pt. В режиме крупных шрифтов система увеличивает
все шрифты на 120%. ( С 96 pixels per inch до 120 pixels per inch).
Шрифт MS Sans Serif имеет всего 6 размеров. Поэтому 8pt становится 10pt,
10pt - 12pt и т.д. Шрифт 8pt MS Sans Serif выглядит как 10pt MS Sans
Serif при мелких шрифтах. Шрифты же TrueType могут имеют произвольные
размеры и шаг изменения равен 1pt. Поэтому при крупных шрифтах размеры
TrueType и не-TrueType шрифтов изменяются по разному.
Предлагаемое решение способно защитить программу от влияния режима крупных
шрифтов и не отказываться от шрифта MS Sans Serif при разработке программы.
Подход состоит в том, чтобы заменять все шрифты MS Sans Serif на Arial при
запуске программы при крупных шрифтах. Создавать программу, естественно,
следует при мелких шрифтах.
Можно написать невизуальный компонент и добавить его на каждую форму.
Компонент при загрузке проверяет режим и при обнаружении режима "Big Fonts"
"обходит" все визуальные компоненты для замены шрифта. Также компонент
заботится о том, чтобы свойство Scaled у форм было отключено.
unit glSmallFontsDefence;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TglSmallFontsDefence = class(TComponent)
privateprocedure UpdateFonts(Control: TWinControl);
{ Private declarations }protectedprocedure Loaded; override;
publicconstructor Create(AOwner: TComponent); override;
published{ Published declarations }end;
procedure Register;
implementationfunction IsSmallFonts: boolean;{Значение функции TRUE если мелкий шрифт}var DC: HDC;
begin
DC:=GetDC(0);
Result:=(GetDeviceCaps(DC, LOGPIXELSX) = 96);
{ В случае крупного шрифта будет 120}
ReleaseDC(0, DC);
end;
procedureRegister;
begin
RegisterComponents('Gl Components', [TglSmallFontsDefence]);
end;
{ TglSmallFontsDefence }constructor TglSmallFontsDefence.Create(AOwner: TComponent);
begininherited;
if (Owner is TForm) then (Owner as TForm).Scaled := false;
end;
procedureTglSmallFontsDefence.Loaded;
begininherited;
if (Owner is TForm) then (Owner as TForm).Scaled := false;
if csDesigning in ComponentState thenbeginifnot IsSmallFonts then
ShowMessage('Проектирование приложения в режиме крупных' +
' шрифтов недопустимо!'#13#10+
'Компонент TglSmallFontsDefence отказывается' +
' работать в таких условиях.');
endelse
UpdateFonts((Owner as TForm));
end;
procedureTglSmallFontsDefence.UpdateFonts(Control: TWinControl);
var
i: integer;
procedure UpdateFont(Font: TFont);
beginif CompareText(Font.Name, 'MS Sans Serif') <> 0 then exit;
Font.Name := 'Arial';
end;
beginif IsSmallFonts then exit;
UpdateFont(TShowFont(Control).Font);
with Control dofor i:=0 to ControlCount-1 dobegin
UpdateFont(TShowFont(Controls[i]).Font);
if Controls[i] is TWinControl then UpdateFonts(Controls[i] as TWinControl);
end;
end;
end.
Вы можете добавить свойство Options типа перечисления, в котором задать
опции исключения некоторых классов компонентов. К примеру, можно добавить
возможность отключать замену шрифтов для потомков TCustomGrid. Очень часто
пользователи используют режим крупных шрифтов, чтобы улучшить читаемость
таблиц данных (TDBGrid). Тогда не надо лишать их этой возможности.
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного
способа создания контента для размещения его во всемирной паутине. Разработка
HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое
изменилось так, что текущие спецификации HTML перестали соответствовать
сегодняшним требованиям.
HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и
соответствовать растущим требованиям разнообразного и смешанного web-контента.
HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье
мы взглянем на 5 новых интересных вещей в HTML 5.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена
устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его
предшественник, но в тоже время лишен некоторых внутренних механизмов, что
впрочем целиком следствие из расширенной универсальности ListView. Среди отличий
ListView и GridView можно назвать и гибкую настройку разметки, что позволяет
выводить данные не только в табличном виде, но и вообще в любом каком пожелает
программист. Благодаря шаблонам ItemTemplate, EditItemTemplate,
InsertItemTeplate можно настроить внешний вид при любом из состояний ListView:
редактировании или выборе элемента.
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов
для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны
как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net.
Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером
отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report
и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы,
но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов
и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам
сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные
отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в
сфере программных продуктов для Business Intelligence.