Все бесплатно
    Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.



Вопросы
  Округление времени до 5 мин
   Категория: Базы данных
  Что такое хук (hook)?
   Категория: Приложение
  Процедуры и функции для рабты с файлами
   Категория: Файловая система
  Последний день месяца
   Категория: Базы данных
  Узнать все IP-адреса компьютера
   Категория: Интернет и Сети
  Сохранить документ Word как RTF на DELPHI
   Категория: Файловая система
  Компонент SpeedButton
   Категория: Компоненты
  Подсчет времени какого-либо события
   Категория: Математика
  Перекодировка текста DOS-Windows-Koi8
   Категория: Текст и строки

Delphi - База Знаний: Объект экрана — Screen

  << Вернуться к Содержанию  

В приложении Delphi автоматически создается глобальный объект Screen (экран) типа TScreen, свойства которого определяются из информации Windows о мониторе, на котором запускается приложение. Вы можете в любом приложении использовать, например, такие параметры объекта Screen, как Height — высота экрана и Width — его ширина. Так как вы используете в процессе проектирования один тип монитора, а приложение в дальнейшем может работать на мониторе другого типа, то не исключено, например, что ваша форма не поместится на экране или наоборот — будет слишком маленького размера для данного монитора. Чтобы избежать этих неприятностей, можно автоматически масштабировать свою форму, вводя, например, в обработчик ее события OnCreate код:

Form1.Width := Screen.Width div 2;
Form1.Height := Screen.Height div 2;


Этот код задает размеры формы равными половине соответствующих размеров экрана.

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

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

with Screen do
for I := 0 to FormCount - 1 do
В В begin
В В  if Forms[x].Height > Height
В В В В then Forms[x].Height := Height;
В В  if Forms[x].Width > Width
В В В В then Forms[x].Width := Width;
В В end;


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

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

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

ComboBox1.Items := Screen.Fonts;
ComboBox1.ItemIndex := 0;


Тогда в нужный момент пользователь может выбрать подходящий шрифт из списка.

В тип TScreen введено два новых свойства: HintFont и MenuFont типа TFont. Они хранят установленные в Windows шрифты отображения ярлычков и разделов меню.

Свойство Cursor объекта Screen определяет вид курсора. Если это свойство равно crDefault, то вид курсора при перемещении над компонентами определяется установленными в них свойствами Cursor. Но если свойство Cursor объекта Screen отлично от crDefault, то соответствующие свойства компонентов отменяются и курсор имеет глобальный вид, заданный в Screen. Этим можно воспользоваться для такой частой задачи, как изменение курсора на форму В«песочные часыВ» во время выполнения каких-то длинных операций. Это можно сделать следующим образом:

Screen.Cursor := crHourGlass;
try
<выполнение требуемых длинных операций>
finally
Screen.Cursor := crDefault;
end;


При успешном или аварийном окончании длинных операций курсор в любом случае возвращается в значение по умолчанию. Если в приложении в какие-то отрезки времени используется отличный от crDefault глобальный вид курсора, то приведенный код можно изменить, чтобы по окончании длинных операций восстановить прежнее глобальное значение:

var OldCursor: TCursor;
begin
OldCursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
try
В В <выполнение требуемых долгих операций>
finally
В В Screen.Cursor := OldCursor;
end;


С помощью Screen можно получить доступ к активной в текущий момент форме вашего приложения через свойство ActiveForm. Если в данный момент пользователь переключился с вашего приложения на какое-то другое и, следовательно, ни одна форма вашего приложения не активна, то ActiveForm указывает на форму, которая станет активной, когда пользователь вернется к вашему приложению. В момент переключения фокуса с одной вашей формы на другую, генерируется событие OnActiveFormChange.

Аналогично с помощью свойства ActiveControl можно получить доступ к активному в данный момент оконному компоненту на активной форме. При смене фокуса генерируется событие OnActiveControlChange.

Начиная с Delphi 4 предусмотрена возможность разработки мультиэкранных приложений, работающих одновременно с множеством мониторов. При этом приложение может решать, какие формы и диалоги надо отображать на том или ином мониторе. Свойства различных мониторов, используемых в таком приложении, можно найти с помощью свойства Screen.Monitors[x], где I — индекс монитора. Индекс 0 относится к первичному монитору. Свойство Screen.Monitors[x] является списком объектов типа TMonitor, содержащих информацию о конкретных мониторах.

Среди свойств объектов типа TMonitor имеются Height — высота и Width — ширина экрана монитора. Кроме того имеются свойства Left и Тор. Эти свойства означают следующее. Все доступное экранное пространство можно представить себе разбитым на экраны отдельных мониторов, размещающихся слева направо и сверху вниз. Соответственно свойства Left и Тор определяют координаты левого верхнего угла экрана монитора в этом логическом экранном пространстве. Объекты типа TMonitor имеют также свойство MonitorNum — номер монитора, представляющий собой его индекс в свойстве Screen.Monitors[x].

Для управления тем, на каком мониторе должна появляться та или иная форма, служит свойство формы DefaultMonitor. Это свойство может принимать значения:

dmDesktop - не предпринимается попыток разместить форму на конкретном мониторе
dmPrimary - форма размещается на первом мониторе в списке Screen.Monitors
dmMainForm - форма появляется на том мониторе, на котором размещена главная форма
dmActiveForm - форма появляется на том мониторе, на котором размещена текущая активная форма
  << Вернуться к Содержанию