|
Главная » Уроки по ООП » Урок 13. Кнопочные компоненты, переключатели |
ЛЕКЦИЯ |
Урок 13. Кнопочные компоненты, переключатели
Кнопки Button (на стр.Standart) и BitBtn (на стр.Additional)
В надписях (Caption) кнопок можно предусматривать использование клавиш ускоренного доступа, выделяя для этого один из символов надписи. Перед символом, который должен соответствовать клавише ускоренного доступа, ставится символ амперсанта «&». Этот символ не появляется в надписи, а следующий за ним символ оказывается подчеркнутым. Тогда пользователь может вместо щелчка на кнопке нажать в любой момент клавишу Alt совместно с клавишей выделенного символа.
Задание 1. Установите на форму кнопку, свойство Caption = &Выполнить. На кнопке эта надпись будет иметь вид «Выполнить». В обработчике события нажатия кнопки впишите следующий текст:
ShowMessage(‘Нажали кнопку’);
Запустите программу и нажмите клавиши Alt-В.
Свойство Cancel, если его установить в true, определяет, что нажатие пользователем клавиши Esc будет эквивалентно нажатию на данную кнопку.
Задание 2. Установите на форму кнопку, назовите ее «Выход». В обработчике события onClick напишите код:
Form1.close;
Свойство Cancel установите = True. Запустите программу и нажмите клавишу Esc.
Как поведет себя программа?
Свойство Default, если его установить в true, определяет, что нажатие пользователем клавиши ввода Enter будет эквивалентно нажатию на данную кнопку, даже если данная кнопка в этот момент не находится в фокусе. Правда, если в момент нажатия Enter в фокусе находится другая кнопка, то все-таки сработает именно кнопка в фокусе.
Особенности кнопки с пиктограммой BitBtn (на стр.Additional)
При нажатии кнопки с многоточием в строке свойства Glyph в Инспекторе Объектов вызывается окно, нажав в нем кнопку Load, вы перейдете в обычное окно открытия файла рисунка и можете выбрать файл битовой матрицы .bmp, содержащий желаемое изображение.
Имеется возможность указать тип кнопки в свойстве Kind, при этом будет меняться картинка и надпись. В свойстве Caption автоматически настраиваются горячие кнопки и соответствующие действия.
Расположение изображения и надписи на кнопке: свойства |
|
| Margin | Если = -1 (значение по умолчанию), то изображение и надпись размещаются в центре кнопки. Если же Margin > 0, то в зависимости от значения Layout изображение и надпись смещаются к той или иной кромке кнопки, отступая от нее на число пикселей, заданное значением Margin. |
| Layout | Положение изображения по отношению к надписи. |
| Spacing | задает число пикселей, разделяющих изображение и надпись на поверхности кнопки. По умолчанию Spacing = 4. Если задать Spacing = 0, изображение и надпись будут размещены вплотную друг к другу. Если задать Spacing = -1, то текст появится посередине между изображением и краем кнопки. |
Задание 3: установите на форму 5 кнопок BitBtn инастройте изображения на кнопках следующим образом:

Кнопка с фиксацией SpeedButton
Кнопки SpeedButton имеют возможность отображения пиктограмм и могут использоваться как обычные управляющие кнопки или как кнопки с фиксацией нажатого состояния. Обычно они используются в качестве кнопок в инструментальных панелях, в которых требуется фиксация нажатого состояния.
Свойство AllowAllUp - разрешение отжатого состояния всех кнопок группы.
Если свойство Down=true, то исходное состояние кнопки — нажатое.
Если GroupIndex=0, то кнопка ведет себя так же, как Button и BitBtn. При нажатии пользователем кнопки она погружается, а при отпускании возвращается в нормальное состояние. В этом случае свойства AllowAllUp и Down не влияют на поведение кнопки.
Если Grouplndex>0 и AllowAllUp=true, то кнопка при щелчке пользователя на ней погружается и остается в нажатом состоянии. При повторном щелчке пользователя на кнопке она освобождается и переходит в нормальное состояние.
Если у группы кнопок GroupIndex имеет одинаковое ненулевое значение, то они образуют группу взаимосвязанных кнопок, из которых нажатой может быть только одна.
Если AllowAllUp=true, то при щелчке по нажатой кнопке она освободится (т.е. все кнопки группы будут отжаты).
Если AllowAllUp=false, то щелчок на нажатой кнопке не приведет к изменению вида кнопки.
Состояние кнопки во время выполнения можно определить по значению свойства Down: если значение равно true, то кнопка нажата. Во время события OnClick значение Down уже равно тому состоянию, которое примет кнопка в результате щелчка на ней.
Задание 4. Установите на форме три кнопки SpeedButton. Дайте им соответствующие названия, настройте свойство Font так, чтобы текст на кнопках выглядел как на рисунке.
![]()
Установите свойство GroupIndex=1 для всех трех кнопок. У первой кнопки установите свойство Down=True. Запустите программу и посмотрите, как ведут себя кнопки.
Задание 5. Измените свойства кнопок так, чтобы кнопки нажимались и оставались нажатыми до тех пор, пока на них не нажмут второй раз, независимо друг от друга.
Индикаторы с флажком CheckBox (на стр.Standart)
Используются в приложениях для того, чтобы пользователь мог включать и выключать какие-то опции, или для индикации состояния.
При каждом щелчке пользователя на индикаторе его состояние изменяется, при этом изменяется значение свойства State:
| cbChecked | Выделение (появление черной галочки) |
|
cbGrayed |
Промежуточное (серое окно индикатора и серая галочка). |
|
cbUnchecked |
Не выделенное (пустое окно индикатора) |
Если свойство AllowGrayed=true, то допускаются три возможных состояния.
Если свойство AllowGrayed=false, то допускается только два состояния: выделенное и не выделенное.
Проверять состояние индикатора можно по значению свойства Checked.
Если Checked=true, то индикатор выбран, т.е. State = cbChecked.
Если Checked=false, то State=cbUnchecked или cbGrayed.
Задание 6: установить на форму CheckBox и настроить его свойства таким образом, чтобы индикатор проходил через три состояния по щелчку пользователя.
Радиокнопка RadioButton. Свойства:
| Caption | надпись, появляющуюся около кнопки. |
| Alignment | с какой стороны от кнопки появится надпись: |
| Checked | определяет, выбрана ли данная кнопка пользователем, или нет. Поскольку в начале выполнения приложения обычно надо, чтобы одна из кнопок группы была выбрана по умолчанию, ее свойство Checked надо установить в true в процессе проектирования. |
Компонент RadioGroup (на стр.Standart) - панель группы радиокнопок.
Это панель, которая может содержать регулярно расположенные столбцами и строками радиокнопки.
Columns |
Количество столбцов радиокнопок (не более 17). |
| ItemIndex | Индекс выбранной кнопки (какая кнопка выбрана пользователем). Индексы начинаются с 0. По умолчанию ItemIndex = -1, что означает отсутствие выбранной кнопки. |
Определить, какая радиокнопка выбрана в RadioGroup, можно так:
case RadioGroup1.ItemIndex of
0: ShowMessage('Выбран первый элемент');
1: ShowMessage('Выбран второй элемент');
2: ShowMessage('Выбран третий элемент');
end;
Возможность нерегулярного расположения кнопок дают компоненты RadioButton, сгруппированные панелью GroupBox.
Узнать значение выделенного элемента можно следующим образом (выводим значение в Label):
Label1.Caption:=RadioGroup1.Items[RadioGroup1.ItemIndex];
Панель GroupBox
Выглядит на форме так же, как RadioGroup, и надпись в ее верхнем левом углу также определяется свойством Caption. Назначение панели — служить контейнером для других управляющих элементов, в частности, для радиокнопок RadioButton.
Задание 7: установите на форму компоненты, показанные на рисунке, и настройте их внешний вид, используя свойства, изученные выше.

Составитель: Салий Н.А.