•   Проектирование графического интерфейса пользователя______________295

Разрешающую способность экрана можно определить, воспользовавшись
свойством PixelsPerInch, указывающим количество пикселей экрана на дюйм в
вертикальном направлении. Это справедливо именно для вертикального направле-
ния, поскольку во многих мониторах коэффициенты масштабирования по гори-
зонтали и вертикали различаются.

Screen имеет свойство Forms[int Index], содержащее список форм, отображае-
мых в данный момент на экране, и свойство FormCount, отражающее количество
таких форм. Вы можете использовать это свойство, например, для того, чтобы га-
рантировать, что на данном типе монитора размеры ни одной формы не превысят
размеров экрана. Соответствующий код может выглядеть так:

»for (int 1=0; I < Screen->FormCount; I++)

(

if (Screen->Forms [I]->Height > Screen-height)
Screen->Forms [I]->Height = Screen-height - 100;

if (Screen->Forms[I]->Width > Screen->Width)
Screen->Forms[I]->Width = Screen->Width - 100;

}

Размеры форм, превышающие размер экрана, урезаются этим кодом с запасом
в 100 пикселей.

В приведенных примерах надо, конечно, предусмотреть, чтобы при изменении
размеров формы адекватно изменялось и расположение компонентов на ее поверх-
ности. Этот вопрос подробно рассмотрен в разделе 4.2.

Так же, как к формам, можно получить доступ и к модулям данных (см. раз-
дел 9.11.9). Свойство DataModules[int Index] содержит список всех существую-
щих на текущий момент модулей данных приложения, а параметр DataModuleCo-
unt указывает число таких модулей. Эти параметры можно использовать в сово-
купности для поиска по всем модулям данных приложения.

Еще одно полезное свойство объекта Screen — Fonts (шрифты). Это свойство
типа TStrings содержит список шрифтов, доступных на данном компьютере (свой-
ство только для чтения). Его можно использовать в приложении, чтобы проверять,
имеется ли на компьютере тот или иной шрифт, используемый в приложении.
Если нет — то можно или дать пользователю соответствующее предупреждение,
или сменить шрифт в приложении на один из доступных, или дать пользователю
возможность самому выбрать соответствующий шрифт. Например, вы можете по-
местить в вашем приложении компонент списка TComboBox и при событии формы
OnCreate загрузить его доступными шрифтами с помощью операторов:

:      ComboBoxl->Items = Screen->Fonts;

ComboBoxl->ItemIndex = 0;

Тогда в нужный момент пользователь может выбрать подходящий шрифт из
списка, а для того, чтобы этот шрифт использовался, например, для текста в ком-
поненте RichEditI, в обработчик события OnClick или OnChange списка вставьте
оператора:

RichEditl->SelAttributes->Name =

ComboBoxl->Items->Strings[ComboBoxl->ItemIndex] ;

RichEditl->SetFocus();

Если хотите использовать выбранный шрифт для всех компонентов формы, в
которых свойство ParentFont установлено в true, то приведенный выше оператор
должен иметь вид:

Font->Name = ComboBoxl->Items->Strings[ComboBoxl->ItemIndex];

I       Свойство Cursor объекта Screen определяет вид курсора. Если это свойство

•   равно crDefault, то вид курсора при перемещении над компонентами определяется
Г   установленными в них свойствами Cursor. Но если свойство Cursor объекта Screen