Теперь создадим набор действий. Для этого дважды щелкните мышью по компоненту ActionManager, и вы увидите окно. Чтобы создать новое действие, нужно щелкнуть по кнопке добавить. В списке Actions появится новый элемент Actioni. Выделите его и посмотрите в объектный инспектор. Здесь нас интересуют следующие свойства:
- caption — заголовок элемента (для начала создадим элемент "Новый");
- categoty— категория (просто введите здесь слово "Файл", и будет создан новый раздел).
- Checked— оставьте true, если элемент должен иметь два состояния — выделенный и нет (для таких элементов нужно еще ставить и свойство AutoCheck В true, чтобы ОНИ автоматически выделялись);
- Enabled — доступность;
- Hint — подсказка, чтобы она появлялась, у формы нужно установить В свойстве ShowHint значение true;
- image index — индекс картинки;
- shotcut — горячие клавиши. Это основные свойства, с которыми вы будете часто работать. Попробуйте создать четыре элемента с заголовками: "Новый", "Редактировать", "Удалить" и "Выход" с категорией category, равной "Файл". После этого создайте
еще один элемент с заголовком "О программе" и в свойстве category укажите "Помощь". Будет создана новая категория с таким именем.
Теперь захватите указателем мыши имя категории "Файл" и перетащите его на компонент ActionMainMenuBar. То же самое проделайте и с категорией "Помощь". Будут
созданы два пункта меню. Если вы теперь посмотрите меню Файл, то увидите, что все элементы находятся последовательно, хотя желательно сделать разделитель, чтобы отделить пункт Выход. Для этого существует кнопка Drag to create Separators, которая расположена внизу окна создания наборов. Возьмите эту кнопку и перетащите на меню Файл, когда меню раскроется, установите мышь между пунктами Удалить и Выход. Если теперь щелкнуть по меню Файл, то можно увидеть результат, показанный на рис. 11.46.
Попробуйте сейчас запустить программу, и вы увидите, что все пункты недоступны. Это связано с тем, что для этих пунктов не созданы обработчики событий onExecute. Само событие срабатывает, когда пользователь выбирает какой- то элемент меню, как событие onclick. Опять возвращаемся в окно создания наборов действий. Создайте для всех элементов обработчики событий onExecute. Чтобы эти обработчики не исчезли при компиляции и сохранении проекта, можете написать там какой-нибудь код или просто поставить знак комментария //. Если вы снова запустите проект, то теперь все пункты будут уже доступны.
Теперь возьмем категорию "Файл" в окне создания наборов действий и переместим ее на компонент ActionToolBar. Этим мы создадим кнопки на панели для всех действий из категории "Файл". Единственный недостаток— кнопки отображаются с заголовками, а это действительно недостаток, потому что более удобно, когда видны только изображения. Чтобы исправить этот недостаток, нужно выделить компонент ActionManager и дважды щелкнуть справа от свойства ActionBars. Перед вами должно открыться окно, показанное на рис. 11.48.
В этом окне созданы два элемента ActionBar. Один связан с меню ActionMainMenuBar1, а второй — с панелью кнопок ActionToolBar1. Выделите второй из них и установите свойство Autosize в значение false. После этого у панели с кнопками справа внизу появится маленькая кнопка со стрелкой вниз. Нажав на эту кнопку, пользователь сможет корректировать, какие кнопки надо отображать на панели, а какие нет. Только это будет возможно, если в свойстве FileName у компонента ActionManager указано имя файла. В этом случае компонент сможет автоматически сохранять в этом файле информацию о кнопках меню или панелей, а также восстанавливать их после перезапуска.
Теперь выделим вторую строку (ActionBar->ActionTooiBar1) и дважды щелкнем мышью по свойству items. Перед вами откроется еще одно окно с названиями кнопок, которые созданы на панели. Здесь выделять ничего не надо. Просто щелкните в окне левой клавишей мыши, чтобы выбрать свойства самого окна, а не како- го-либо элемента. Найдите свойство captionOptions и установите его в coNone. После этого все заголовки кнопок исчезнут.
То же самое можно было проделать еще одним способом — дважды щелкнуть кнопкой мыши по компоненту ActionManager и на вкладке ToolBars последовательно выбирать панели и устанавливать для каждой из них в Caption Options значение None.
Чтобы еще больше украсить пример, отсортируйте все кнопки на панели по своему усмотрению и установите разделители (separators) таким же перетаскиванием, как мы делали это для пунктов меню. Можете еще переместить действие "О программе" на панель. Для этого можно переместить всю категорию "Помощь", а можно только одно это действие.
Теперь еще более усложним пример. Снова возвращайтесь в окно создания наборов действий, сейчас мы создадим еще один элемент. Щелкните по кнопке со стрелкой вниз (расположена справа от кнопки £13). В появившемся меню выберите пункт New Standart Action, и вы увидите окно, в котором перечислены стандартные действия, которые могут обрабатываться автоматически. В самом низу этого окна найдите пункт TCustomizeActionBars. Выделите его и нажмите ОК. Так вы создадите новую категорию Tools с одним только действием внутри — customize. Вы можете переименовать заголовок captions и категорию category созданного элемента и написать все на родном языке. Этого делать не будем, чтобы в исходном коде можно было сразу увидеть данный пункт. Перетащите категорию Tools на панель с меню.
Попробуйте запустить пример и выбрать пункт customize из меню Tools. Перед вами откроется окно, похожее на создание наборов действий. Только здесь вы не можете создать ничего нового, зато можно перетаскивать кнопки на панель, создавая новые кнопки, или удалять имеющиеся с помощью перетаскивания кнопок обратно в окно (можно даже не в окно, а в любое место, как бы снимая кнопки с панели). Получается, что, не написав еще ни одной строки кода, мы создали редактируемую панель.
Остается сделать один только маленький штрих. Выделите компонент ActionManager и в свойстве FileName укажите какое-нибудь имя файла (пусть это будет toolbar.dat). В этом файле будут автоматически сохраняться все настройки кнопок панелей и любые изменения, внесенные в режиме Runtime, т. е. во время выполнения программы. Указав файл, снова запустите пример. Обратите внимание, что кнопка со стрелкой вниз на панели кнопок не доступна. Это связано с тем, что файл toolbar.dat не существует. Закройте программу. Во время закрытия она сохраняет все состояния кнопок и создает файл настроек. Запустите программу еще раз, теперь уже все доступно и работает, потому что toolbar.dat существует.
Вот таким простейшим образом мы создали набор действий. У каждого действия создали обработчик события onExecute, в котором написали необходимые для выполнения действия. Только после этого перетаскиваем действия на панель меню или панель кнопок.
И, наконец, самое последнее — научим наше главное меню отбрасывать тень. Создайте новое действие в категории Tools и укажите у него следующие свойства:
- caption — тень;
- AutoCheck — true;
- Name — MenuShadowAction.
Для события onExecute напишите следующий код:
procedure TForm1.MenuShadowActionExecute(Sender: TObject);
begin
ActionMainMenuBar1.Shadows : = MenuShadowAction.Checked ;
end;
Запустите программу и посмотрите, как будет изменяться главное меню при разном состоянии пункта Тень.
Очень интересным является свойство style компонента ActionManager. Попробуйте изменить его и посмотреть на результат. В Delphi 7 появился новый компонент xPManifest на вкладке Win32. Просто поместите его на форму, и все кнопки и элементы управления в WindowsXP будут иметь стиль ХР.