Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




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

Private Sub cmdOK_Click()

Dim Кафедра As String

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

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

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

Unload Me

End Sub

Задание:

В модуле формы frmКафедра наберите и протестируйте эту программу.

Создание взаимосвязанных элементов управления

Предположим, что нам надо создать форму, которая позволяла бы осуществлять выбор преподавателей любой кафедры[11] (Рис. 10‑11):

Рис. 10‑11. Пример формы с взаимосвязанными списками

ТРЕБУЕТСЯ:

1. Создать форму Институт (выполните самостоятельно!) и написать программу инициализации формы, в которой список кафедр и преподавателей формируются на основе данных, расположенных в первом столбце на листе Кадры в книге C:\St\Институт.xls (Рис. 10‑10).

2. Поле со списком Выберите кафедру и список Укажите преподавателей организовать как взаимосвязанные списки. Это значит, что при выборе пользователем какой-то кафедры должен автоматически формироваться список преподавателей этой кафедры.

Начальные условия

1) при создании формы присвойте следующие имена элементам управления:

­ кнопке ОК – cmdOK

­ кнопке Отмена – cmdОтмена

­ полю со списком – cboКафедра

­ списку –lstСотрудник

2) саму форму назовите frmИнститут.

ВЫПОЛНЕНИЕ ЗАДАНИЯ:

1. После того как форма создана, в Модуль10 наберите следующий код:

Sub ВзаимосвязанныеСписки()

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

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

Dim Кафедра As String

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

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

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

'2. Проверяем существование книги C:\St\Институт.xls

Call НаличиеКниги("C:\St\Институт.xls")

If flagНаличие = 0 Then Exit Sub

'3. Проверяем существование листа Кадры

Call НаличиеЛиста("Кадры")

If flag = 0 Then Exit Sub

'4. Формируем список кафедр:

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

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

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

Loop

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

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

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

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

If Trim(Cells(i + 1, 1).Value) <> "" Then

Кафедра = Trim(Cells(i + 1, 1).Value)

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

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

Next j

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

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

Кафедры(КолКафедр) = Trim(Cells(i + 1, 1).Value)

End If

n3: Next i

'5. Сортируем названия кафедр:

Call СортировкаМассива(КолЭлементов)

'6. Заполняем поле со списком и выводим форму на экран:

frmИнститут.cboКафедра.List = Кафедры

frmИнститут.Show

End Sub

2. Дважды щелкните (в форме!) по элементу cboКафедра - появится пустая процедура Private Sub cboКафедра_Change. Далее наберите следующий код:

Option Base 1

Private Sub cboКафедра_Change()

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

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

'1. Отбираем сотрудников кафедры АСУ в массив Преподаватели:

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

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

Worksheets("Кадры").Select

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

If Trim(Cells(НомерСтроки, 1).Value) = _

cboКафедра.Value Then

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

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

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

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

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

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

End If

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

Wend

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

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

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

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

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

Next i

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

With lstCотрудник

.ColumnCount = 2

.MultiSelect = fmMultiSelectMulti

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

End With

End Sub

3. Расширим постановку задачи: при щелчке по кнопке ОК выведем информацию о том, какую кафедру и скольких преподавателей выбрал пользователь:

Private Sub cmdOK_Click()

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

Dim Кафедра As String

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

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

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

End If

Next i

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

" преподавателей кафедры " & Кафедра & "!", _

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

Unload Me

End Sub

4. В завершение введем код для обработки события «щелчок по кнопке Отмена»:

Private Sub cmdОтмена_Click()

Unload Me

End Sub

5. Протестируйте работу созданного приложения.

6. В процедуре ВзаимосвязанныеСписки установите точку останова в строке: frmИнститут.cboКафедра.List = Кафедры, запустите эту программу и далее выполните её в пошаговом режиме. Обратите внимание на передачу управления во подпрограмму Private Sub cboКафедра_Change().

Флажок (CheckBox)

Следующие элементы управления используются для большей наглядности вариантов выбора, когда их количество невелико. К ним относятся такие элементы управления как CheckBox, ToggleButton и OptionButton.

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

Рис. 10‑12. Форма с флажками

ТРЕБУЕТСЯ: создать форму (выполните самостоятельно!) и написать программу её инициализации.

Начальные условия

1) при создании формы присвойте следующие имена элементам управления:

­ кнопке ОК – cmdOK

­ кнопке Отмена – cmdОтмена

­ флажку Осенний семестр – chkОсень

­ флажку Весенний семестр – chkВесна

2) саму форму назовите frmСеместрCheckBox.

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

Sub frmСеместрCheckBox_Initialize()

cmdOK.Default = True

cmdОтмена.Cancel = True

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

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

chkОсень.Value = True

End Sub

Задание:

1. В Модуль11 наберите и протестируйте программу frmСеместрCheckBox_Initialize.

2. В модуле формы frmСеместрCheckBox напишите программу обработки события «щелчок/нажатие кнопки cmdОтмена», которая выгружает форму из памяти.

Расширим задачу и выведем на экран сообщение с информацией о том, какой семестр(ы) выбрал пользователь.

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

Private Sub cmdOK_Click()

If ChkОсень.Value = True And chkВесна.Value = True Then

MsgBox "Выбраны оба семестра!", vbInformation, _

"Сообщение"

ElseIf ChkОсень.Value = True And chkВесна.Value = False Then

MsgBox "Выбран осенний семестр!", vbInformation, _

"Сообщение"

ElseIf ChkОсень.Value = False And chkВесна.Value = True Then

MsgBox "Выбран осенний семестр!", vbInformation, _

"Сообщение"

Else

MsgBox "Не выбран ни один семестр!", vbInformation, _

"Сообщение"

End If

Unload Me

End Sub

Задание:

В модуле формы наберите эту программу и протестируйте работу приложения.





Поделиться с друзьями:


Дата добавления: 2016-03-28; Мы поможем в написании ваших работ!; просмотров: 323 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наука — это организованные знания, мудрость — это организованная жизнь. © Иммануил Кант
==> читать все изречения...

2329 - | 2119 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.