Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники 60105.doc
Скачиваний:
10
Добавлен:
01.05.2022
Размер:
827.9 Кб
Скачать
  1. Пример работы с независимыми переключателями

      1. Компоненты RadioButton и RadioGroup

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

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

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

Чтобы не добавлять вручную каждый переключатель, можно использовать компонент RadioGroup , представляющий собой группу переключателей.

Управление числом и названиями переключателей производится с помощью свойства Items типа TStrings, которое позволяет получить доступ к отдельным переключателям в группе. Это свойство содержит строки, отображаемые как заголовки переключателей. Отсчет строк в массиве начинается с нуля: Items[0], Items[1] и т. д. Для манипуляции со строками можно использовать такие методы, как Add и Delete.

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

Свойство Columns типа integer задает число столбцов, на которое разбиваются переключатели при расположении в группе (по умолчанию 1).

Например, пусть при создании формы в группу RadioGroup1 включается 6 переключателей, расположенных в две колонки; шестой переключатель становится выбранным:

// - - - - Object Pascal - - - -

procedure TForm1.FormCreate(Sender: TObject);

var

i: integer;

begin

for i := 1 to 6 do

RadioGroup1.Items.Add('Строка №' + IntToStr(i));

RadioGroup1.Columns := 2;

RadioGroup1.ItemIndex := 5;

end;

// - - - - - - - C++ - - - - - - -

void __fastcall TForm1::FormCreate(TObject *Sender)

{

for (int i = 0; i < 6; i++)

RadioGroup1->Items->Add("Строка ¹" + IntToStr(i));

RadioGroup1->Columns = 2;

RadioGroup1->ItemIndex = 5;

}

Результат работы программы приведен на рис. 13.

  1. Пример работы с группой зависимых переключателей

    1. Объединение элементов управления. Компонент Panel

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

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

В предыдущем разделе уже был рассмотрен специализированный компонент – контейнер RadioGroup, используемый для организации группы зависимых переключателей. Для различных объектов система Delphi предлагает также набор универсальных контейнеров (группа GroupBox, панель Panel, область с прокруткой ScrollBox, фрейм Frame).

Отметим, что форма также является контейнером, с которого обычно и начинается конструирование интерфейсной части приложения. Форма – владелец всех расположенных на ней компонентов.

Компонент Panel представляет собой контейнер, в котором можно размещать другие элементы управления.

Панель имеет край с двойной рамкой внутренней и внешней. Внутренняя рамка обрамляет панель, а внешняя отображается вокруг внутренней.

Ширина каждой рамки в пикселах задается свойством BevelWidth. По умолчанию ширина рамки равна 1.

Свойства BevelInner и BevelOuter определяют вид внутренней и внешней рамки, соответственно. Каждое из этих свойство может принимать следующие значения.

  • bvNone – фаска отсутствует;

  • bvLowered – фаска утоплена;

  • bvRaised – фаска приподнята.

По умолчанию свойство BevelInner имеет значение bvNone, а свойство BevelOuter – значение bvRaised.

Между рамками может быть промежуток, ширина которого в пикселах определяется свойством BorderWidth. По умолчанию ширина промежутка равна нулю – промежуток отсутствует.

Примеры различного оформления рамки с помощью свойство BevelInner, BevelOuter и BevelWidth приведены на рис. 14.

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