Компонент TScreen
Класс TScreen инкапсулирует состояние экрана или выводимой области. Delphi во время работы автоматически создаст экземпляр класса Screen. Для его использования в раздел uses нужно включить модуль Forms.
Свойства TScreen
ActiveControl
Это свойство возвращает объект TWinControl, имеющий фокус ввода. Обычно оно используется для реализации команд Copy, Cut и Paste для текстовых управляющих элементов. Следующий код, помещенный в обработчик TMenuItem, выполняет функцию Copy.
procedure TFormI.mnuEditCopyClick(Sender: TObject); begin Screen.ActiveControl.Perform(WM_COPY,0,0); end;
Все, что происходит в мире Windows, базируется на сообщениях. Для выполнения какой-либо функции управляющие элементы часто отсылают сообщения самим себе. Так и в этом примере управление происходит путем передачи сообщения WM_COPY.
ActiveForm
Это свойство возвращает объект TForm, имеющий фокус ввода. Если приложение неактивно, свойство указывает, какая именно форма будет иметь фокус ввода при активизации приложения. В качестве примера используем свойство для создания мигающего заголовка формы, чтобы привлечь внимание пользователя. Функция Windows API, предназначенная для этой цели, должна получить дескриптор окна:
FlashWindow(Screen.Active Form.Handle,False);
Cursor
Это свойство определяет форму указателя мыши для всего приложения. Обычно оно используется для отображения песочных часов, чтобы в то время, пока пользователь думает о сложной работе, выполняемой приложением, немного передохнуть.
{Придать курсору форму песочных часов.} Screen.Cursor:= crHourglass; try {Попытаемся ничего не делать какое-то время.} for iCount:=1 to 1000000000 do; finally {Восстановим форму указателя.} Screen.Cursor:= crDefault; end;
Форму указателя можно изменить для каждого потомка TControl (включая ТForm) отдельно.
Forms и FormCount
Эти свойства возвращают список форм и их количество. Работа с ними ничем не отличается от работы со списком дочерних окон, описанных в разделе "MDIChildren и MDIChildCount".
Height и Width
Это наиболее полезные свойства, возвращающие высоту и ширину экрана в пикселях. Они могут применяться во многих ситуациях, например при определении местоположения формы. Вот как поместить форму в центре экрана.
Left:= (Screen.Width - Width) div 2; Top:= (Screen.Height - Height) div 2;
События TScreen
TScreen предоставляет два основных события, извещающие программу об изменении фокуса ввода. Подобно возможностям класса TApplication, возможности класса TScreen доступны лишь при выполнении.
OnActiveControlChange
Это событие возникает при передаче фокуса ввода от одного управляющего элемента к другому. Свойство ActiveControl обновляется непосредственно перед вызовом события. Вы можете использовать событие, например, для вывода текста подсказки в строке состояния.
procedure TFormI.ActiveControlChangeHandler(Sender: TObject); begin if (not Application.Terminated) then pnlStatus.Caption:= ActiveControl.Hint; end;
Проверка связана с тем, что событие генерируется и при закрытии приложения, а при этом обращение к уже уничтоженному объекту вызовет исключительную ситуацию.
OnActiveFormChange
Событие генерируется при создании новой формы или передаче фокуса ввода от одной формы к другой. Обычно это событие используется в MDI-приложениях для обновления доступных функций меню и кнопок-ускорителей. Ниже приведен пример из шаблона MDI-приложения.
procedure TMainForm.UpdateMenuItems(Sender: TObject); begin FileCloseItem.Enabled:= MDIChildCount 0; FileSaveItem.Enabled:= MDIChildCount 0; FileSaveAsItem.Enabled:= MDIChildCount 0; end;
Процедура UpdateMenuItems назначена в качестве обработчика событию OnActiveFormChange в обработчике OnCreate.
procedure TMainForm.FormCreate(Sender: TObject); begin Application.OnHint:= ShowHint; Screen.OnActiveFormChange:= UpdateMenuItems; end;
1 2 3 4
8 8 8
| |