Лабораторная работа №Лабораторная работа № 5. Записная книжка.

Класс TCheckBox

Компонент CheckBox расположен на вкладке Standard:

Компонент CheckBox

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

Основное свойство для этого компонента - это свойство State. Оно может принимать три значения (именно три, а не два) - cbUnchecked (неотмеченное состояние), cbChecked (отмеченное состояние) и cbGrayed (серое состояние). Серое состояние выглядит так (обратите, кстати, внимание, что рядом с компонентом уже есть надпись. Она определяется свойством Caption):

Компонент CheckBox с серым состоянием

Компонент может иметь такое состояние тогда, когда про соответствующий ему параметр нельзя сказать, включен он или нет. Например, если параметр отвечает за то, не является ли выделенный фрагмент шрифта полужирным, то если часть выделенного текста полужирная, а часть - нет, то логично использовать именно такое состояние. Если же такого неопределенного значения у параметра быть не должно, то свойство AllowGrayed должно быть установлено в false (в этом случае при запуске программы при щелчке на CheckBox'е будут чередаваться только два состояния). Если же свойство AllowGrayed компонента установлено в true, то при щелчке на таком компоненте будут чередоваться все три состояния.

Еще одно свойство, показывающее состояние компонента - это свойство Checked. Оно равно true, если компонент отмечен, и false, если не отмечен (т. е. при этом его свойство State может принимать два значения - cbUnchecked и cbGrayed).

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

Класс TRadioButton

Компонент RadioButton расположен на вкладке Standard Палитры компонентов:

Компонент RadioButton

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

Форма с двумя RadioButton'ами

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

Компонент GroupBox

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

Форма с двумя группами RadioButton'ов

Класс TListBox

Экземпляр класса TListBox представляет собой список. Этот компонент расположен на вкладке Standard Палитры компонентов:

Компонент TListBox

Рассмотрим его основные свойства.

Наверное, самое основное свойство для списка - это Items. Тип у него - TStrings. Именно в нем и хранятся элементы нашего списка. Для заполнения списка нажмите на кнопку с многоточием рядом с названием этого свойство в Инспекторе объектов:

Свойство Items

Появится окно String List Editor, в котором можно печатать элементы нашего списка (разделяя их нажатием клавиши Enter):

Окно String List Editor

С элементами списка можно работать и программно. Для этого используем это же самое свойство 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:

Компонент TComboBox

У него, как и у списка (компонент TListBox) основное свойство - Items. Его тип - TStrings. Оно определяет список строк нашего компонента. Добавление элементов, их удаление, очистка всего содержимого combobox'а происходит точно так же, как и для компонента TListBox.

Выбранный пользователем элемент combobox'а можно определить с помощью свойства Text, а его номер - с помощью свойства ItemIndex (нумерация, как и у ListBox'а, начинается с нуля).

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

Стиль csSimple

У ComboBox'а, как и у ListBox'а есть свойство Sorted логического типа. И работает оно точно также.

Класс TLabel

Этот компонент используется для отображения различных надписей на формах. Иконка для него находится на панели Standard Палитры компонентов:

Компонент TLabel

Основное свойство для этого компонента - Caption. Именно оно и отвечает за надпись на нашем компоненте.

Вы можете задавать различные характеристики шрифта для нашего компонента (свойство Font). Для этого нажмите кнопочку с многоточием в строке со свойством Font Инспектора объектов.

У компонента TLabel имеется свойство AutoSize, которое отвечает за то, будет ли компонент автоматически изменять размер по горизонтали с изменением длины надписи. По умолчанию это свойство равно true. Еще имется свойство WordWrap. Если установить значение этого свойства в true, а значение свойства AutoSize в false, то при увеличении длины надписи происходит перенос слов на новую строчку.

Для компонента TLabel есть еще одно неочевидное применение, а именно его можно использовать для получения доступа по горячим клавишам (комбинации типа Alt+W) к элементам, не имеющим свойства Caption. Рассмотрим, например, как можно с помощью label'а получить доступ к Edit'у (полю для ввода). Для этого расположите на форме label и edit, оставив их имена по умолчанию. Измените свойство Caption для Label1 в &Wrap. Свойство же FocusControl для компонента Label1 установите в Edit1:

Свойство FocusControl

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

Edit1 получает фокус

Задание: Создать приложение – электронную записную книжку. Форма приложения должна иметь вид:

Должна обеспечиваться возможность добавлять, изменять, удалять записи из записной книжки. Причем, если номер телефона для человека с введенной фамилией уже существует, он изменяется, иначе в список заносится новая запись.