Рассмотрим в качестве иллюстрации следующий пример. Поместим на форму компонент TImageList, добавим в него какие-нибудь изображения из каталога Common Files\Borland Shared\Images\Buttons (например, FileOpen.bmp, FileNew.bmp, FileSave.bmp, FileClose.bmp).
Далее поместим на форму компонент TActionList. С помощью его редактора свойств создадим несколько объектов TAction, присвоим им имена, установим соответствующие значения свойств Caption и ImageIndex и создадим какие-нибудь обработчики событий OnExecute для каждого из них.
Теперь поместим на форму компонент TToolBar, добавив к нему четыре кнопки TToolButton, четыре компонента TButton, одно главное меню и одно popup-меню. У всех этих компонентов есть свойство Action, и если выбрать его из выпадающего списка, соответствующий интерфейсный элемент будет обладать соответствующим набором свойств (надписью, графическим изображением) и обработчиком событий OnClick (у компонентов TMainMenu, TPopupMenu и TToolBar перед этим следует установить значение свойства Images, выбрав компонент Imagelist1).
Отметим, что без использования компонента TActionList на определение свойств и обработчиков событий интерфейсных элементов ушло бы значительно больше времени. Говоря другими словами, использование компонента TActionList позволяет отделить пользовательский интерфейс от логики приложения, что облегчает создание приложения и повышает эффективность разработки.
Рассмотрим простейший пример, иллюстрирующий эти возможности. Создадим проект, содержащий три формы. На главную форму поместим кнопку и компонент TPageControl
Установим следующие значения свойств компонентов приложения:
Компонент | Свойство | Значение |
PageControl1 | Align | alBottom |
DockSite | True | |
DragKind | dkDock | |
Form2 | UseDockManager | True |
DragKind | dkDock | |
DragMode | dmAutomatic | |
Form3 | UseDockManager | True |
DragKind | dkDock | |
DragMode | dmAutomatic |
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
Form3.Show;
end;
В процессе выполнения приложения после нажатия на кнопку появятся две дополнительные формы Form2 и Form3, которые можно переместить на блокнот, после чего в нем образуются страницы с именами Form2 и Form3. Изъять форму из блокнота можно, перемещая соответствующий ярлычок с помощью мыши - ярлычок при этом превратится в заголовок формы, а содержание формы будет корректно размещено на панели блокнота, даже, если в настоящий момент закладка блокнота не видна. Для этой цели определена глобальная процедура NotebookHandlesNeeded, вызывать которую необходимо при создании формы, а в качестве параметра передавать ей Notebook объект:
procedure TForm1.FormCreate(Sender: TObject);
begin
NotebookHandlesNeeded(Notebook1);
end;
Отметим, что можно также превратить в "плавающие" окна интерфейсные элементы форм, например, панели.
Следует также обратить внимание на то, что сама среда разработки Delphi 4 почти целиком состоит из "плавающих" форм и панелей. В частности, почти все окна отладчика, Code Explorer, инспектор объектов, менеджер проектов, элементы инструментальной панели выполнены в виде "плавающих" форм.
Из дополнительных интерфейсных элементов особенно хотелось бы отметить TControlBar - компонент, служащий контейнером для любого интерфейсного элемента Delphi и позволяющий пользователю перемещать внутри него интерфейсные элементы по своему усмотрению на этапе выполнения.
Для приложений, нацеленных на стандарты пользовательского интерфейса Windows 98, Delphi включает новые компоненты Windows 98, чтобы поддерживать свойства подобно MonthCalendar, PageScroller, плоские Scrollbars и ComboBoxEx.
Помимо этого, в Delphi 4 включена поддержка Intellimouse. Приложения,
созданные с помощью Delphi 4, автоматически обнаруживают и используют это
устройство, при этом не требуется создания дополнительного кода. Поддержка
Intellimouse позволяет конечному пользователю приложения свободно перемещать,
масштабировать и управлять компонентами, не беря в руку мышь. Используя
колесо, пользователи приложений могут гладко перемещаться через экранные
формы, изменять размеры окон для просмотра данных, вместо поиска для этих
действий scrollbar, кнопок и меню.