☰ Содержание · Информатика

ListBox, ComboBox и SpinEdit

Уроки 55–56 · 2 урока · Н. И. Тайлаков (общий редактор), А. Б. Ахмедов, М. Д. Пардаева, А. А. Абдуганиев, У. М. Мирсанов. Информатика и информационные технологии, 10 класс, 1-е издание. «Extremum-Press», Ташкент, 2017
56

Практическое занятие

Учебник: с. 126
ЦельСоздаёт приложения с ListBox, ComboBox и SpinEdit: заполняет список циклом, переносит элемент в другой список и суммирует значения.
Новые слова
Items.Delete: метод, удаляющий из списка элемент с заданным номером · Items.DeleteItems.Count: количество элементов в списке · Items.CountOnCreate: событие создания формы, используется для начальных значений · OnCreateClear: метод, очищающий список · Clear
Объяснение

На практическом занятии создаются три приложения. 1) «Чётные числа»: в процедуре OnCreate компонента Form1 цикл for i := 1 to 12 do ListBox1.Items.Add(IntToStr(2 * i)); заполняет список 12 элементами. 2) «Перенос»: кнопка добавляет элемент, выбранный в ListBox1, в ListBox2 и удаляет его из ListBox1: ListBox2.Items.Add(ListBox1.Items[i]); ListBox1.Items.Delete(i); где i := ListBox1.ItemIndex. 3) «План дня»: предмет выбирается из ComboBox, а минуты (от 10 до 90) – из SpinEdit; при нажатии кнопки в ListBox2 добавляется строка «предмет – минуты», а общее время суммируется в Label. В каждом приложении проверяйте количество элементов через Items.Count, а результат вычисляйте заранее и записывайте в тетрадь.

Примеры
OnCreate: procedure TForm1.FormCreate(Sender: TObject); ⏎ var i: Integer; ⏎ begin ⏎  for i := 1 to 12 do ⏎    ListBox1.Items.Add(IntToStr(2 * i)); ⏎ end; В результате ListBox1.Items.Count = 12, Items[0] = 2 и Items[11] = 24.
До переноса в ListBox1 12 элементов, а в ListBox2 – 0. После переноса «18» (i = 8) в ListBox1 становится 11, а в ListBox2 – 1; всего 11+1 = 12 – ни один элемент не потерян. Если в плане дня выбраны 45, 30 и 20 минут, общее время равно 45+30+20 = 95 минут.
Работа в классе

«Сортировщик»: группа переносит пять из 12 чисел по одному и показывает, что сумма количеств элементов двух списков на каждом шаге остаётся равной 12.

Упражнения
1
Сколько элементов в списке после for i := 1 to 12 do ListBox1.Items.Add(...)?
2
В ListBox1 12 элементов; 4 из них перенесены в ListBox2. Сколько осталось в ListBox1?
3
В списке 2, 4, 6, … чему равен индекс «18» в Items?
4
Почему при переносе элемента Add выполняется раньше Delete?