Читайте также:
|
|
1. Активизируйте форму Form1. Задайте свойству Name значение frmHR, а свойству Caption — значение Отдел кадров.
2. Добавьте на форму три надписи и задайте их свойства.
Name: | Text: |
lblDept | Отдел |
lblManager | Менеджер? |
lblEmpID | Код сотрудника |
3. Добавьте на форму комбинированное поле и поместите его рядом с надписью lblDept. Задайте его свойства.
Name: | Style: |
cboDept | 2 - Dropdown List |
4. Добавьте два переключателя и задайте их свойства.
Name: | Caption: | Value: |
optYes | &Да | True |
optNo | &Нет |
5. Теперь нужно позаботиться о вводе кода сотрудника. Добавьте на форму текстовое поле и задайте его свойства.
Name: | Text: | |
txtEmpID | - | |
6. Наконец, поместите на форму кнопку.
Name: | Caption: |
cmdGetPE | &Получить оценку |
Разместите элементы так, как показано на рис. 15.4.
Рис. 15.4. Диалоговое окно Отдел кадров
7. Откройте окно программы и вставьте следующий фрагмент в секцию (General) (Declarations):
Option Explicit
Private hr As clsHR
8. Добавьте следующий фрагмент в процедуру события Form_Load():
Private Sub Form_Load()
' Создать экземпляр объекта HR
Set hr = New clsHR
'Добавить в список коды отделов
cboDept.Addltem "1"
cboDept.Addltem "2"
End Sub
Давайте на минуту задержимся и присмотримся к этому фрагменту. Команда New создает новый экземпляр класса clsHR. Перед тем как пользоваться классом, необходимо создать объект.
9. Перейдите к процедуре Form_Unload() и добавьте следующий фрагмент:
Private Sub Form_Unload(Cancel As Integer)
Set hr = Nothing
End Sub
ПРИМЕЧАНИЕ Созданный объект надо уничтожить, когда в нем отпадет надобность. Для этого следует присвоить объекту Nothing, как это делалось на шаге 9. В противном случае объект останется в памяти.
10. Добавьте код, предназначенный для обработки нажатия кнопки cmdGetPE:
Private Sub cmdGetPE_Click()
Dim rc As Boolean
Dim msg As String
hr.Dept = Val(cboDept.Text)
hr.Manager = optYes.Value
hr.EmpID = Val(txtEmpID.Text)
If hr.GetRecord = True Then
msg = "Код сотрудника: " & _
Trim$(Str$(hr.EmpID)) & vbCrLf
msg = msg & "Имя сотрудника: " & _
Trim$(Str$(hr.EmpName)) & vbCrLf
msg = msg & "Оценка: &
hr.EmpPerformance
MsgBox msg
Else
msg = "He удалось получить сведения!" & vbCrLf
msg = msg & hr.Reason
End If
End Sub
Сохраните проект и запустите его. Вы можете выбрать код сотрудника от 1 до 3. Если вас интересует оценка его работы, не забудьте сообщить, что вы менеджер. Поиграйте с параметрами и проследите за результатами. На экране появляется диалоговое окно, в котором содержится либо имя и оценка сотрудника, либо сообщение об отказе в доступе (рис. 15.5).
Рис. 15.5. Класс HR за работой
Напоследок я покажу, как создать событие и сделать так, чтобы наш класс мог «отвечать» приложению:
1. Нажмите кнопку ОК, чтобы очистить окно сообщения (если это не было сделано ранее), и завершите приложение кнопкой [х] в правом верхнем углу формы.
2. Чтобы создать процедуру события, необходимо объявить ее в классе, для этого используется объявление вида Public Event. Вставьте следующую строку в секцию (General)(Declarations) класса clsHR:
Public Event ShowEval(Eval As String)
Обратите внимание: после того как событие будет включено в класс, вы должны вызвать (инициировать) его. В Visual Basic для этой цели применяется команда RaiseEvent.
3. Вместо того чтобы возвращать оценку работы в виде свойства, мы будем возвращать ее с помощью события. Удалите следующую строку из секции (General) (Declarations) класса clsHR:
Public EmpErformance As String
4. Также удалите из события (Class)(Initialize) следующую строку:
EmpPerformance=""
5. Перейдите к функции GetRecord() и удалите ее текущее содержимое. Замените его следующим кодом:
Private Function GetRecord() As Boolean
Dim EmpPerformance As String
If Manager = True Then
If Dept = GetDeptO Then
EmpName = GetEmpName()
EmpPerformance = GetPerfEval()
Reason = ""
GetRecord = True
Else
Reason = "Доступ к личным делам сотрудников " _
& "из других отделов запрещен"
GetRecord = False
End If
Else
Reason = "Доступ к личным делам сотрудников _
"разрешен только менеджерам"
GetRecord = False
End If
RaiseEvent ShowEval(EmpPerformance)
End Function
6. Откройте окно программы для формы frmHR.
7. Вставьте в секцию (General)(Declarations) объявление следующего вида:
Private WithEvents hr As clsHR
Ключевое слово WithEvents сообщает Visual Basic о том, что класс поддерживает события, доступ к которым может осуществляться из формы.
8. Для вывода результатов оценки необходимо добавить код в процедуру (hr) (ShowEval). Вставьте следующий фрагмент:
Private Sub hr_ShowEval(eval As String)
Dim msg As String
If eval <> "' Then
msg = "Код сотрудника: " & _
Trim$(Str$(hr.EmpID)) & vbCrLf
msg = msg & "Имя сотрудника: " & _
Trim$(Str$(hr.EmpName)) & vbCrLf
msg = msg & "Оценка: " & _
hr.EmpPerformance
Else
msg = "He удалось получить сведения!"
End If
MsgBox msg
End Sub
Сохраните и запустите проект. Поведение вашего приложения практически не изменилось, однако для достижения прежнего результата используется другой код. Продемонстрированная методика удобна в тех случаях, когда вам неизвестно, сколько времени займет процесс. Благодаря событиям ваша программа продолжит работу, не дожидаясь реакции пользователя! Класс сам сообщит о своей готовности.
ПОДСКАЗКА Чтобы использовать события в классе, необходимо предварительно определить событие конструкцией Public Event имя_ события() в секции (General)(Declarations) класса. После этого событие инициируется командой RaiseEvent. Наконец, при создании объекта в форме используется ключевое слово WithEvents.
Мы создали простейший объект на Visual Basic. Обратите внимание — сам по себе он не отображается на экране, но мы создали интерфейс для работы с ним. Некоторые объекты содержат встроенные формы, но большинство обходится без них. Создать класс не так уж сложно, если выделить время на проектирование перед тем, как приступать к написанию программы.
Дата добавления: 2015-07-20; просмотров: 66 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Создание класса | | | Работа с окном просмотра объектов |