Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 110; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.106.176 (0.007 с.) |