Переносить компоненты можно не только с помощью мыши, но и программно. Для этого есть пара методов ManualDock и ManualFloat. В приводимом ниже примере нажатие КНОПКИ С именем BitBtnl переносит форму custForm на док MainForm. Panell и размещает ее по всей доступной площади (параметр выравнивания alciient). Нажатие КНОПКИ BitBtn2 снимает эту форму с дока и выравнивает ее по центру экрана. В свойствах UndockHeight и Undockwidth хранятся высота и ширина элемента управления на момент, предшествующий помещению на док:
procedure TMainForm.BitBtnlClick(Sender: TObject); begin.
CustForm.ManualDock(MainForm.Pane11,nil,alClient);
end;
procedure TMainForm.BitBtn2Click(Sender: TObject); begin with CustForm do
begin ManualFloat(Rect((Screen.Width-UndockWidth) div 2,
(Screen.Height-UndockHeight) div 2, (Screen.Width+UndockWidth) div 2, (Screen.Height+UndockHeight) div 2)
);
end;
Рис. 27.3. Плавающие панели инструментов без заголовка окна
Полное рассмотрение внутреннего устройства механизмов Ога§-апо!-Воск потребовало бы расширения объема этой главы. Тем, кто хочет использовать их на все 100%, рекомендуем обратиться к свойствам иэеооскмападег и DockManager. Последнее представляет собой СОМ-интерфейс, позволяющий расширить возможности дока, вплоть до записи его состояния в поток (класс TStream).
Усовершенствованное масштабирование
В класс TControl добавлены свойства, позволяющие упростить масштабирование форм и находящихся на них компонентов.
СВОЙСТВО Anchors:
TAnchorKind = (akLeft, akTop, akRight, akBottom) ;
TAnchors = set of TAnchorKind;
property Anchors: TAnchors;
отвечает за привязку компонентов к определенным краям формы при масштабировании. По умолчанию любой компонент привязан к верхней и левой сторонам ([akLeft, актор]), т. е. не двигается при стандартном масштабировании. Но, изменив значение этого свойства, можно сделать так, чтобы компонент находился, к примеру, все время в нижнем правом углу.
С другой стороны, если прикрепить все четыре стороны, то получится интересный и нужный во многих случаях эффект. Такой компонент увеличивается и уменьшается вместе с формой; но в то же время сохраняется расстояние до всех четырех ее краев.
Свойство constraints представляет собой набор ограничений на изменение размеров компонента. Оно содержит четыре свойства: MaxHeight, MaxWidth, MinHeight и Minwidth. Как легко догадаться из названий, размеры компонента могут меняться только в пределах значений этих четырех свойств.
Наконец, большинство элементов управления получили свойство AutoSize, позволяющее им автоматически масштабироваться при изменении содержимого (скажем, надписи на кнопке).
Управление фокусом
В процессе работы приложения тот или иной элемент управления получает фокус ввода в зависимости от действий пользователя. Очень часто передача фокуса между элементами управления должна быть упорядочена. Например, при вводе данных в приложениях баз данных пользователь должен иметь максимум удобств для обеспечения хорошей производительности труда. Для этого он должен работать только с клавиатурой, не отвлекаясь на лишние операции по передаче фокуса в нужный компонент при помощи мыши.