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

Основные свойства, устанавливаемые в режиме разработки программы

Свойство ListCount

Возвращает число пунктов списка. Доступ к ним можно получить с помощью значений индексов в диапазоне от 0 до ListCount-1.

Свойство List()

Это массив пунктов списка. Элемент массива List(0) содержит первый пункт списка элемент List(l)- второй и т.д., вплоть до последнего элемента- List(ListCount-l), содержащего последний пункт списка. Существует возможность создать готовый список еще во время разработки программы. Для этого нужно поместить элементы списка в свойство List, после ввода текущего элемента для перехода на новую строку нажмите клавишу <Ctrl> + <Enter>.

Массив List() часто используют для просмотра пунктов списка. Для просмотра всех пунктов элемента управления List1 с целью отыскания| и удаления пустых строк применяйте следующий цикл:

For i = List1.ListCount - 1 to 0 Step –1

If List1.List(i) = "" Then

List1.RemoveItem I

End If

Next

Цикл сканирует элементы массива List1() с конца. При удалении каждого пункта длина списка уменьшается на 1. Если сканировать список с начала, число итераций превысит число пунктов списка, что ведет к ошибке исполнения. Если же сканировать список с конца, эта ошибка исключается.

Свойство ListIndex

ListIndex представляет собой индекс выбранного пункта списка. При выборке нескольких пунктов ListIndex представляет индекс последнего выбранного пункта. Это свойство можно использовать для выбора или удаления конкретных пунктов. Так, следующий оператор удаляет выбранный пункт элемента List1:

List1.RemoveItem List1.ListIndex

Если при вызове метода RemoveItem ни один пункт списка не выбран, значение свойства ListIndex равно ‑1. Попытки удалить пункт с отрицательным индексом приводят к ошибке исполнения. Чтобы избежать этого, проверьте значение свойства ListIndex.

If List1.ListIndex >= 0 Then

List1.RemoveItem List1.ListIndex

End If

После удаления пункта индексы последующих пунктов соответственно перестраиваются.

Существует еще один способ узнать, какой элемент списка выбрал пользователь. Значение свойства Text является строка списка, находящаяся в фокусе. Таким образом, в случае простого списка строка, на которой щелкнул пользователь, автоматически помещается в свойство Text. Если никакой элемент в списке еще не выбран, значение свойства Text равно пустой строке («»).

В приведенном ниже примере происходит удаление выбранного элемента списка при нажатии на клавишу <Delete>. Поместите этот фрагмент кода в процедуру обработки события KeyDown, поступающего от списка.

Private Sub List1_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyDelete And List1.ListIndex <> -1 Then

List1.RemoveItem List1.ListIndex

End If

End Sub

Свойство Selected

Selected представляет собой массив, подобный свойству List. Его элементы могут иметь значения True или False в зависимости от состояния соответствующего пункта списка. Если пункт списка выбран, значение свойства Selected данного пункта равно True. В противном случае значение свойства равно False. Поскольку отсутствуют средства, позволяющие получить сразу все индексы при выборке нескольких пунктов, необходимо проверить все элементы массива Selected.

Свойство SelCount

Отображает число выбранных пунктов элемента ListBox, если значение свойства MultiSelect установлено равным 1 (Simple) или 2 (Extended). Обычно это свойство используют вместе с массивом Selected для работы с выбранными пунктами элемента. Если элемент ListBox допускает выборку множества пунктов, рекомендуем применить в списке стиль Checkbox (Флажок). Чтобы пункты списка отмечались флажками (рис.5.4.2), установите значение свойства Style равным 1.

Свойство NewIndex

Возвращает индекс последнего пункта, включенного в список элемента ListBox. Обычно это свойство используют вместе со свойством ItemData, которое рассматривается в пункте «Индексирование с помощью элемента ListBox».

Пример ListDemo

Приложение ListDemo (рис 5.4.3) демонстрирует основные операции с элементом ListBox.

Рис. 5.4.3. Приложение ListDemo демонстрирует большинство операций с элементом ListBox

На форму помещены два элемента ListBox, работающие по-разному. Конфигурация первого элемента стандартна, одновременно может быть выбран только один пункт, а новые пункты включаются в конец списка. Во втором же элементе значение свойства Sorted установлено равным True, значение свойства MultiSelect - 2 (Extended). Таким образом, пункты второго элемента всегда отсортированы, и пользователь может выбрать любое число пунктов (с помощью мыши, удерживая нажатыми клавиши Shift или Ctrl).

В коде приложения ListDemo реализован полный набор логических функций, необходимых при работе с программой управления элемента ListBox. Программный код позволяет:

  • добавлять и удалять пункты;

  • переносить пункты между списками;

  • управлять множеством выбранных пунктов;

  • поддерживать сортировку списков.

Кнопка Add New Element. (Включить в список). Использует функцию InputBox(), для приглашения пользователя выполнить ввод новой строки в списки элементов.

Фрагмент программы. Кнопки Add New Element

Private Sub Command5_Click()

Dim listItem As String

listItem = InputBox("Enter item to add to the list")

‘(Введите добавляемый в список элемент)

If Trim(listItem) <> "" Then

List1.AddItem listItem

End If

End Sub

Подпрограмма проверяет данные, введенные пользователем, не допуская ввод в список пустой строки. Программный код кнопки Clear List (Очистить список) удаляет все записи списка, вызывая метод Clear.

Кнопка Remove Selected Item(s). Программный код кнопки Remove Selected Item . (Удалить выбранный пункт) отличается от программного кода кнопки Remove Selected Items (Удалить выбранные пункты). В первом элементе ListBox можно выбрать только один пункт, а во втором - несколько. Как было уже сказано, удаляемый пункт сначала должен быть выбран.

Фрагмент программы. Кнопка Remove Selected Item.

Private Sub Command3_Click()

If List1.ListIndex > 0 Then

List1.RemoveItem List1.ListIndex

End If

End Sub

Программный код кнопки Remove Selected Items просматривает все пункты списка, а затем удаляет только выделенные.

Фрагмент программы. Кнопка Remove Selected Item

Private Sub Command4_Click()

Dim i As Integer

If List2.SelCount = 1 Then

List2.RemoveItem List2.ListIndex

ElseIf List2.SelCount > 1 Then

For i = List2.ListCount - 1 To 0 Step -1

If List2.Selected(i) Then

List2.RemoveItem i

End If

Next

End If

End Sub

В данном коде проверяется свойство SelCount, указывающее число выбранных пунктов. Если значение свойства SelCount равно единице, то программа удаляет пункт. Если же выбрано несколько пунктов, программа просматривает весь список и удаляет все пункты, у которых значение свойства Selected равно True. Обратите внимание: список просматривается с конца.

Фрагмент программы . Кнопка со стрелкой вправо

Private Sub Command1_Click()

If List1.ListIndex >= 0 Then

List2.AddItem List1.Text

List1.RemoveItem List1.ListIndex

End If

End Sub

Программный код кнопки со стрелкой влево проверяет значение свойства SelCount. Если в списке выбран единственный пункт, то он перемещается в другой список с помощью вышеуказанного кода. Если же выбрано несколько пунктов, программный код просматривает список начиная с конца, копируя и удаляя каждый выбранный пункт.

Фрагмент программы Кнопка со стрелкой влево

Private Sub Command2_Click()

Dim i As Integer

If List2.SelCount = 1 Then

List1.AddItem List2.Text

List2.RemoveItem List2.ListIndex

ElseIf List2.SelCount > 1 Then

For i = List2.ListCount - 1 To 0 Step -1

If List2.Selected(i) Then

List1.AddItem List2.List(i)

List2.RemoveItem i

End If

Next

End If

End Sub

Завершая обсуждение элемента ListBox, рассмотрим один полезный прием программирования: использование элемента ListBox для хранения списка ключей при организации быстрого поиска в массивах или файлах с произвольным доступом.

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