Читать «Учебник по Delphi 4.0» онлайн - страница 43

Unknown

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;

Разделяемые обработчики событий

Как вы уже знаете, каждый класс способен генерировать свои собственные события. Каждое из них имеет определенный тип, как, например, TNotifyEvent у OnClick и TCloseEvent у OnClose. Delphi позволяет написать один обработчик события и назначить его нескольким событиям одновременно.

Представьте себе объект TEdit, генерирующий события OnKeyDown и OnKeyUp. Поскольку оба события — одного типа, можете написать одну процедуру и назначить ее обоим событиям. Процедура будет вызываться дважды при каждом нажатии клавиши (при нажатии и отпускании). Или, например, вы можете создать один обработчик для событий OnCreate и OnClick.

Еще одно общее назначение разделяемых обработчиков — обработка событий от двух различных управляющих элементов, которые могут и не быть экземплярами одного класса.

Вот как создать разделяемый между классами TButton и TEdit обработчик OnClick.