SpeedButton — кнопка быстрого доступа в Дельфи
Кнопка быстрого доступа представлена в Delphi компонентом SpeedButton, который по своему виду и функциональным возможностям в общем похож на кнопку с рисунком BitBtn. Однако, в отличие от кнопки с рисунком, кнопка SpeedButton происходит от класса TGraphicControl и является неоконным элементом управления. Поэтому кнопка быстрого доступа не может получать фокус ввода, но зато требует для своего функционирования меньше ресурсов, чем другие виды кнопок. Наиболее часто кнопки быстрого доступа, или быстрые кнопки, применяются для создания панелей инструментов.
Cвойство Down — включена кнопка или нет
В отличие от других кнопок, кнопка SpeedButton может использоваться как переключатель. Поэтому, помимо обычного нажатого состояний, она имеет третье состояние — утопленное, или выбранное (включенное). Включена быстрая кнопка или нет, определяет свойство Down типа Boolean. Если свойство имеет значение True, то кнопка выбрана, если False — не выбрана.
Cвойство GroupIndex - принадлежность кнопки к группе
Использование быстрых кнопок в качестве переключателей имеет определенные особенности. Все быстрые кнопки объединяются в группы, и каждая такая кнопка должна принадлежать к одной из групп. Принадлежность кнопки к группе определяет свойство GroupIndex типа Integer. По умолчанию свойство имеет нулевое значение, и быстрая кнопка не относится к группе. Определяя одинаковое значение для свойств GroupIndex различных кнопок, их можно сгруппировать. При этом все кнопки группы будут работать согласованно — если одна из кнопок выбрана и находится в фиксированном нижнем положении, то выбор других автоматически отменяется. Группирование кнопок снимает необходимость организовывать взаимодействие элементов управления вручную.
На скриншоте показана панель инструментов Форматирование текстового процессора Microsoft Word.
На этой панели зависимыми кнопками, входящими в одну группу, являются кнопки управления выравниванием текста.
Cвойство AllowAllUp
Для случая, когда быстрая кнопка может быть выбрана, свойство AllowAllUp типа Boolean определяет, можно ли повторным щелчком вернуть эту кнопку в невыбранное состояние. Если свойство AllowAllUp имеет значение True, то такое переключение возможно, в противном случае кнопка выключается только при выборе другой кнопки в составе группы. По умолчанию свойство AllowAllUp имеет значение False.
Если кнопка не входит в группу (GroupIndex = о), то она не может работать как переключатель и находиться в выбранном состоянии. Поэтому в случае, когда необходимо, чтобы быстрая кнопка могла находиться во включенном состоянии и работала независимо от других кнопок, создается группа из одной кнопки. С этой целью значению свойства GroupIndex такой быстрой кнопки присваивается уникальный номер, а свойство AllowAllUp устанавливается в значение True.
В связи с тем, что быстрая кнопка по сравнению с кнопкой BitBtn имеет еще одно состояние, рисунок на ее поверхности может состоять не из трех, а из четырех отдельных изображений. Четвертое изображение на ее поверхности появляется в случае, когда кнопка находится в утопленном (выбранном) состоянии (свойство Down имеет значение True). Поэтому для кнопки SpeedButton максимальное значение свойства NumGlyph равно 4.