Меню и панели на основе Action в Delphi

Теперь создадим набор действий. Для этого дважды щелкните мышью по ком­поненту 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. Чтобы эти обработчики не исчезли при компиляции и сохранении проекта, можете написать там какой-нибудь код или просто поставить знак коммен­тария //. Если вы снова запустите проект, то теперь все пункты будут уже доступны.

 

Меню и панели на основе Action в Delphi

Теперь возьмем категорию "Файл" в окне создания наборов действий и перемес­тим ее на компонент 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 существует.

ВНИМАНИЕ. Если вы указали файл, в котором должны сохраняться настройки, то помните, когда в дизайнере изменяется положение кнопок (добавляются новые или удаляются имеющиеся), во время выполнения это отражаться не будет, потому что в файле toolbar.dat нет никакой информации об изменениях. Чтобы изменения прошли, нужно удалить файл или во время выполнения программы проделать те же измене­ния, вызвав пункт Customize из меню Tools.

Вот таким простейшим образом мы создали набор действий. У каждого дейст­вия создали обработчик события 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 будут иметь стиль ХР.

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: