Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Использование класса
1. Активизируйте форму Form1. Задайте свойству Name значение frmHR, а свойству Caption — значение Отдел кадров. 2. Добавьте на форму три надписи и задайте их свойства.
3. Добавьте на форму комбинированное поле и поместите его рядом с надписью lblDept. Задайте его свойства.
4. Добавьте два переключателя и задайте их свойства.
5. Теперь нужно позаботиться о вводе кода сотрудника. Добавьте на форму текстовое поле и задайте его свойства.
6. Наконец, поместите на форму кнопку.
Разместите элементы так, как показано на рис. 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. Обратите внимание — сам по себе он не отображается на экране, но мы создали интерфейс для работы с ним. Некоторые объекты содержат встроенные формы, но большинство обходится без них. Создать класс не так уж сложно, если выделить время на проектирование перед тем, как приступать к написанию программы.
|