Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
osnovy_programmirovanija_v_srede_lazarus.pdf
Скачиваний:
187
Добавлен:
18.03.2015
Размер:
6.53 Mб
Скачать

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

procedure TForm1.Button1Click(Sender: TObject); begin

if ComboBox1.ItemIndex = - 1 then ComboBox1.Items[oldItemIndex]:= ComboBox1.Text;

end;

procedure TForm1.Button2Click(Sender: TObject); begin

if ComboBox1.ItemIndex = - 1 then ComboBox1.Items.Add(ComboBox1.Text);

end; initialization

{$I unit1.lrs} end.

Компоненты выбора – переключатели

Эта группа компонентов реализуют такие элементы графического интер-

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

состояний и т.д. Таким образом, в этих компонентах, в отличие от таких ком-

понентов как TListBox и TComboBox, производится выбор не данных как та-

ковых, а каких-то свойств и характеристик объектов, используемых в приложе-

нии. Выбор пользователя в этих компонентах подразумевает ответ пользовате-

ля типа "Да", "Нет". Рассмотрим компонент TCheckBox.

Этот компонент реализует элемент графического интерфейса флажок.

Применяется также термин индикатор. Многие программисты говорят также просто "чек бокс". Обычно в диалоговом окне присутствуют несколько флаж-

ков. Состояние каждого флажка не зависит от других флажков, поэтому часто употребляется термин группа независимых переключателей, рис. 6.68.

638

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

Рис. 6.68. Вид компонента TCheckBox

Основные свойства компонента:

State – компонент TCheckBox может находиться в общем случае в трех состояниях:

1.Флажок выбран, в окошке компонента стоит галочка. Этому состоянию соответствует значение State=cbChecked;

2.Флажок не выбран, в окошке компонента галочка отсутствует. Этому со-

стоянию соответствует значение State=cbUnchecked;

3. Флажок выбран, в окошке компонента стоит галочка. Но само окошко и галочка серого цвета. Этому состоянию соответствует значение

State=cbGrayed; Это, так называемое, промежуточное состояние. Чаще всего применяется в тех случаях, когда тот или иной режим, та или иная оп-

ция должна быть обязательно выбрана (задействована), но так, чтобы поль-

зователь был проинформирован об этом. Очень часто это состояние исполь-

зуется в комбинации со свойством Enabled=false, т.е. данная опция ав-

томатически установлена, пользователь об этом знает, но менять эту опцию нельзя.

AllowGrayed – разрешает или не разрешает применение состояния

State=cbGrayed. Если AllowGrayed= false (значение по умолчанию), то возможны только два состояния, флажок выбран и флажок не выбран;

Checked – если Checked = true, то флажок выбран. Значение State= cbChecked. Если же Checked = false, то State равен либо cbUnchecked, либо cbGrayed;

639

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

Caption – задает текст, связанный с флажком;

Для того чтобы определить выбран флажок или нет достаточно записать

оператор

if CheckBox1.Checked then <действия, если флажок выбран> else <действия, если флажок не выбран>;

или

case CheckBox1.State of

cbChecked: < соответствующие действия >; cbUnchecked: < соответствующие действия >; cbGrayed: < соответствующие действия >;

end;

Рассмотрим компонент, реализующий переключатель TRadioButton,

рис. 6.69. Говорят также радиокнопка или зависимый переключатель.

Рис. 6.69. Вид компонента TRadioButton

Следует заметить, что использование одного переключателя не имеет смысла, поскольку механизм переключателей предназначен для организации выбора пользователем только одного из нескольких возможных режимов (оп-

ций, свойств и т.д.). Поэтому необходимо использование как минимум двух компонентов TRadioButton. Свойства компонента:

640

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

Checked – определяет включен или не включен переключатель. Если переключатель включен, то он отмечается точкой внутри кружочка, а

Checked= true;

Caption – задает текст надписи рядом с кнопкой.

Обычно компоненты TRadioButton размещаются в специальном компо-

ненте-контейнере (об этом чуть позже), но можно положить их и на форму. Как только вы разместите несколько компонентов TRadioButton на форму, они начинают функционировать как единая группа переключателей. Т.е. даже на этапе проектирования вы не сможете установить Checked= true одновре-

менно нескольким радиокнопкам, а можете установить это свойство равным true только у одного переключателя!

Для удобной работы с группами компонентов TCheckBox и TRadioButton существуют специальные контейнеры TCheckGroup и TRadioGroup. Контейнер это такой компонент, на котором можно размещать другие компоненты. Иначе их еще называют панелями, рис. 6.70.

Рис. 6.70. Компоненты-контейнеры TCheckGroup и TRadioGroup

Общие свойства контейнеров TCheckGroup и TRadioGroup:

Caption – текст заголовка панели;

641

6.3 Визуальное программирование в среде Lazarus

____________________________________________________________________

Columns – задает количество столбцов. На рис. 6.70. панель CheckGroup1

содержит два столбца, а панель RadioGroup1 состоит из одного столбца;

ColumnLayout – задает способ размещения дочерних компонентов в столбцах. Имеет значения: clHorizontalThenVertical – компоненты размещаются по горизонтали, clVerticalThenHorizontal – компоненты размещаются по вертикали. На рисунке флажки размещены по горизонтали;

Items – содержит список строк типа TStrings с текстами заголовков со-

ответствующих компонентов. Строки можно формировать как при проектиро-

вании, так и программно. При проектировании необходимо раскрыть редактор строк Items и ввести необходимые строки. Сколько было введено строк,

столько и будет создано переключателей или флажков. Доступ к тексту флажка или переключателя осуществляется по индексу Items[k], индексы как обыч-

но начинаются с нуля.

Определение того, какой элемент пользователь выбрал в компонентах

TCheckGroup и TRadioGroup различаются. Так в TCheckGroup использу-

ется свойство Checked[k], где k индекс флажка. Например:

if CheckGroup1.Checked[k]

then ShowMessage('Выбран флажок ' + IntToStr(k + 1));

В TRadioGroup для этих же целей можно использовать свойство ItemIndex, которое указывает индекс выбранного переключателя, например:

with RadioGroup1 do begin

k:= ItemIndex + 1; case ItemIndex of

0:ShowMessage('Выбран переключатель ' + IntToStr(k));

1:ShowMessage('Выбран переключатель ' + IntToStr(k));

642

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

2: ShowMessage('Выбран переключатель ' + IntToStr(k));

else

ShowMessage('Не выбран ни один переключатель');

end;

end;

По умолчанию ItemIndex= -1. Это означает, что ни один переключа-

тель не выбран. Чтобы программно или при проектировании указать выбран-

ный переключатель достаточно ItemIndex присвоить значение из допусти-

мого диапазона.

В рассмотренных нами контейнерах TCheckGroup, TRadioGroup рас-

положение переключателей и флажков формируется автоматически самим кон-

тейнером. Иногда бывает удобнее применить другой контейнер, а именно

TGroupBox, где можно более рационально использовать площадь контейнера.

Кроме того, в TGroupBox можно размещать любые компоненты. Разница от рассмотренных ранее специальных контейнеров TCheckGroup,

TRadioGroup заключается в том, что необходимо использовать компоненты

TCheckBox и TRadioButton.

Внешний вид рассмотренных компонентов приведен на рис. 6.71.

Рис. 6.71. Компонент-контейнер TGroupBox

643

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]