Delphi: Список действий TActionList

Чтобы понять, для чего нужен компонент, достаточно внимательно рассмотреть его название, которое можно перевести как список действий. Компонент хранит список действий, которые вы можете использовать в приложении. А зачем они нужны в виде списка?

 

Допустим, что какое-то событие может вызываться из нескольких мест про­граммы или от разных компонентов. Классический пример — пункт меню и дубли­рующая кнопка в панели задач. В большинстве программ присутствует панель за­дач, в которой есть кнопки, дублирующие действия меню. Вы можете и пункту меню и кнопке назначить один и тот же обработчик события, но управлять этим будет все равно не так удобно. Намного лучше будет создать действие Action в списке ActionList и назначить его кнопке и пункту меню.

 

Давайте создадим пример, который будет использовать действия. Создайте но­вое приложение и поместите на него компонент ActionList. Обратите внимание, что он выглядит как прямоугольник с иконкой, и такой компонент не будет види­мым во время выполнения программы. Список действий и не должен быть виден, поэтому данный класс проис­ходит не от TControl, а от TComponent.

 

Дважды щелкните по компоненту ActionList, и перед вами откроется редактор действий. Окно разделено на две половины, слева вы можете видеть категории, а справа список действий выбранной катего­рии. На панели инструментов четыре кнопки. Давайте посмотрим, для чего они предназначены, начиная с левой:

  • создание нового действия;
  • удалить выделенное действие;
  • поднять выделенное действие на одну позицию вверх;
  • опустить выделенное действие на одну позицию вниз.

Последние две кнопки используются для упорядочивания действий и чисто для эстетических целей.

Итак, создадим новое действие. Для этого можно нажать соответствующую кноп­ку на панели задач или просто нажать клавишу <Ins>. Выделите созданное действие и посмотрите в объектный инспектор. Здесь у нас есть следующие действия:

  • AutoCheck— если это свойство равно истине, то свойство checked будет авто­матически переключаться при выполнении действия;
  • caption— заголовок действия. Этот заголовок будет копироваться в свойство caption всем компонентам, которым будет назначено данное действие;
  • category— категория. Здесь можно выбрать уже существующую или напеча­тать новое имя для создания новой категории;
  • Enabled — доступно ли действие;
  • Groupindex— индекс группы. Если у двух действий указан один и тот же ин­декс группы, т. е. они сгруппированы в одну группу, то при выделении одного действия (свойства checked устанавливаются true) другие действия этой группы сбрасываются (свойства checked устанавливаются false);
  • image index— индекс иконки. С иконками мы еще не работали, но пару слов скажу. У самого компонента ActionList есть свойство images, где можно ука­зать список иконок (компонент imagesList). Так вот, назначив действию кар­тинку из этого списка, т. е. указав индекс картинки, она будет появляться на па­нелях и меню, поддерживающих картинки;
  • secondaryshortcut — вторичное сочетание клавиш быстрого вызова;
  • shortcut — первичное сочетание клавиш быстрого вызова.

Давайте назовем действие Выход, а на вкладке Events создадим обработчик со­бытия onExecute и напишем в нем всего одну строку — вызов метода close ().

Теперь в свойстве shortcut напишите Esc, т. е. горячей клавишей будет клави­ша <Esc>. Уже сейчас вы можете запустить программу, нажать <Esc> — и соот­ветствующее событие сработает, и будет вызван метод close (). И это несмотря на то, что действие еще ничему не было назначено.

 

Теперь попробуем поместить на форму кнопку TButton и в свойстве Action ука­зать имя созданного вами ранее действия. Обратите внимание, что заголовок кноп­ки автоматически изменится. Обратное действие также работает. Если изменить свойство Caption у действия, то изменится заголовок у всех компонентов, которым назначено действие. Это очень удобно — из одного контейнера действий управлять ими, изменять заголовки, горячие клавиши, обработку сообщения и т. д.

dle

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