Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB_6.doc
Скачиваний:
97
Добавлен:
01.12.2018
Размер:
3.77 Mб
Скачать

3.6. Списки.

Процедуру выбора позволяют реализовать элементы CheckBox и

OptionButton, однако, их возможности ограничены. На форме практически невозможно расположить сотни этих элементов, если требуется выбор из такого числа вариантов. Эту задачу позволяют решить элементы управления ListBox и ComboBox.

3.6.1. Элемент ListBox.

Элемент управления ListBox предназначен для осуществления множественного выбора из предлагаемого списка вариантов. Его основные свойства:

Таб. 3.6.1.

Свойство

Значение свойства

Name

Имя элемента

List

Массив элемента списка

ListCount

Количество элементов в списке

ListIndex

Номер выбранного элемента в списке

Sorted

Сортировка элементов в списке

MultiSelect

Параметр множественного выбора из списка

Префиксом имени этого элемента служит lst. После размещения элемента на форме будет изображена только рамка. На ней нет элементов списка и полос прокрутки. Полосы будут автоматически добавлены, если введённые в список элементы не будут помещаться в окне. Элементы списка вводятся в режиме design в поле свойства List элемента ListBox. Это будут варианты, доступные для выбора пользователем. Элементы списка хранятся в поле свойства List в виде массива символьных строк. Для добавления элементов в список выберите свойство List, щелчок на стрелке вниз открывает доступ к окну ввода элементов списка. Для добавления элемента наберите на клавиатуре нужный текст и нажмите Enter.

Чтобы получить отсортированный список, нужно установить свойство Sorted равным True.

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

List1.List(0 )= ”0”

List1.List(1)= ”1” List1.List(2) = ”2”

правильно заносит элементы в список, а следующий фрагмент:

List1.List(0 )= ”0”

List1.List(2) = ”1” List1.List(3) = ”2”

вызовет сообщение об ошибке.

Добавить элемент позволяет также метод AddItem. Обратиться к нему можно следующим образом:

ListName.Additem ListItem [,Index]

Здесь ListName – имя элемента; ListItem – элемент, добавляемый в список. Если он не является числом, то должен заключаться в кавычки.

Необязательный параметр [,Index] определяет позицию добавляемого элемента в списке. Если [,Index] отсутствует, то вводимый элемент добавляется в конец неотсортированного списка. Если же свойство Sorted списка установлено в значение True, то добавление происходит в алфавитном порядке. Индекс первого элемента всегда равен 0. Как и для свойства List, фрагмент:

List1.AddItem ”0”, 0

List1.AddItem ”1”, 1 List1.AddItem ”2”, 2

правильно заносит элементы в список, а следующий фрагмент:

List1.AddItem ”0”, 0

List1.AddItem ”1”, 1 List1.AddItem ”2”, 3

вызовет сообщение об ошибке.

Вставить элемент внутрь уже существующего списка позволяют оба способа, но с разным результатом. При использовании свойства List(i) i-ый элемент замещается вставляемым, а при использовании метода AddItem “a”, i на i-ое место будет вставлен новый элемент, а все следующие будут сдвинуты вниз.

Для удаления элементов из списка нужно обратиться к методу

RemoveItem:

ListName. RemoveItem Index,

где Index – позиция удаляемого элемента в списке.

Удалить все элементы списка можно с помощью метода Clear:

ListName.Clear

Свойство ListCount позволяет определить количество элементов в списке, что требуется при обработке элементов списка в цикле. Свойство ListIndex показывает номер выбранного элемента (отсчёт с нуля), а свойство Text – его содержимое. Например, можно внести в список какие-либо элементы, затем создать на форме 2 текстовых окна, открыть окно кода, дважды щёлкнув на элементе ListBox, и для события Click написать процедуру:

Private Sub List_Click ()

Text1.Text = List1.List(List1.ListIndex)

Text2.Text = List1.Text

End Sub

Запустив программу, щёлкните на каком либо элементе списка - он появится в обоих текстовых окнах. Свойство NewIndex возвращает индекс последнего добавленного в список элемента.

Свойство SelCount возвращает количество выбранных элементов списка. Оно особенно полезно, когда пользователь осуществляет множественный выбор.

Чтобы можно было выбрать не один, а несколько элементов, нужно задать значение свойства MultiSelect. По умолчанию оно равно нулю и позволяет выбрать только один элемент. Если установить значение 1, то можно выбирать несколько элементов щелчками на них мышкой. Повторный щелчок на одном и том же элементе отменяет предыдущий выбор. Если же установить MultiSelect = 2, то можно выбирать сразу группу элементов. Для этого нужно при нажатой клавише Shift выбрать первый элемент из группы, а затем последний. Однако для обработки множественного выбора нельзя использовать свойство ListIndex. Выбор нескольких элементов фиксируется в свойстве Selected, являющемся массивом, размерность которого равна числу элементов списка. Выбранному элементу соответствует значение True, а не выбранному - False. Следующий код выводит в текстовое окно все выбранные элементы:

Text1.Text = “”

For i = 0 To List1.ListCount-1

If List1.Selected(i) Then

Text1.Text = Text1.Text & List1.List(i) & vbCrLf

End If

Next i

Каждому элементу списка можно поставить в соответствие число типа Long, используя свойство ItemData. Например, в свойство List можно внести названия изделий, а в ItemData - их шифры. В результате шифры будут “приклеены” к названиям и при любой сортировке будут неотступно следовать за соответствующими им названиями. Свойство ItemData является массивом. При заполнении списка можно одновременно заполнить и массив ItemData. Например:

For i=0 To 10

List1.List(i) = i

List1.ItemData(i) = i

Next i

Если после этого в k+1-ю строку уже заполненного списка добавить новый элемент с помощью метода AddItem, то для него следует задать и значение свойства ItemData, например:

List1.AddItem “Проект A”, k

List1.ItemData(List1.NewIndex) = k

При этом все следующие элементы списка сдвинутся вниз, но значения их свойства ItemData останутся прежними, то есть для данного примера в k+1-ой и k+2-ой строках элементы списка будут иметь одно и то же значение свойства ItemData.

Для отображения в окне списка нескольких логически связанных данных их нужно “склеить” в строку и загрузить её как элемент списка:

FIO = Fam & Im & Otch

List1 AddItem, FIO

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]