Тема: Использование компонентов списков и выпадающих списков.
Цель лабораторной работы – Научиться использовать компоненты списки и выпадающие списки.
Студенты должны научиться:
- Настраивать кнопки
- Использовать кнопки
- Применять кнопки
Теоретический материал
ListBox – обычный список, этот компонент предназначен для работы с перечнем текстовых элементов (с ограничением по количеству до ~5000 шт). Перечень можно создавать (в том числе загружать как строки из текстового файла), преобразовывать и выгружать в файл. Элементы списка могут быть выбраны с помощью клавиатуры или мыши. Классический пример использования ListBox в среде Windows – выбор файла из списка в пункте меню File/Open многих приложений.
Основное свойство списка – Items (массив строк), оно аналогично свойству Lines для компонента Memo. Индекс выбранного элемента списка хранится в переменной ItemIndex. Методы Add, Delete, Insert используются для добавления, удаления и вставки строк.
Свойство Sorted=True упорядочивает список по возрастанию кода символов строк. ItemHeight – вертикальный размер элементов, Columns – число колонок в списке, ExtendedSelect – возможность множественного выбора элементов (при удержании Shift), при этом для выбранных элементов свойство Selected[номер] равно True.
ComboBox – комбинированный список, дополнительно к обычному включает строку ввода. Из нескольких типов ComboBox наиболее популярен спадающий вниз (drop-downcombobox).
Задание 1
- Создать программу, выполняющую следующие действия. После запуска программы пользователь выбирает с помощью стрелок на клавиатуре название цвета и нажимает клавишу Enter. На экране появляется название цвета на русском языке и код в формате Программа заканчивает свою работу по нажатию клавиши «Выход».
- Разработать интерфейс приложения согласно изображению. В свойстве Kind компонента BitBtn поставить значение bkClose.
- Выделите объект ListBox1, найдите свойство Items, щелкните на кнопке с тремя точками, расположенной справа от него. В появившемся окне встроенного редактора String List Editor введите названия цветов, каждый на новой строке.
Пояснение: а) Свойство Items содержит элементы списка.
б) Список может быть создан при создании формы или во время работы программы.
в) Свойство ItemIndex определяет номер элемента, выбранного из списка. Первый элемент имеет номер 0. Если не выбран ни один из элементов, то значение свойства ItemIndex равно – «-1».
- В обработчике события OnKeyPress компонента ListBox1прописать следующий код:
if key=#13 then Case Listbox1.ItemIndex of
0: Label3.Caption:=’черный 000000’;
1: Label3.Caption:=’белый FFFFFF’;
2: Label3.Caption:=’красный FF0000’;
3: Label3.Caption:=’зеленый 00FF00’;
4: Label3.Caption:=’бирюзовый 00FFFF’;
5: Label3.Caption:=’синий 0000FF’;
6: Label3.Caption:=’фиолетовый FF00FF’;
7: Label3.Caption:=’желтый FFFF00’;
8: Label3.Caption:=’коричневый 996633’;
9: Label3.Caption:=’оранжевый FF8000’;
10: Label3.Caption:=’лиловый FF0008’;
11: Label3.Caption:=’серый 999999’;
end;
- Сохраните проект окончательно, запустите и протестируйте его.
Задание для самостоятельного выполнения
- Измените шрифт, цвет экрана и букв.
Подсказка. Возможно, придется в коде программы подкорректировать количество пробелов между названием цвета и его кодом.
- Сделайте так, чтобы при установке курсора мыши в поле ListBox1, появлялась подсказка о том, что надо сделать.
Подсказка. Воспользуйтесь свойствами Hint (текст сообщения), Showhint (показывать ли сообщение) объекта ListBox1.
- Внести изменения в программу, чтобы для надписей «Цвет» и «Формат RGB» использовались два отдельных объекта Label.
- Сделайте так, чтобы выбор цвета в окне ListBox1 осуществлялся ни только по нажатию клавиши Enter, но и при щелчке мыши.
Подсказка. Для компоненты ListBox1 в обработчике события OnClick вставить те же действия, которые описаны в п.4 Плана разработки программы.
- Сделайте так, чтобы цвет текста, выводимого на Label3, соответствовал названию цвета.
Задание 2
- Создадим типовой проект с компонентом ListBox. Увеличив форму Задание 1.
- На форме кроме списка разместим ряд кнопок (или пунктов меню), а также две строки ввода Edit1, Edit2 и 3 метки Label.
По выбору пунктов организуем следующие операции со списком:
- Загрузка строк из файла, имя которого предварительно набирается в строке ввода (пункт “файл”)
Listbox1.Items.LoadFromFile(Edit1.Text)
- Сортировка списка (пункт “сортировать”):
Listbox1.Sorted:=true
- Запись списка в файл, имя которого предварительно набирается в строке ввода (пункт “сохранить как”):
Listbox1.Items.SaveToFile(Edit2.Text);
MessageDlg(‘Созданфайл ‘+Edit2.Text,mtInformation,[mbOK],0)
- Загрузка списка экранных шрифтов (пункт “шрифт”):
Listbox1.Items:=Screen.Fonts
- Добавление случайного числа в список с соблюдением сортировки, если она задана (пункт “добавить”)
var s: string;
begin
str(random:10:8,s); { генерация случайного числа }
ListBox1.Items.Add(s) ;
end;
- Добавление числа в нужное место списка (пункт “вставить”)
var s: string;
begin
str(random:10:8,s); { генерацияслучайногочисла }
ListBox1.Items.Insert(ListBox1.ItemIndex,s);
end;
- Удаление выбранного элемента списка (пункт “удалить”)
ListBox1.Items.Delete(ListBox1.ItemIndex)
- Выведем некоторые характеристики выбранного элемента на метках:
var code: integer; a: real;
begin
Label2.Caption:= ListBox1.Items[ListBox1.ItemIndex];
Val(Label2.Caption,a,code);
If code=0 then Label1.Caption :=’число’
else Label1.Caption :=’строка’;
end;
Задание 3
- Разработать приложение в соответствии с вариантом задания приведенном в таблице
1 | «Учет книг». По выбранному из списка автору на экран должен выводиться список книг данного автора. |
2 | «Аэрофлот». По выбранному из списка названию города на экран должен выводиться список номеров рейсов. |
3 | «Семена». По выбранному из списка виду растения на экран должен выводиться список названий сортов этого вида растений. |
4 | «Картотека фильмов». По выбранному из списка жанру фильма на экран должен выводиться список фильмов относящихся к данному жанру. |
5 | «Поставщики». По выбранному названию фирмы поставщика товаров на экран должен выводиться список товаров поставляемых данной фирмой. |
6 | «Расписание». По выбранному из списка дню недели на экран должно выводиться расписание занятий группы на выбранный день. |
7 | «Группа». По выбранному из списка номеру группы на экран должен выводиться список выбранной группы. |
8 | «Рецепт». По выбранному из списка названию блюда на экран должен выводиться список продуктов необходимых для приготовления данного блюда |
- Примерный вид приложения на рисунке:На форме расположить: Memo, ComboBox, BitBtn, Button. Выбор заданного параметра производить из компонента Выбранные данные должны отображаться в компоненте Memo.
Домашняя работа
Вариант | Задание |
1 | Создать приложение, в котором организовано взаимодействие двух списков. При запуске первый список заполняется названиями месяцев, а второй список очищается. Оба списка допускают множественный выбор элементов. При нажатии кнопок «®» и «¬» выбранные элементы одного списка перемещаются в другой. |
2 | Организовать программную прорисовку элементов списка. Для выделенных элементов отображается рисунок, загруженный из одного файла, а для невыделенных – из другого. Выделенные элементы дополнительно отмечаются желтым цветом символов на синем фоне. |
3 | Написать приложение, которое помогает получить любую информацию об успеваемости группы студентов. На первой форме расположено текстовое поле и список. В поле заносится фамилия студента и оценка, полученная на экзамене. Введенная информация добавляется в качестве очередной записи в список. На второй форме расположены два списка: комбинированный и простой. В комбинированном списке находятся оценки, полученные студентами на экзамене. При выборе оценки, во втором списке отображаются фамилии студентов, получивших данную оценку. |
4 | Написать приложение, которое помогает получить любую информацию о репертуаре кинотеатров. На первой форме расположено текстовое поле и список. В поле заносится название кинотеатра и фильм. Введенная информация добавляется в качестве очередной записи в список. На второй форме расположены два списка: комбинированный и простой. В комбинированном списке находятся названия кинотеатров. При выборе кинотеатра во втором списке отображаются фильмы, которые идут в нем. |
5 | Написать приложение, которое позволяет работать со списком товаров. На форме расположено текстовое поле, в которое вводится название товара. Введенный товар помещается в список всех товаров только в том случае, если там такого товара не существовало. Кнопка «Удалить» позволяет удалять выбранные товары из списка. Кнопка «Результат» помещает все выбранные товары на метку, расположенную на форме. |
6 | Написать приложение, которое позволяет работать со списком растений цветочного магазина. На форме расположено текстовое поле, в которое вводится название растения. Введенный цветок помещается в список всех растений только в том случае, если там такого растения не существовало. Кнопка «Удалить» позволяет удалять выбранные растения из списка. Кнопка «Результат» помещает все выбранные растения на метку, расположенную на форме. |
7 | Написать приложение, которое позволяет работать со списком музыкальных групп. На форме расположено текстовое поле, в которое вводится название группы. Она помещается в список всех групп только в том случае, если там такой группы не существовало. Кнопка «Удалить» позволяет удалять выбранные группы из списка. Кнопка «Результат» помещает все выбранные группы на метку, расположенную на форме. |
Содержание отчета:
- Номер, тема, цель лабораторной работы.
- Задание к работе.
- Описание входных, промежуточных и результирующих данных с указанием их типа.
- Программа на языке программирования.
- Результат выполнения программы (Введенное данные и полученные данные)
- Вставить код, написанный вами
- Вывод о проделанной работе.
- Законспектировать функции обработки.