- •Содержание
- •1. Понятие о стандартных элементах управления
- •Добавление элементов управления в форму
- •Выбор имен для элементов управления
- •2. Основные свойства элементов управления
- •Позиция
- •Свойства BackColor, ForeColor, FillColor
- •Параметры шрифта
- •Доступность и видимость элемента управления
- •Свойство Enabled
- •Свойство Visible
- •Свойство Name
- •Внешний вид
- •3. Основные события Windows
- •4. Работа с текстом
- •4.1. Отображение текста в полях типа Label
- •4.2. Ввод текста в текстовые поля (TextBox)
- •Проверка введенных данных
- •5. Элементы управления для принятия решения
- •5.1. Кнопка (Элемент CommandButton)
- •5.2. Флажок (элемент Check Boxes)
- •5.3. Переключатель (элемент Option Button)
- •5.4. Список (Элемент ListBox)
- •Основные свойства, устанавливаемые в режиме проектирования
- •Методы элемента ListBox
- •Основные свойства, устанавливаемые в режиме разработки программы
- •Индексирование с помощью элемента ListBox
- •Локализация пункта элемента ListBox
- •5.5. Поле со списком (элемент ComboBox)
- •Установка начального значения
- •6. Элементы управления специального назначения
- •6.1. Полосы прокрутки (VscrollBar и HscrollBar)
- •Создание полосы прокрутки
- •Изменение величины перемещения
- •Отображение значения свойства Value на экране
- •6.2. Таймер (элемент управления Timer)
- •Работа с таймером
- •6.3. Рамка (элемент Frame)
- •7. Массив элементов управления
- •Преимущества массивов элементов управления
- •Создание массива элементов управления
- •Написание кода для массива элементов управления
- •8. Использование графики
- •Элемент ImageBox (Изображение)
- •Элемент PictureBox
- •Использование объекта Picture для вывода текста и графических элементов
- •Линии и контуры
- •9. Элементы управления файлами
- •Литература
Основные свойства, устанавливаемые в режиме разработки программы
Свойство 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 для хранения списка ключей при организации быстрого поиска в массивах или файлах с произвольным доступом.
