Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Основные свойства элемента управления ListBoxСодержание книги
Поиск на нашем сайте Перечислим основные свойства списка.
Методы ListBox
Заполнение списка Заполнить список можно одним из следующих способов. § Поэлементно (список состоит из одной колонки): 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. Кроме того, у этого элемента есть ряд уникальных свойств. Вот некоторые из них:
Основным событием, связанным с ComboBox, является событие Change. Пример создания поля со списком Предположим, что нам надо создать форму, с помощью которой пользователь выбирает кафедру:
Данные, на основе которых формируется поле со списком, находятся в первом столбце на листе Кадры, в книге C:\ St\Институт. xls (Рис. 12‑14). Тогда фрагмент кода, который формирует поле со списком, запишется так: 'Объявляем переменные и массивы: Dim Кафедры() As String Dim Кафедра As String Dim НомерСтроки As Integer Dim КолСотрудников As Integer Dim КолКафедр As Integer .... 'Формируем список кафедр, которые встречаются в первом _ столбце на листе Кадры: КолКафедр = 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
Ниже приведен код, инициализирующий форму, представленную на Рис. 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; просмотров: 157; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (0.007 с.) |
|||||||||||||||||||||||||||||||||||||||||||||||||||