Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основные свойства элемента управления ListBox

Поиск

Перечислим основные свойства списка.

Свойства Описание
ListIndex Возвращает номер выбранного элемента списка. Нумерация элементов списка начинается с нуля (всегда!!!). Если ни один элемент не выбран, то возвращается -1.
ListCount Возвращает количество элементов в списке.
TopIndex Возвращает элемент списка с наибольшим номером
С olumnCount Устанавливает число колонок в списке (Рис. 12‑13) lstCотрудник.СolumnCount = 2

Рис. 12‑13. Список с двумя колонками

Text Возвращает выбранный в списке элемент.
List Заполняет список из массива lstГруппа.List = Группы, где Группы – массив групп. Возвращает элемент списка, стоящий на пересечении указанной строки и столбца. Синтаксис: List(row,column)
RowSource Устанавливает диапазон, содержащий элементы списка.
MultiSelect Устанавливает способ выбора элементов списка:
  • fmMultiSelectSingle – выбор только одного элемента
  • fmMultiSelectMulti– выбор нескольких элементов. Осуществляется либо щелчком мышки, либо клавишей [Пробел]. Повторный щелчок по выбранному элементу снимает его выделение.
  • fmMultiSelectExtended –использование клавиши [ Shift] для выбора ряда последовательных элементов
Selected Логическое свойство, которое возвращает значение True, если элемент списка выбран, и False – в противном случае. Используется для определения выбранного элемента, когда значение свойства MultiSelect установлено равным fmMultiSelectMulti или fmMultiSelectExtended.
С olumnWidths Устанавливает ширину столбцов. Синтаксис: СolumnWidths = String где String – строка, устанавливающая ширину столбцов В следующем примере устанавливается ширина каждого из двух столбцов списка: With lstПреподаватели .СolumnCount = 3 .СolumnWidths = “50;40;40” End With
С olumnHeads Логическое свойство, определяющее, выводить ли в списке заголовки колонок

Методы ListBox

Методы Описание
Clear Удаляет все элементы списка
RemoveItem Удаляет элемент с указанным номером из списка Синтаксис: RemoveItem(Index)
AddItem Добавляет элемент в список Синтаксис: Add Item([Item [, varIndex]]) Item – элемент (строковое выражение), добавляемый в список varIndex – номер добавляемого элемента

 

Заполнение списка

Заполнить список можно одним из следующих способов.

§ Поэлементно (список состоит из одной колонки):

With lstМесяцы

.AddItem “Январь”

.AddItem “Февраль”

.AddItem “Март”

End With

§ Массивом (список состоит из одной колонки)::

lstМесяцы. List = Array (“Январь”, “Февраль”,…,“Декабрь”)

Или

Dim  Месяцы(12) As String

Месяцы(1) = “Январь”

Месяцы(2) = “Февраль”

Месяцы(12) = “Декабрь”

lstМесяцы. List = Месяцы

§ Поэлементно (список состоит из нескольких колонок, например, двух):

With lstСтудент

.СolumnCount = 2

.AddItem “Иванов”

.List(0,1) = “Алексей”

.AddItem “Петров”

.List(1,1) = “Борис”

.AddItem “Смирнов”

.List(2,1) = “Борис”

End With

§ Массивом (список состоит из нескольких колонок, например, двух):

ReDim Преподаватели(КолСотрудников, 2)

For I = 3 To КолСотрудников

Преподаватели(КолСотрудников, 1) = Cells(НомерСтроки,2).Value

Преподаватели(КолСотрудников, 2) = Cells(НомерСтроки,3).Value

Next I

lstСотрудники. List = Преподаватели

Пример создания списка

Предположим, что нам надо создать следующую форму с сотрудниками кафедры:

Требуется написать программу инициализации формы, в которой:

§ Список сотрудников должен быть в 2 колонки (1-я колонка – Ф.И.О, 2-я – Должность).

§ Предусмотрена возможность выбора нескольких элементов.

§ Данные, на основе которых формируется этот список, находятся на рабочем листе Кадры в книге C:\ St\Институт. xls (Рис. 12‑14):

Рис. 12‑14. Структура базы данных Кадры

Тогда фрагмент кода, который формирует список, запишется так:

‘ 1. Массив Преподаватели объявляем как динамический массив

Dim Преподаватели()       As String

Dim ПреподавателиТранс() As String

Dim НомерСтроки          As Integer

Dim КолСотрудников         As Integer

....

НомерСтроки = 3

КолСотрудников = 0

‘ 2. Считываем данные в динамический массив:

While Trim (Cells(НомерСтроки,2).Value) <> “”

If Trim(Cells(НомерСтроки, 1).Value) = "АСУ" Then

КолСотрудников = КолСотрудников + 1

ReDim Preserve Преподаватели(2, КолСотрудников)

Преподаватели(1,КолСотрудников) = _

Cells(НомерСтроки,2).Value

Преподаватели(2,КолСотрудников) = _

Cells(НомерСтроки,3).Value

End If

НомерСтроки = НомерСтроки + 1

Wend

‘ 3. Транспонируем массив Преподаватели:

ReDim ПреподавателиТранс(КолСотрудников, 2)

For i = 1 To КолСотрудников

ПреподавателиТранс (i, 1) = Преподаватели (1, i)

ПреподавателиТранс (i, 2) = Преподаватели (2, i)

Next i

‘ 4. Заполняем список, состоящий из двух колонок:

With lstCотрудник

.СolumnCount = 2

.List = ПреподавателиТранс

End With

Замечания:

1. Если Вы формируете список из массива (как в приведенном примере), то количество его элементов задает первый индекс массива. Соответственно, в первую колонку списка будут считываться данные из 1-й «колонки» массива (во вторую – из второй и т.д.). Поэтому нам пришлось транспонировать массив Преподаватели в массив ПреподавателиТранс. Можно обойтись одним массивом и тогда этот же фрагмент кода запишется так:

Dim Преподаватели()       As String

Dim НомерСтроки          As Integer

Dim КолСотрудников     As Integer

....

НомерСтроки = 3

КолСотрудников = 0

‘ 1. Определяем количество записей в конечном массиве:

While Trim (Cells(НомерСтроки,2).Value) <> “”

If Trim(Cells(НомерСтроки, 1).Value) = "АСУ" Then

КолСотрудников = КолСотрудников + 1

End If

НомерСтроки = НомерСтроки + 1

Wend

‘ 2. Выделяем память для динамического массива и считываем _

в него данные:

ReDim Преподаватели(КолСотрудников, 2)

For I = 3 To НомерСтроки - 1

If Trim(Cells(НомерСтроки, 1).Value) = "АСУ" Then

КолСотрудников = КолСотрудников + 1

Преподаватели(КолСотрудников,1) =  _

Cells(НомерСтроки,2).Value

Преподаватели(КолСотрудников,2) = _

Cells(НомерСтроки,3). Value

End If

Next I

‘ 3. Заполняем список, состоящий из двух колонок:

With lstCотрудник

.СolumnCount = 2

.List = Преподаватели

End With

2. Чтобы облегчить работу пользователя, всегда сортируйте элементы списка[16] или выстраивайте их так, как это будет ему удобно! В нашем примере первым элементом списка можно было бы прописать сотрудника с должностью Зав.кафедрой.

Определение выбранных элементов списка

Для того чтобы определить, какие элементы списка выбрал пользователь, воспользуемся свойством Selected.

Расширим нашу задачу и подсчитаем количество выбранных сотрудников. Полученную цифру выведем на экран:

Option Base 1

Private Sub cmdOK_Click()

Dim Сотрудников As Integer

For i = 0 To lstСотрудник.ListCount - 1

If lstСотрудник.Selected(i) = True Then

Сотрудников = Сотрудников + 1

End If

Next i

MsgBox "Выбрано " & Сотрудников & " сотрудников!", _

vbInformation, "Сообщение"

Unload Me

End Sub

Поле со списком (ComboBox)

Элемент управления Поле со списком создается кнопкой ComboBox ( Рис. 12‑15 ). Используется для создания списка и сочетает в себе функциональные возможности списка и поля ввода. В отличие от ListBox, ComboBox позволяет выбрать только один элемент.

Рис. 12‑15. Элемент управления Поле со списком

При вводе текста с клавиатуры, введенная строка не становится частью списка, но присваивается свойству Value элемента ComboBox.

Поле со списком  имеет те же свойства и методы, что и Список. К ним относятся свойства ListIndex, ListCount, List и методы Clear, RemoveAtem и AddItem.

Кроме того, у этого элемента есть ряд уникальных свойств. Вот некоторые из них:

Свойства Описание
ListRows Устанавливает количество элементов, отображаемых в поле со списком.
Style Устанавливает стиль диалога. Допустимые значения:
  •  fmStyleDropDownList – в поле ввода нельзя вводить текст, можно только выбрать элемент из предложенного списка;
  • fmStyleDropDownCombo – ввод текста разрешен. Этот стиль установлен по умолчанию.

Основным событием, связанным с ComboBox, является событие Change.

Пример создания поля со списком

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

Данные, на основе которых формируется поле со списком, находятся в первом столбце на листе Кадры, в книге C:\ St\Институт. xls (Рис. 12‑14).

Тогда фрагмент кода, который формирует поле со списком, запишется так:

'Объявляем переменные и массивы:

Dim Кафедры()     As String

Dim Кафедра       As String

Dim НомерСтроки   As Integer

Dim КолСотрудников As Integer

Dim КолКафедр     As Integer

....

'Формируем список кафедр, которые встречаются в первом _

столбце на листе Кадры:

КолКафедр = 1 'кол-во кафедр

'Выделяем память для первой кафедры и заносим её в массив _
(ячейка (3,1)):

ReDim Preserve Кафедры(1) As String

Кафедры(1) = Trim(Cells(3, 1).Value)

'Перебираем остальные записи БД, проверяя наличие очередной _ кафедры в массиве Кафедры:

НомерСтроки = 4

While Trim(Cells(НомерСтроки, 1).Value) <> ""

Кафедра = Trim(Cells(НомерСтроки, 1).Value)

For j = 1 To КолКафедр

If Кафедра = Кафедры(j) Then GoTo n3

Next j

КолКафедр = КолКафедр + 1

ReDim Preserve Кафедры(КолКафедр) As String

Кафедры(КолКафедр) = Trim(Cells(НомерСтроки, 1).Value)

End If

n3: НомерСтроки = НомерСтроки + 1

Wend

CallСортировка 'Процедура сортировки списка.

'Процедуру сортировки напишите самостоятельно.

frmКафедра.cboКафедра.List = Кафедры

frmКафедра.Show

Для того чтобы узнать, какой элемент списка выбрал пользователь, воспользуемся свойством Value:

Private Sub cmdOK_Click()

Dim Кафедра       As String

Кафедра = cboКафедра.Value

MsgBox "Выбрана кафедра " & Кафедра & "!", _

vbInformation, "Сообщение"

Unload Me

End Sub

Замечание: при инициализации формы всегда сортируйте элементы списков!  

Флажок (CheckBox)

Элемент управления Флажок создается кнопкой CheckBox ( Рис. 12‑16 ) и позволяет пользователю выбрать один или несколько параметров. Как правило флажок находится в одном из двух состояний – установлен или сброшен. Однако его можно настроить и на три положения (установлен, сброшен или не определен).

Рис. 12‑16. Элемент управления Флажок

Основным событием, связанным с флажком, является событие Click.

Рассмотрим важнейшие свойства CheckBox

Свойства Описание
Caption Текст, отображаемый рядом с флажком.
TripleState Если его значение равно True, для флажка возможны три положения (True, False и Null – установлен, сброшен, нейтрален), в противном случае  – только два (True, False – установлен или сброшен). По умолчанию установлено значение False.
Value Задает или возвращает состояние флажка: True означает, что флажок установлен, False - сброшен и Null –положение не определено.

Ниже приведен код, инициализирующий форму, представленную на Рис. 12‑17 (элементы управления формы имеют следующие имена: кнопка ОК – cmdOK, кнопка Отмена – cmdОтмена, флажок Осенний семестр – chkОсень, флажок Весенний семестр – chkВесна).

Рис. 12‑17

Private Sub UserForm_Initialize()

cmdOK.Default = True

cmdОтмена.Cancel = True

chkОсень.Caption = "Осенний семестр"

chkВесна.Caption = "Весенний семестр"

chkОсень.Value = True

End Sub

Эти же свойства можно было бы задать в окне свойств (Рис. 12‑18).

Рис. 12‑18. Инициализация свойств флажка chkОсень

Как проверить, например, в каком состоянии находится флажок chkОсень? Для этого надо воспользоваться свойством Value [17]:

If chkОсень.Value = True Then

‘Делее следуют команды, которые выполняются, когда флажок установлен:

...

Else

‘В противном случае (т.е. когда флажок сброшен):

...

End If

Выключатель (ToggleButton)

Выключатель идентичен флажку с той разницей, что его состояние иначе отображается на экране. Он выглядит как кнопка, которая, в зависимости от состояния, нажата или отпущена (Рис. 12‑19).

Рис. 12‑19. Выключатель (ToggleButton)

Так же как и у флажка к этим двум состояниям может быть добавлено третье – неопределенное.

Основным событием, связанным с выключателем, является событие Click. Важнейшие свойства – такие же как у флажка (Caption, TripleState и Value). Проверка состояния переключателя подобна проверке состояния, в котором находится флажок.



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 110; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.106.176 (0.007 с.)