Радиокнопки 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 |


