Кнопка с фиксацией SpeedButton

Кнопки SpeedButton имеют возможность отображения пиктограмм и могут использоваться как обычные управляющие кнопки или как кнопки с фиксацией нажатого состояния. Обычно они используются в качестве быстрых кнопок, дублирующих различные команды меню, и в инструментальных панелях, в которых требуется фиксация нажатого состояния.

Свойство Caption (надпись) обычно оставляется пустым, так как вместо надписи используется пиктограмма. Изображение на кнопке задается свойством Glyph точно так же, как для кнопок BitBtn.

Особенностью кнопок SpeedButton являются свойства GroupIndex(индекс группы), AllowAllUp (разрешение отжатого состояния всех кнопок группы) и Down (исходное состояние − нажатое). Если GroupIndex = 0, то кнопка ведет себя так же, как Button и BitBtn. При нажатии пользователем кнопки она погружается, а при отпускании возвращается в нормальное состояние. В этом случае свойства AllowAllUp и Down не влияют на поведение кнопки.

Если GroupIndex > 0 и AllowAllUp = true, то кнопка при щелчке пользователя на ней погружается и остается в нажатом состоянии. При повторном щелчке на кнопке она освобождается и переходит в нормальное состояние (именно для того, чтобы освобождение кнопки состоялось, необходимо задать AllowAllUp = true). Если свойство Down во время проектирования установлено равным true, то исходное состояние кнопки − нажатое.

Если есть несколько кнопок, имеющих одинаковое ненулевое значение GroupIndex, то они образуют группу взаимосвязанных кнопок, из которых нажатой может быть только одна. Если одна кнопка находится в нажатом состоянии и пользователь щелкает на другой, то первая кнопка освобождается, а вторая фиксируется в нажатом состоянии. Поведение нажатой кнопки при щелчке на ней зависит от значения свойства AllowAllUp. Если оно равно true, то кнопка освободится, поскольку в этом случае возможно состояние, когда все кнопки группы отжаты. Если же AllowAllUp = false, то щелчок на нажатой кнопке не приведет к изменению вида кнопки. Впрочем, и в этом случае, как и при любом щелчке на кнопке, возникает событие OnClick, которое может быть обработано.

Состояние кнопки во время выполнения можно определить по значению свойства Down: если значение свойства равно true, то кнопка нажата. Во время события OnClick значение Down уже равно тому состоянию, которое примет кнопка в результате щелчка на ней.

 

Продолжим выполнение задания 2.

3.Перенесите на форму третью панель Panel, зачистите у нее свойство Caption. На панели разместите метку Label с надписью SpeedButton и три кнопки SpeedButton. На первую кнопку поместите изображение из файла brush, на вторую и третью − из файла pencil. В свойство Caption третьей кнопки впишите Карандаш.

4.Для первой кнопки установите GroupIndex= 0, для второй − GroupIndex= 1, AllowAllUp = true, для третьей − GroupIndex= 2, AllowAllUp = true, Down = true.

5.Сохраните все и запустите приложение на выполнение. Убедитесь в правильном функционировании кнопок.

6.Установите для всех кнопок GroupIndex= 1, AllowAllUp = true, Down = false. Сохраните все и запустите приложение на выполнение. Убедитесь в правильном функционировании кнопок SpeedButton.

7.Установите для одной из кнопок AllowAllUp = false и после сохранения снова выполните приложение. Обратите внимание на изменение в функционировании кнопок.