Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 2 семестр.doc
Скачиваний:
42
Добавлен:
27.05.2015
Размер:
777.73 Кб
Скачать

4.2. Работа с переключателями

Переключатели (флажки) позволяют выбрать какое-либо значение из определенного множества. Они могут находиться во включенном (установленном) или выключенном (сброшенном) состояниях. Анализ состояния переключателя позволяет выполнять соответствующие операции.

Для работы с переключателями Delphi предоставляет компоненты CheckBox, RadioButton и RadioGroup. Классы компонентов CheckBox и RadioButton, как и кнопка Button, происходят от класса TButtonControl. Поэтому иногда эти переключатели называют кнопками с фиксацией: CheckBox – с независимой фиксацией, RadioButton – с зависимой фиксацией.

4.2.1. Переключатель с независимой фиксацией

Переключатель с независимой фиксацией CheckBox действует независимо от других подобных переключателей.

Свойство Checked типа Boolean определяет состояние переключателя. По умолчанию оно имеет значение False, и переключатель выключен.

Пример анализа состояния независимого переключателя:

If CheckBox1.Checked then MessageDlg ('Время истекло! ', mtError, [mbОк], 0);

Пример программного управления независимым переключателем (флажком):

CheckBox2.Checked := true;

СhесkВох3.Checked := false;

Флажок недоступен для изменения (заблокирован), когда свойство Enabled имеет значение False.

CheckBox1.Enabled := false;

Кроме двух состояний (включен – выключен) переключатель может иметь еще и третье состояние – запрещенное, или отмененное. Свойство AllowGrayed типа Boolean управляет наличием отмененного состояния. Если это свойство имеет значение True, то при щелчке мышью переключатель циклически переключается между тремя состояниями.

Свойство State типа TCheckBoxState служит для анализа и установки одного из трех состояний флажка:

cbChecked – переключатель включен;

cbUnchecked – переключатель не включен;

cbGrayed – переключатель запрещен.

При изменении состояния переключателя возникает событие OnClick, независимо от того, в какое состояние переходит переключатель. В обработчике события OnClick обычно располагаются операторы, выполняющие проверку состояния переключателя и осуществляющие требуемые действия.

Пример процедуры обработки события выбора независимого переключателя:

procedure TForm1.CheckBox3Click(Sender: TObject);

begin

саsе CheckBox3.State of

cbChecked: СhесkBох3.Caption := 'Переключатель включен';

cbUnChecked: СhесkВох3.Caption := 'Переключатель не включен';

cbGrayed: СhесkBох3.Caption : = 'Переключатель запрещен';

end;

end;

4.2.2. Переключатель с зависимой фиксацией

Переключатели с зависимой фиксацией (кнопки выбора) RadioButton обычно располагаются по отдельным группам, визуально выделенным на форме. Выбор переключателя является взаимно исключающим, то есть при выборе одного переключателя другие становятся невыбранными. Delphi поддерживает автоматическое группирование переключателей. Каждый переключатель, помещенный в контейнер (Form, Panel и GroupBox), включается в находящуюся на нем группу.

При работе с группой один из зависимых переключателей рекомендуется делать выбранным при проектировании формы или в процессе выполнения приложения. Например, это можно выполнить следующим образом: procedure TForm1.FormCreate (Sender: TObject);

begin

// Все переключатели расположены в разных группах

RadioButton2.Checked : =true;

RadioButton3.Checked := true;

end;

Для компонента RadioButton событие OnClick возникает только при выборе переключателя. Повторный щелчок на переключателе не приводит к возникновению события OnClick.

Специализированный компонент RadioGroup представляет собой группу переключателей RadioButton. Такая группа переключателей создана для упорядочения переключателей и упрощения организации их взаимодействия по сравнению с добавлением их вручную к обычной группе. Группа переключателей RadioGroup может содержать также другие элементы управления, например, независимый переключатель CheckBox или однострочный редактор Edit.

Cвойство Items типа TStrings управляет числом и названиями переключателей и позволяет получить доступ к отдельным переключателям в группе. Это свойство содержит строки, отображаемые как заголовки переключателей. Для манипуляции со строками (заголовками) можно использовать такие методы, как Add и Delete.

Доступ к отдельному переключателю можно получить через свойство ItemIndex типа Integer, содержащее позицию (номер) переключателя, вы- бранного в группе в текущий момент. Это свойство можно использовать для выбора отдельного переключателя или для определения, какой из переключателей является выбранным. По умолчанию свойство ItemIndex имеет значение -1, и не выбран ни один из переключателей.

Свойство Columns типа Integer задает число столбцов, на которое разбиваются переключатели при расположении в группе (по умолчанию 1). Это свойство действует только на переключатели, принадлежащие массиву Items, и не действует на другие управляющие элементы, например, однострочный редактор Edit или надпись Label, размещенные в группе RadioGroup.

Пример работы с группой переключателей:

procedure TForm1. FormCreate (Sender: TObject);

begin

RadioGroup1.Items.Clear;

RadioGroup1.Items.Add('Item 1');

RadioGroup1.Items.Add ('Item 2');

RadioGroup1.Items.Add('Item 3');

RadioGroup1.Columns := 2;

RadioGroup1.ItemIndex := 3;

end;