Лабораторная работа №Лабораторная работа № 5. Записная книжка.
Класс TCheckBox
Компонент CheckBox расположен на вкладке Standard:

Этот компонент используется для включения/отключения некоторых параметром. При этом на форме может быть несколько CheckBox'ов, и каждый из них можно включать/отключать независимо от других.
Основное свойство для этого компонента - это свойство State. Оно может принимать три значения (именно три, а не два) - cbUnchecked (неотмеченное состояние), cbChecked (отмеченное состояние) и cbGrayed (серое состояние). Серое состояние выглядит так (обратите, кстати, внимание, что рядом с компонентом уже есть надпись. Она определяется свойством Caption):
![]()
Компонент может иметь такое состояние тогда, когда про соответствующий ему параметр нельзя сказать, включен он или нет. Например, если параметр отвечает за то, не является ли выделенный фрагмент шрифта полужирным, то если часть выделенного текста полужирная, а часть - нет, то логично использовать именно такое состояние. Если же такого неопределенного значения у параметра быть не должно, то свойство AllowGrayed должно быть установлено в false (в этом случае при запуске программы при щелчке на CheckBox'е будут чередаваться только два состояния). Если же свойство AllowGrayed компонента установлено в true, то при щелчке на таком компоненте будут чередоваться все три состояния.
Еще одно свойство, показывающее состояние компонента - это свойство Checked. Оно равно true, если компонент отмечен, и false, если не отмечен (т. е. при этом его свойство State может принимать два значения - cbUnchecked и cbGrayed).
Класс TRadioButton
Компонент RadioButton расположен на вкладке Standard Палитры компонентов:

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

При этом все RadioButton'ы в одном контейнере считаются принадлежащими одной группе. Если же вам надо организовать две или более независимых групп, то воспользуйтесь компонентом GroupBox на вкладке Standard:

Разместите на форме два компонента GroupBox, и поместите в каждый из них по две RadioButton'а (только размещать их надо не двойным щелчком на компоненте на Панели компонентов, а одинарным, с последующим щелчком внутри соответствующего GroupBox'а). Запустите программу. Теперь выбор между этими двумя группами можно производить независимо:

Класс TListBox
Экземпляр класса TListBox представляет собой список. Этот компонент расположен на вкладке Standard Палитры компонентов:
![]()
Рассмотрим его основные свойства.
Наверное, самое основное свойство для списка - это Items. Тип у него - TStrings. Именно в нем и хранятся элементы нашего списка. Для заполнения списка нажмите на кнопку с многоточием рядом с названием этого свойство в Инспекторе объектов:
![]()
Появится окно String List Editor, в котором можно печатать элементы нашего списка (разделяя их нажатием клавиши Enter):

С элементами списка можно работать и программно. Для этого используем это же самое свойство Items. Например, для добавления элемента в список можно воспользоваться методом Add:
ListBox1.Items. Add('Новый элемент');
, для очистки всего списка методом Crear:
ListBox1.Items. Clear;
Для удаления элемента из списка используется следующая конструкция:
ListBox1.Items. Delete(1);
Параметр в скобках (у нас это единица) - это номер удаляемого элемента. В нашем примере фактически удаляется второй элемент списка, так как их нумерация начинается с нуля.
Новые элементы по умолчанию добавляются в конец списка. Если нам надо добавить новый элемент списка на определенное место, то надо использовать конструкцию вида
ListBox1.Items. Insert(2,'Roman');
В данном примере новый элемент Roman вставится на второе место (с точки зрения пользователя это будет третье место, так как их нумерация начинается с нуля).
Свойство ItemIndex служит для определения выделенного в списке элемента (оно доступно как для чтения, так и для записи). Элементы списка нумеруются с нуля, так что если выделен, например, третий элемент, то значение этого свойства равно 2. Если ни один элемент списка не выделен, то значение свойства ItemIndex равно -1. Вот так, например, можно снять выделение с элемента списка:
ListBox1.ItemIndex:=-1;
Свойство списка MultiSelect определяет, можно ли выделять несколько элементов списка одновременно. Если оно равно false (значение по умолчанию), то выделять несколько элементов нельзя, а если true, то можно:

Свойство Sorted определяет, сортируются ли элементы списка. По умолчанию оно равно false, и если установить его в true, то список будет отсортирован и новые элементы будут вставляется не в конец, а в соответствующее сортировке место.
Имеется еще много разных свойств, их мы будем рассматривать в последующих уроках.
Класс TComboBox
ComboBox представляет собой комбинацию Edit'а и ListBox'а. Иконка для него находится на панели Standard:

У него, как и у списка (компонент TListBox) основное свойство - Items. Его тип - TStrings. Оно определяет список строк нашего компонента. Добавление элементов, их удаление, очистка всего содержимого combobox'а происходит точно так же, как и для компонента TListBox.
Выбранный пользователем элемент combobox'а можно определить с помощью свойства Text, а его номер - с помощью свойства ItemIndex (нумерация, как и у ListBox'а, начинается с нуля).
У ComboBox'а можно выбрать один из предопределенных стилей, которые определяются свойством Style. Значение стиля по умолчанию - csDropDown. При таком стиле вы можете выбирать значение из списка нашего combobox'а и впечатывать его сами. Еще одно возможное значение - csDropDownList. В этом случае пользователь сможет выбирать только те значения, которые есть в списке, другое же значение он впечатать в combobox не сможет. Это два самых распространенных значения для стиля. Иногда используется стиль csSimple. В этом случае наш combobox будет выглядеть приблизительно так (т. е. выпадающий список превратится в нечто, напоминающее ListBox):

У ComboBox'а, как и у ListBox'а есть свойство Sorted логического типа. И работает оно точно также.
Класс TLabel
Этот компонент используется для отображения различных надписей на формах. Иконка для него находится на панели Standard Палитры компонентов:
![]()
Основное свойство для этого компонента - Caption. Именно оно и отвечает за надпись на нашем компоненте.
Вы можете задавать различные характеристики шрифта для нашего компонента (свойство Font). Для этого нажмите кнопочку с многоточием в строке со свойством Font Инспектора объектов.
У компонента TLabel имеется свойство AutoSize, которое отвечает за то, будет ли компонент автоматически изменять размер по горизонтали с изменением длины надписи. По умолчанию это свойство равно true. Еще имется свойство WordWrap. Если установить значение этого свойства в true, а значение свойства AutoSize в false, то при увеличении длины надписи происходит перенос слов на новую строчку.
Для компонента TLabel есть еще одно неочевидное применение, а именно его можно использовать для получения доступа по горячим клавишам (комбинации типа Alt+W) к элементам, не имеющим свойства Caption. Рассмотрим, например, как можно с помощью label'а получить доступ к Edit'у (полю для ввода). Для этого расположите на форме label и edit, оставив их имена по умолчанию. Измените свойство Caption для Label1 в &Wrap. Свойство же FocusControl для компонента Label1 установите в Edit1:

Компилируйте проект (F9) и нажимайте Alt+W. Поле для редактирования Edit1 получит фокус:




