Главная » Уроки по ООП » Урок 11. Компоненты для работы со списками |
ЛЕКЦИЯ |
Урок 11. Компоненты для работы со списками
Компоненты ListBox и ComboBox отображают списки строк.
ListBox
Только отображает данные и позволяет пользователю выбрать из них то, что ему надо.
ListBox отображает список в раскрытом виде и автоматически добавляет в список полосы прокрутки, если все строки не помещаются в окне компонента.
Множественный выбор в компоненте ListBox
В компоненте ListBox имеется свойство MultiSelect, разрешающее пользователю множественный выбор в списке (на рис. это свойство установлено в true в среднем верхнем списке).

Если MultiSelect=false, то пользователь может выбрать только один элемент списка.
Свойство ItemIndex - индекс выбранной строки. Если ни одна строка не выбрана, то ItemIndex = -1. По умолчанию ItemIndex = -1. Это означает, что ни один элемент списка не выбран.
Если допускается множественный выбор, то значение ItemIndex соответствует тому элементу списка, который находится в фокусе. При множественном выборе проверить, выбран ли данный элемент, можно проверив свойство Selected[Index:Integer] типа Boolean.
Если ExtendedSelect=true, то пользователь может выделить интервал элементов, выделив один из них, затем нажав клавишу Shift и переведя курсор к другому элементу. Выделить не прилегающие друг к другу элементы пользователь может, если будет удерживать во время выбора нажатой клавишу Ctrl.
Если же ExtendedSelect=false, то клавиши Shift и Ctrl при выборе не работают.
Свойство Columns определяет число столбцов, в которых будет отображаться список, если он не помещается целиком в окне компонента ListBox.
ComboBox
не только отображает данные но и позволяет их редактировать.
ComboBox позволяет отображать список как в развернутом виде, так и в виде выпадающего списка, что обычно удобнее, так как экономит площадь окна приложения.
Стиль изображения этого компонента определяется свойством Style, которое может принимать следующие значения:
- csDropDown - выпадающий список с окном редактирования, позволяющим пользователю вводить или редактировать текст.
- csSimple - развернутый список с окном редактирования, позволяющим пользователю вводить или редактировать текст.
- csDropDownList - выпадающий список, не содержащий окна редактирования.
Выбор пользователя или введенный им текст можно определить по значению свойства Text.
Если же надо определить индекс выбранного пользователем элемента списка, то можно воспользоваться свойством ItemIndex.
Если в окне проводилось редактирование данных, то ItemIndex = -1. По этому признаку можно определить, что редактирование проводилось.
Общие свойства
Основное свойство обоих компонентов, содержащее список строк, — Items, имеющее тип TStrings. Заполнить его во время проектирования можно, нажав кнопку с многоточием около этого свойства в окне Инспектора Объектов. Во время выполнения работать с этим свойством можно, пользуясь свойствами и методами класса TStrings — Clear, Add и другими.
Сортировка списка
Свойство Sorted позволяет упорядочить список по алфавиту. При Sorted=true новые строки в список добавляются не в конец, а по алфавиту.
Свойство Style, установленное в lbStandard (значение по умолчанию) соответствует списку строк. Другие значения Style позволяют отображать в списке не только текст, но и изображения.
Список с индикаторами CheckListBox.
Выглядит он так же, как ListBox, но около каждой строки имеется индикатор, который пользователь может переключать. Индикаторы можно переключать и программно, если список используется для вывода данных и необходимо в нем отметить какую-то характеристику каждого объекта, например, наличие товара данного наименования на складе.
Все свойства, характеризующие компонент CheckListBox как список, аналогичны ListBox, за исключением свойств, определяющих множественный выбор. Эти свойства компоненту CheckListBox не нужны, поскольку в нем множественный выбор можно осуществлять установкой индикаторов.
Состояния индикаторов определяют два свойства: State и Checked. Оба эти свойства можно рассматривать как индексированные массивы, каждый элемент которого соответствует индексу строки. Эти свойства можно устанавливать программно или читать, определяя установки пользователя. Например, операторы
CheckListBox1.Checked[1]:= true;
CheckListBox1.State[2]:= cbGrayed;
устанавливают индикатор второй строки списка CheckListBox1 в состояние выбранного, а индикатор третьей строки — в промежуточное состояние (вспомним, что индексы начинаются с 0). Оператор
for i:=0 to CheckListBox1.Items.Count - 1 do
if CheckListBox1.Checked[i] then ...
проверяет состояние всех индикаторов списка, и для выбранных пользователем строк осуществляет какие-то действия (в приведенном операторе на месте этих действий просто поставлено многоточие).
В компоненте CheckListBox имеется также событие OnClickCheck, возникающее при каждом изменении пользователем состояния индикатора. Его можно использовать для обработки результатов изменения.
Задание 1
Рассмотреть свойства компонентов ListBox, ComboBox и CheckListBox, создав следующую форму.
Задание 2.
Установить на форму компоненты ListBox и ComboBox, два компонента Edit и кнопку. По нажатию на кнопку текст из первого Edit добавляется в список ListBox, а текст из второго Edit добавляется в список ComboBox.
Задание 3.
В предыдущем задании сделать так, чтобы текст, введенный в ComboBox по нажатию на кнопку добавлялся к нему в список.
Задачи для самостоятельного выполнения
Список группы. Составить программу, которая по нажатию на кнопку «Добавить в список» добавляет в список ListBox фамилию и имя, указанные в соответствующих Edit. Нажатие на кнопку «Удалить из списка» должно удалять из ListBox
Ход работы:
Расположите компоненты на форме (рис.1).
Рисунок 1.
В обработчик кнопки «Добавить с список» занесите следующий код:
ListBox1.Items.Add(Edit1.Text+' '+Edit2.Text);
Edit1.SetFocus;
В обработчик кнопки «Удалить из списка»:
ListBox1.Items.Delete(ListBox1.ItemIndex);
В обработчик кнопки «Очистить список»:
ListBox1.Items.Clear;
Запустите программу и создайте список из нескольких человек. Проверьте кнопки «Удаление из списка», «Очистить список».
Справочник цветов. Создать программу, которая позволяет из списка ListBox выбирать название цвета. В результате выбора на экране должно появляться название цвета в формате RGB. Примерный вид запущенного приложения показан на рисунке 2.
Рисунок 2.
Название цвета |
Формат RGB |
черный |
000000 |
белый |
FFFFFF |
красный |
FF0000 |
зеленый |
00FF00 |
бирюзовый |
00FFFF |
синий |
0000FF |
фиолетовый |
FF00FF |
желтый |
FFFF00 |
коричневый |
996633 |
оранжевый |
FF8000 |
лиловый |
8000FF |
серый |
А0А0А0 |
Выбор подарка. После запуска программы пользователь может сформировать список подарков для друзей. Выбирать подарки можно из списка «Подарки», после выбора подарка он отображается во втором списке «Выбранные подарки». С помощью кнопки «Добавить» можно добавить название подарка, которого нет в списке «Подарки», а с помощью кнопки «Удалить» - удалить выделенный подарок из списка «Выбранные подарки». Для отображения списков использовать компоненты ListBox. Добавить возможность сохранения списков в текстовый файл и предусмотреть загрузку из него, для чего использовать методы
ComboBox1.Items.SaveToFile(‘1.txt’) и ComboBox1.Items.LoadFromFile(‘1.txt’).
Тест по программированию. Составить программу, проверяющую знания основные операторов. Выбрав в списке «Оператор» (ListBox1) значение, далее пользователь должен выбрать его название во втором списке (ListBox2). Если выбрано правильное название, то выводится сообщение «Правильно», если неправильное, то – «Ошибка».
При правильном выборе название оператора должно удаляться в левом списке. Правильные названия должны искаться до тех пор, пока не будет получено соответствие всех операторов и их названий.
Рисунок 1
Словарь. Разработать программу для составления словаря новых терминов. Должна иметься возможность внесения в словарь изменений, дополнения или сокращения его. При выборе термина на контрольной панели должны появляться его номер и общее количество слов в словаре. Добавить возможность сохранения составленного списка терминов в текстовый файл и предусмотреть загрузку из него, для чего использовать методы
ComboBox1.Items.SaveToFile(‘1.txt’) //сохранение в файл
ComboBox1.Items.LoadFromFile(‘1.txt’) // загрузка из файла
Добавить также возможность регулировать доступ к редактированию словаря, при помощи компонента CheckBox (назвав его, например, «Только чтение»). Для изменения доступа использовать свойство Style компонента ListBox.
Проект «Стоимость заказа». Создайте программу, подсчитывающую стоимость заказа (рис.2). Результат подсчета должен выводится на Panel.
Подсказка: в обработчике события onClick компонента CheckListBox необходимо проверять все строки. Если строка выделена (стоит галочка), то нужно к общей стоимости прибавлять соответствующую сумму из ListBox. Для пробега по строкам использовать цикл For.
Рисунок 2
Составитель: Салий Н.А.