- Учителю
- Поурочное планирование по информатике на тему Элементы управления ListBox и ComboBox (10 класс)
Поурочное планирование по информатике на тему Элементы управления ListBox и ComboBox (10 класс)
Урок №15:Элементы управления ListBox и ComboBox
Элементы управления ListBox и ComboBox. Использование этих элементов при работе с массивами
</ 1.Элементы управления ListBox (список) и ComboBox (поле со списком)
С одномерными массивами в Visual Basic часто используют стандартные элементы управления ListBox (список) и ComboBox (поле со списком). Оба эти элемента используют список. Список в терминах Visual Basic - это массив строк, на который можно формально сослаться с помощью свойства List. Свойство List - это список строк в элементе управления. Свойство List имеют списки и поля со списком. Основное, что нужно научиться делать - это добавлять и удалять строки в свойстве List этих элементов управления, выбирать элемент из списка, узнавать количество элементов в списке. Добавлять строки в свойство List списка или поля со списком можно двумя способами: при проектировании и при выполнении программы.
2. Добавление строк в список во время проектирования
Попробуем добавить строки в свойство List во время проектирования. Для этого сначала добавим в форму элемент управления списком ListBox. Он имеет следующую пиктограмму:
Выделим этот элемент управления в форме, перейдем в окно свойств, выберем в окне свойств свойство List. Появится кнопка с направленной вниз стрелкой. Щелкнем на этой стрелке. Появится список свойства List. Введем нужную строку в этот список. Для того, чтобы ввести в список свойства List еще одну строку нужно нажать <Ctrl> + <Enter>.
3. Добавление строк в список во время выполнения проекта
Списки и поля со списком - динамические элементы по своей природе. Можно изменять значение свойства List этих элементов управления во время проектирования, что конечно удобно при создании программы, но самое главное все-таки добавлять и удалять строки свойства List во время выполнения программы. Для этой цели используются методы AddItem (добавить элемент), RemoveItem (удалить элемент) и Clear (очистить).
Метод AddItem добавляет строку в список свойства List элемента управления списком или полем со списком. Синтаксис этого метода следующий:
Объект.AddItem СтрокаКоторую НужноДобавить
Объект - значение свойства Name элемента управления списком или поля со списком.
Например,
lstMyList.AddItem "Математика"
Чтобы опробовать метод AddItem в действии, сделаем небольшой проект, в котором с помощью метода AddItem в элемент lstSubject будут добавляться названия предметов, которые изучаются в школе. На форму поместим элемент lstSubject и командную кнопку cmdAdd.
В коде командной кнопки, используя метод AddItem, будем добавлять в элемент lstSubject названия изучаемых предметов:
Private Sub cmdAdd_Click( )
lstSubject.AddItem ("Алгебра")
lstSubject.AddItem ("Геометрия")
lstSubject.AddItem ("Русский язык")
lstSubject.AddItem ("Литература")
lstSubject.AddItem ("Физика")
lstSubject.AddItem ("Иностранный язык")
lstSubject.AddItem ("Информатика")
End Sub
Если запустить проект и щелкнуть по кнопке cmdAdd, то в элементе lstSubject вы увидите список предметов.
4. Выбор элемента из списка
Чтобы понять, как Visual Basic определяет, какая строка выбрана из списка свойства List элемента управления ListBox или ComboBox, нужно помнить, что свойство List - это массив строк. Для указания позиции элемента в списке свойства List используется свойство ListIndex. Когда пользователь щелкает на какой-нибудь строке в окне списка, Visual Basic присваивает номер этой строки в качестве значения свойству ListIndex данного элемента управления. Попробуем использовать это свойство в нашем проекте. Добавим в форму метку lblChoice, в свойстве Caption которого будем распечатывать значение выбранного пользователем элемента lstSubject и командную кнопку cmdChoice со значением свойства Caption "Проверьте значение выбранной строки".
В коде командной кнопки свойству Caption новой метки будем присваивать значение элемента lstSubject.ListIndex.
Private Sub cmdChoice_Click( )
lblChoice.Caption = lstSubject.List(lstSubject.ListIndex)
End Sub
Опробуйте работу проекта. Вы увидите, что в метке будет появляться та строка списка, которая выбрана пользователем. Вот один из возможных результатов работы программы:
5. Удаление элемента из списка
Удалить строку из списка свойства List элемента управления списком или полем со списком можно с помощью метода RemoveItem. Синтаксис метода следующий:
Объект.RemoveItem Index
Объект - значение свойства Name элемента управления списком или полем со списком;
Index - позиция строки в списке свойства List, которую вы хотите удалить из элемента управления. Для удаления из списка строки, выбранной пользователем, можно использовать свойство ListIndex.
Добавим в форму проекта, который мы начали делать в предыдущих пунктах занятия, еще одну командную кнопку cmdRemove с значением свойства Caption "Удалить выделенную строку". Код у нее будет такой.
Private Sub cmdRemove_Click( )
lstSubject.RemoveItem (lstSubject.ListIndex)
End Sub
После щелчка на кнопке cmdRemove на стадии выполнения проекта из списка будет удаляться выделенная строка.
6.Удаление всех элементов из списка
Чтобы удалить все строки из списка или поля со списком, можно использовать метод Clear. Его синтаксис:
Объект.Clear
Добавьте в свой проект командную кнопку cmdClear с значением свойства Caption "Удалить все строки" и допишите для нее код.
Private Sub cmdClear_Click ( )
End Sub
7.Свойство ListCount элементов управления ListBox и ComboBox
Чтобы узнать, сколько элементов в настоящий момент находится в списке, можно воспользоваться свойством ListCount. Добавьте в свой проект метку lblCount, значение свойства Caption которой будет присваиваться значению свойства ListCount
lblCount.Caption = lstSubject.ListCount
Эту строку лучше поместить в коде какой-нибудь командной кнопки.
8. Доступ к отдельным элементам списка
Чтобы просмотреть отдельный элемент списка или поля со списком, можно использовать свойство List:
Объект . List (индекс)
При этом необходимо помнить, что индекс первого элемента в списке - 0, второго - 1 и т. д. Вот так, например, в свойстве Caption метки lblProba можно увидеть содержание третьего элемента списка нашего проекта:
lblProba . Caption = lstSubject . List (2)
Доделайте проект таким образом, чтобы значение какого-нибудь элемента списка распечатывалось в свойстве Caption метки.
9. Сравнение элементов управления ListBox (список) и ComboBox (поле со списком)
Элементы управления список и поле со списком во многом похожи. Способы их использования почти одинаковы. Разница лишь в том, что поле со списком комбинирует элементы управления списком и полем текста и позволяет либо сделать нужный выбор из списка, либо ввести нужный вариант, напечатав его.
Вы не можете выбрать или ввести данные, которых в списке нет, используя только элемент управления ListBox. Для этого вам придется вводить в код дополнительно, например, функцию InputBox. В качестве элемента управления поле со списком обладает большей гибкостью и экономнее использует место в форме. Поле со списком имеет свойство Style (стиль), которое дает возможность выбрать подходящие характеристики элемента управления и его внешний вид.
Мы ограничимся упоминанием различий в этих элементах управления. Подробно разбирать их отличия на практике не будем..
10.Проект prjSubjects. Постановка проблемы
Чтобы на практике опробовать работу одномерного массива с элементом ListBox, сделаем следующий проект. Цель пользователя данного проекта - сформировать перечень предметов, которые изучаются в том учебном заведении, где он учится, в его подразделении в текущем учебном году. (Мы опять предполагаем, что пользователь - ученик.) Для формирования своего перечня он может воспользоваться стандартным перечнем предметов, которые в проекте первоначально формируются в виде одномерного массива. Пользователь, если захочет, может добавить элементы этого массива в объект ListBox, может удалить предварительно выделенные мышкой названия предметов из ListBox и добавить те, которых нет в стандартном списке. Все эти манипуляции пользователь может проделать с помощью первой формы. (Назовем ее frmStandartSubj). Далее он сообщает, что элементы обновленного массива подготовлены, щелкнув на соответствующей командной кнопке, после чего этот массив формируется и распечатывается на второй форме проекта. (Назовем ее frmMySubj).
11. Формирование массива и передача значений его элементов элементу управления ListBox
В нашем проекте будет фигурировать массив названий предметов nameSubj( ). Массив потребуется нам и в коде первой формы, и в коде второй формы. Он должен быть глобальным. Добавим в проект модуль. Назовем его modSubj. Объявим в модуле кода глобальный массив, состоящий из 16 элементов. Вы в своем проекте можете изменить эту цифру. Запишем соответствующую строку кода:
Public nameSubj( 15)
В модуле кода "заполним" массив элементами - это будет стандартный список из 16 предметов. Все это сделаем в процедуре Inpt( ). Допишите процедуру.
Public Sub Inpt( )
nameSubj(0) = "алгебра"
nameSubj(1) = "геометрия"
. . .
End Sub
Затем в коде первой формы вызовем процедуру Inpt( ), чтобы массив к данному моменту времени уже существовал заполненный стандартным набором названий предметов. С помощью метода AddItem заполним ими строки элемента ListBox. Назовем этот элемент управления lstSubject. Эти операции можно поместить в коде командной кнопки cmdStandart с значением свойства Caption, равным строке "Стандартный набор предметов". Составим код.
Private Sub cmdStandart_Click( )
Dim i As Integer
Call Inpt
For i = 0 To 15
lstSubject.AddItem (nameSubj(i))
Next i
End Sub
Пользователь, выполнив всю ту часть проекта, которую мы описали, сможет увидеть в элементе lstSubject стандартный набор названий дисциплин. Нужно дать ему возможность удалять выбираемые им названия в lstSubject и дополнять список теми названиями, которыми он считает нужным его дополнить. Предоставим ему эти возможности, составив соответствующие коды.
Поместим на первую форму командную кнопку cmdRemove, с помощью которой пользователь сможет удалить выбранное им название предмета, и рядом с ним поместим метку, в свойстве Caption которой будет строка "Выберите предмет, которого у Вас нет". В свойстве Caption кнопки поместим значение: "Удалите его". Составьте код, используя метод RemoveItem.
Private Sub cmdRemove_Click( )
End Sub
Чтобы пользователь смог дополнить список lstSubject каким-то еще названием, поместим на первую форму еще одну командную кнопку cmdAdd, свойство Caption которой зададим значением "Добавить". Рядом с ней поместим метку с текстом в свойстве Caption "Хотите добавить элемент, которого нет в списке?". Название предмета будем вводить с помощью функции InputBox, а пополнять список элемента lstSubject - с помощью метода AddItem. Дополните код.
Private Sub cmdAdd_Click( )
Dim NewSubject As String
NewSubject = InputBox("Введите название нового_ предмета", "новый предмет")
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
End Sub
12. Присвоение значений свойства List элемента ListBox массиву
Далее нам предстоит дописать код, с помощью которого значения массива nameSubj( ) будут изменяться на новые, откорректированные пользователем с помощью действий над lstSubject. Все новые значения хранятся в элементе lstSubject в свойстве List. Наша задача - перенести их в массив nameSubj( ). Очистим массив от предыдущих значений, т.е. присвоим каждому элементу массива значение пустой строки. Это можно сделать в отдельной процедуре, скажем, в первой форме. Назовем ее Clear( ). Составьте для нее код.
Private Sub Clear( )
End Sub
Теперь присвоим всем элементам массива nameSubj( ) значения, находящиеся в свойстве List элемента lstSubject. Сделаем это в коде командной кнопки cmdOut, которую поместим на первую форму. Свойству Caption присвоим значение "Готово". Сначала выполним процедуру Clear, затем выясним количество элементов в свойстве List элемента lstSubject, после чего присвоим элементам массива соответствующие строки lstSubject.
Private Sub cmdOut_Click( )
Dim k,i As Integer
Call Clear
k= lstSubject.ListCount
For i = 0 To k - 1
nameSubj(i) = lstSubject(i)
Next i
Call Passage
End Sub
В последней строке кода вызывается процедура Passage( ), в которой первая форма выгружается, а вторая загружается и показывается. Составим ее код.
Private Sub Passage( )
UnLoad frmStandartSubj
Load frmMySubj
frmMySubj . Show
End Sub
Поскольу массив nameSubj( ) глобальный, его значения будут видимы во второй форме. Итак мы закончили работу с первой формой. Вот как она может выглядеть в работе:
13. Печать измененных значений массива на второй форме
Нам осталось распечатать на второй форме значения измененного массива nameSubj( ).Сделаем это в коде командной кнопки, помещенной на вторую форму со значением свойства Caption "Распечатайте названия предметов". Составьте код самостоятельно:
Private Sub Command1_Click( )
End Sub
Вторая форма в работе проекта может выглядеть приблизительно так:
14. Проверка количества элементов lstSubject, откорректированного пользователем
Возможен случай, что откорректированный список в элементе lstSubject содержит большее количество строк, чем объявленный массив. Чтобы избежать появление ошибки, перед присвоением элементов откорректированного списка lstSubject, нужно убедиться, что количество элементов списка не превышает 16. Если это не так, нужно сообщить об этом пользователю и дать ему возможность исправить ситуацию. Доделайте это самостоятельно.
8