С давних пор повелось, что стандарты на пользовательский интерфейс Windows-приложений Microsoft задает "явочным порядком". Первая громкая история на эту тему связана с появлением в 1994 г. Excel 2.0 for Windows, когда разработчики из Редмонда впервые применили интерфейс со многими документами (впоследствии широко известный как MDI) и даже не подумали задокументировать и опубликовать его. После справедливого возмущения широких кругов программистской общественности Microsoft исправился и теперь новые возможности интерфейса публикуются если не до выхода продукта, то, по крайней мере, ненамного позже. Вспомним, с Internet Explorer появилась панель CoolBar и кнопки, картинки, которые подсвечивались при прохождении над ними курсора мыши. Большинство же новинок связано с флагманским продуктом Microsoft - Office. Одна из них - весьма, кстати, полезная - это система настраиваемых пользователем меню и панелей инструментов.
В Delphi 7 разработчику предоставляется доступ к аналогичным возможностям. Правда, для работы с ними придется забыть "старый" интерфейс - компоненты
TMainMenu, TToolBar - и полностью переучиться. Теперь "продвинутый" интерфейс состоит из новых компонентов
TActionManager, TActionMainMenuBar, TActionToolBar
и примкнувшего к нимTCustomizeDlg
(страница Палитры компонентов Additional). Для читателя уже знакомого с действиями
(Actions) названия этих компонентов покажутся знакомыми. Действительно, это - гибриды прежнего
TActionList и панелей инструментов, плюс новые свойства и методы, плюс большое число полезных стандартных действий.
Данная глава посвящена рассмотрению принципов их использования. Сначала поговорим о понятии действия
(Action) и рассмотрим компонент TActionList, который является кроссплатформенным (работает как в Delphi 7, так и в
Kylix). Далее рассмотрим обширный набор стандартных действий.
И в заключение читатель узнает о Windows-потомке TActionList под названием TActionManager и о связанных с ним компонентах.
Знаете ли Вы, что абстракция через спецификацию - это прием программирования, позволяющий абстрагироваться от процесса вычислений описанных в теле процедуры, до уровня знания того, что данная процедура делает. Это достигается путем задания спецификации, описывающей эффект ее работы, после чего смысл обращения к данной процедуре становится ясным через анализ этой спецификации, а не самого тела процедуры. Мы пользуемся абстракцией через спецификацию всякий раз, когда связываем с процедурой некий комментарий, достаточно информативный для того, чтобы иметь возможность работать без анализа тела процедуры. Абстракция через спецификацию позволяет абстрагироваться от процесса вычислений описанных в теле процедуры, до уровня знания того, что данная процедура делает. Это достигается путем задания спецификации, описывающей эффект ее работы, после чего смысл обращения к данной процедуре становится ясным через анализ этой спецификации, а не самого тела процедуры. Мы пользуемся абстракцией через спецификацию всякий раз, когда связываем с процедурой некий комментарий, достаточно информативный для того, чтобы иметь возможность работать без анализа тела процедуры.