Радиокнопки RadioButton могут размещаться не только в панели GroupBox, но и в любой панели другого типа, а также непосредственно на форме. Группа взаимосвязанных кнопок в этих случаях опре­деляется тем оконным компонентом, который содержит кнопки. В частности, для радиокнопок, разме­щенных непосредственно на форме, контейнером является сама форма. Таким образом, все кнопки, раз­мещенных непосредственно на форме, работают как единая группа, т. е. только в одной из этих кнопок можно установить значение Checked в true.

Примеры:

if radioGroup1.ItemIndex=2 then Label1.Caption:='Вы сделали правильный выбор!';

if RadioButton2.Checked then x:=2;

15. Применение индикаторов CheckBox и CheckListBox, их свойства

Индикаторы с флажком CheckBox используются в приложениях в основном для того, чтобы пользователь мог включать и выключать какие-то опции, или для индикации состояния. При каждом щелчке пользователя на индикаторе его состояние изменяется, проходя в об­щем случае последовательно через три значения: выделение (появление черной галочки), промежуточ­ное (серое окно индикатора и серая галочка) и не выделенное (пустое окно индикатора). Этим трем со­стояниям соответствуют три значения свойства компонента State: cbChecked, cbGrayed, cbUnchecked. Впрочем, эти три состояния допускаются только при значении другого свойства AllowGrayed равном true. Если же AllowGrayed = false (значение по умолчанию), то допускается только два состояния: вы­деленное и не выделенное. И State, и AllowGrayed можно устанавливать во время проектирования или программно во время выполнения.

НЕ нашли? Не то? Что вы ищете?

Промежуточное состояние обычно используется, если индикатор применяется для отображения ка­кой-то характеристики объекта. Например, если индикатор призван показать, какой регистр использо­вался при написании какого-то фрагмента текста, то в случае, если весь текст написан в верхнем регист­ре индикатор может принимать выделенное состояние, если в нижнем — не выделенное, а если исполь­зовались оба регистра — промежуточное.

Проверять состояние индикатора можно не только по значению State, но и по значению свойства Checked. Если Checked равно true, то индикатор выбран, т. е. State = cbChecked. Если Checked равно false, то State равно cbUnchecked или cbGrayed. Установка Checked в true во время проектирования или выполнения автоматически переключает State в cbChecked.

Как и в радиокнопке, в индикаторе CheckBox надпись задается свойством Caption, а ее размещение по отношению к индикатору — свойством Alignment.

Еще один компонент, имеющий индикаторы — список CheckListBox. Это аналог рассмотренного компонента ListBox, но около каждой строки списка имеется индикатор, состояние кото­рого пользователь может изменять. Свойства, общие у CheckListBox и ListBox, мы рассматривать не бу­дем. А состоя­ния индикаторов определяют два свойства: State и Checked. Оба эти свойства можно рассматривать как индексированные массивы, каждый элемент которого соответствует индексу строки. Эти свойства мож­но устанавливать программно или читать, определяя установки пользователя. Например, операторы

CheckListBoxl. Checked[1]:=true;

CheckListBoxl. State[2]:=cbGrayed;

устанавливают индикатор второй строки списка CheckListBoxl в состояние выбранного, а индикатор третьей строки — в промежуточное состояние (вспомним, что индексы начинаются с 0).

Оператор for i:=0 to CheckListBoxl. Items. Count — 1 do if CheckListBoxl. Checked[i] then...

проверяет состояние всех индикаторов списка, и для выбранных пользователем строк осуществляет ка­кие-то действия (в приведенном операторе на месте этих действий просто поставлено многоточие).

В компоненте CheckListBox имеется также событие OnClickCheck, возникающее при каждом изме­нении пользователем состояния индикатора. Его можно использовать для обработки результатов изме­нения.

16. Операторы цикла. Работа с массивами. Компонент StringGrid

Операторы цикла обеспечивает циклическое повторение некоторого оператора (в частности, составного оператора). Повторяемый оператор называется телом цикла. Тело цикла повторяется или заданное число раз, или число повторений определяется выполнением некоторого условия. Имеется три оператора цикла: for, repeat и while.

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

for <счетчик>:=<начальное значение> to <конечное значение>  do <оператор>;

for <счетчик>:=<начальное значение> downto <конечное значение>  do <оператор>;

<счетчик> - локальная управляющая переменная порядкового типа. В начале выполнения оператора for ей присваивается <начальное значение>. После каждого очередного выполнения тела цикла <оператор> ее значение увеличивается (в первой форме с to) или уменьшается (во второй форме с downto) на единицу. Когда значение управляющей переменной достигает значения <конечное значение>, тело цикла выполняется последний раз, после чего управление передается оператору, следующему за структурой for.

Пример: Следующие операторы вычисляют максимальное значение элементов, расположенных в массиве Data:

Max:=Data[1];

for I := 2 to 63 do

  if Data[I] > Max then Max := Data[I];

Структура repeat...until используется для организации циклического выполнения совокупности операторов, называемой телом цикла, до тех пор, пока не выполнится некоторое условие. Синтаксис управляющей структуры repeat...until:

repeat

  <операторы тела цикла>

until <выражение условия>;

Структура работает следующим образом. Выполняются операторы тела цикла. Затем вычисляется <выражение условия>, которое должно возвращать результат булева типа. Если выражение возвращает false, то повторяется выполнение операторов тела цикла и после этого снова вычисляется выражение. Такое циклическое повторение цикла продолжается до тех пор, пока проверяемое выражение не вернет true. После этого цикл завершается и управление передается оператору, следующему за структурой repeat...until.

Структура while...do используется для организации циклического выполнения оператора, называемого телом цикла, пока выполняется некоторое условие. Синтаксис управляющей структуры while...do:

while <выражение условия> do <оператор>;

Структура работает следующим образом. Сначала вычисляется <выражение условия>, которое должно возвращать результат булева типа. Если выражение возвращает true, то выполняется оператор тела цикла, после чего опять вычисляется выражение, определяющее условие. Такое циклическое повторение выполнения оператора и проверки условия продолжается до тех пор, пока условие не вернет false. После этого цикл завершается и управление передается оператору, следующему за структурой while...do.

В некоторых случаях желательно прервать повторение цикла, проанализировав какие-либо условия  внутри него. Для этого могут использоваться операторы Break, Exit, Abort.

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

Var <имя массива>: array [<ограниченный тип>] of <тип элементов>;

Например: var A: array [1..10] of integer; - объявляет массив с именем А, содержащий 10 целых чисел. Доступ к элементам этого массива осуществляется выражением A[i], где I – индекс элемента.

Можно объявлять и многомерные массивы, т. е. массивы, элементами которых являются массивы. Например, двумерный массив можно объявить таким образом:

Var a: array [1..10, 1..3] of string; - этот оператор описывает двумерный массив строк, который можно представить себе как таблицу, состоящую из 10 строк и 3 столбцов.

Для работы с массивами может использоваться компонент StringGrid, представляющий собой таблицу, содержащую строки. Элементы ячеек имеют строковый тип String. Основные свойства:

Cells[Col, Row] – строка содержащаяся в ячейке с индексами столбца (Col) и строки (Row).

Cols[Index] – список строк, содержащихся в столбце с индексом Index.

Rows[Index] – список строк, содержащихся в строке с индексом Index.

ColCount, RowCount – определяет соответственно число столбцов и число строк.

FixedCols, FixedRows –число фиксированных, не прокручиваемых столбцов и строк.

Options – определяет множество дополнительных свойств таблицы: наличие разделительных вертикальных и горизонтальных линий в фиксированных (goFixedVertLine, goFixedHorzLine) и не фиксированных (goVertLine, goHorzLine) ячейках, возможность для пользователя изменять с помощью мыши размеры столбцов и строк (goColMoving, goRowMoving) и многое другое. Важным элементов является goEditing - возможность редактировать содержимое таблицы.

В качестве примера работы с компонентом StringGrid рассмотрим следующую программу. При нажатии на кнопку «Заполнить» устанавливается нужное количество строк и столбцов, затем заполняются фиксированные ячейки таблицы данными. Для этого используется следующая процедура:

StringGrid1.ColCount:=4;

StringGrid1.RowCount:=7;

StringGrid1.Cells[0,0]:='Фамилия';

StringGrid1.Cells[1,0]:='Начислено';

StringGrid1.Cells[2,0]:='Удержано';

StringGrid1.Cells[3,0]:='К выдаче';

StringGrid1.Cells[0,1]:='Иванов';

StringGrid1.Cells[0,2]:='Петров';

StringGrid1.Cells[0,3]:='Сидоров';

StringGrid1.Cells[0,4]:='Степанова';

StringGrid1.Cells[0,5]:='Муравьева';

StringGrid1.Cells[0,6]:='Итого:';

После ввода пользователем начисленных и удержанных сумм при нажатии кнопки «Вычислить» вычисляются значения последней строки и последнего столбца. Это осуществляется следующими командами:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9