Компонент RadioGroup

Этот компонент также имеет вид панели и предназначен для группировки так называемых радиокнопок. Включенной может быть лишь одна такая радиокнопка. На рисунке 7.1 в правой части формы вы видите такую панель с установленными радиокнопками. Добавьте компонент RadioGroup на форму, в свойстве Caption установите текст "BorderStyle", не забывая про пробелы до и после текста. Устанавливать на этой панели радиокнопки значительно легче, чем кнопки CheckBox. Выделите эту панель и дважды щелкните по ее свойству Items. Откроется редактор текста, такой же, как у Memo. В этом редакторе нужно написать названия кнопок, каждую кнопку обязательно нужно писать на отдельной строке. Напишите следующие кнопки:

bsSizeable

bsDialog

bsNone

bsSingle

bsSizeToolWin

bsToolWindow

Как только вы нажмете "ОК" и закроете редактор, на панели RadioGroup появятся описанные кнопки. Ни одна из них не имеет включенного вида. Мы уже знаем, что можно включить только одну такую кнопку из списка. Компонент RadioGroup имеет свойство ItemIndex, которое указывает, какая кнопка в данный момент включена. По умолчанию, ItemIndex равен -1. Поскольку нумерация кнопок начинается с нуля, значение -1 означает, что ни одна кнопка не включена. Установите значение 0, включив тем самым первую кнопку (на форме одноименное свойство включено по умолчанию).

Ниже установите кнопку, написав на ней слово "Применить". Все, с дизайном окончено, переходим к программированию кнопки. Если вы еще не сохранили проект в новую папку, сделайте это сейчас. Свойству Name формы, как обычно, дайте имя fMain, модулю – просто Main, всему проекту в целом – FormViewer.

Вернемся к кнопке. Щелкните дважды по ней, создав процедуру обработки нажатия кнопки.

Процедура имеет следующий вид:

procedure TfMain.Button1Click(Sender: TObject);

begin

//обрабатываем компонент BorderIcons

if CheckBox1.Checked then fMain.BorderIcons:= fMain.BorderIcons + [biSystemMenu]

else fMain.BorderIcons:= fMain.BorderIcons - [biSystemMenu];

if CheckBox2.Checked then fMain.BorderIcons:= fMain.BorderIcons + [biMinimize]

else fMain.BorderIcons:= fMain.BorderIcons - [biMinimize];

if CheckBox3.Checked then fMain.BorderIcons:= fMain.BorderIcons + [biMaximize]

else fMain.BorderIcons:= fMain.BorderIcons - [biMaximize];

if CheckBox4.Checked then fMain.BorderIcons:= fMain.BorderIcons + [biHelp]

else fMain.BorderIcons:= fMain.BorderIcons - [biHelp];

//обрабатываем компонент BorderStyle

case RadioGroup1.ItemIndex of

0: fMain.BorderStyle:= bsSizeable;

1: fMain.BorderStyle:= bsDialog;

2: fMain.BorderStyle:= bsNone;

3: fMain.BorderStyle:= bsSingle;

4: fMain.BorderStyle:= bsSizeToolWin;

5: fMain.BorderStyle:= bsToolWindow;

end; //case

end;

Разберемся с кодом. Вначале мы обрабатываем первый флажок CheckBox:

if CheckBox1.Checked then fMain.BorderIcons:= fMain.BorderIcons + [biSystemMenu]

else fMain.BorderIcons:= fMain.BorderIcons - [biSystemMenu];

Если этот флажок включен, его свойство Checked вернет Истину, и тогда к свойству формы BorderIcons будет добавлена константа [biSystemMenu]. О константах, в том числе и встроенных, мы будем говорить позднее. Пока что важно одно – если мы прибавляем эту константу, то включаем это значение в свойство BorderIcons.

Пример взят из встроенного справочника Delphi. Поставьте мигающий курсор внутри слова BorderIcons и нажмите <Ctrl + F1>. Выйдет контекстный справочник с этой командой. Если вам будет предложено выбрать между CLX и VCL, выбирайте последнюю (Visual Components Library – Библиотека визуальных компонентов). Далее щелкните по ссылке "Delphi example " (Пример для Delphi). В показанном в справке примере отключается кнопка "Развернуть окно".

Таким же образом, мы обрабатываем остальные три компонента CheckBox.

Далее, идет обработка панели RadioGroup. Поскольку только одна кнопка может быть включена, то свойство ItemIndex этой панели может иметь только 6 значений, по количеству кнопок: от 0 до 5. Здесь удобней всего использовать конструкцию case. В зависимости от значения ItemIndex мы присваиваем одноименное включенной кнопке значение свойству BorderStyle формы. Вот и все.

Сохраните пример, скомпилируйте и посмотрите, как работает программа. В зависимости от выбранных значений после нажатия кнопки "Применить" меняется внешний вид формы. В некоторых случаях ее размеры можно менять, раздвигая мышью, в некоторых – нет. В случае, если BorderStyle равен значению bsNone, пропадает и оборка окна, и верхняя системная строка формы. Поэкспериментируйте. Эта утилита может оказаться полезной в дальнейшем, если вы желаете заранее посмотреть, какие настройки выбрать, чтобы окно вашей программы выглядело именно так. Например, чтобы нельзя было менять его размеры, чтобы отсутствовали кнопки "Свернуть" и "Развернуть" и т.п.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: