178______________________________________________Глава 3

си используется пиктограмма. Изображение на кнопке задается свойством Glyph
точно так же, как описано в разделе 3.3.2 для кнопок BitBtn. И точно так же свой-
ство NumGlyphs определяет число используемых пиктограмм, свойства Layout и
Margin определяют расположение изображения, а свойство Spacing — расстояние
между изображением и надписью (если, конечно, вы все-таки хотите использовать
надпись на кнопке).

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

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

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

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

3.3.4 Группы радиокнопок — компоненты RadioGroup,
RadioButton и GroupBox

Радиокнопки образуют группы взаимосвязанных индикаторов, из которых
обычно может быть выбран только один. Они используются для выбора пользова-
телем одной из нескольких взаимоисключающих альтернатив, например, отдела,
в котором работает сотрудник, или пола сотрудника. Впрочем, радиокнопки могут
использоваться не только для выбора, но и для отображения аналогичных данных.
В этом случае управление кнопками осуществляется программно. Несколько при-
меров организации размещения радиокнопок вы можете увидеть на рис. 3.21 в
разделе 3.3.1.

Начнем рассмотрение радиокнопок с компонента RadioGroup — панели груп-
пы радиокнопок. Это панель, которая может содержать регулярно расположенные
столбцами и строками радиокнопки. Надпись в левом верхнем углу панели (см.
рис. 3.21) определяется свойством Caption. А надписи кнопок и их количество
определяются свойством Items, имеющим тип TStrings. Щелкнув на кнопке с
многоточием около этого свойства в окне Инспектора Объектов, вы попадете в ре-
дактор списков строк, который уже рассматривался нами в разделе 3.2.4
(рис. 3.6). В нем вы можете занести надписи, которые хотите видеть около кнопок,
по одной в строке. Сколько строчек вы запишете — столько и будет кнопок. На-