Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

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






Использование класса




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. Обратите внимание — сам по себе он не отображается на экране, но мы создали интерфейс для работы с ним. Некоторые объекты содержат встроенные формы, но большинство обходится без них. Создать класс не так уж сложно, если выделить время на проектирование перед тем, как приступать к написанию программы.

 


mylektsii.ru - Мои Лекции - 2015-2019 год. (0.009 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал