Помощь в написании студенческих работ
Антистрессовый сервис

Процедуры обработки событий

РефератПомощь в написанииУзнать стоимостьмоей работы

В этом месте снова запустите проект для проверки взаимодействия основного файла базы данных с файлом-справочником, но сохранять записи также пока невозможно, так как не реализована кнопка «Добавить». Не забывайте регулярно сохранять проект. Для работы пользователя с файлом справочником на форму были помещены кнопки cmdAddSpec, cmdEditSpec и cmdDelSpec, соответственно, для добавления, изменения… Читать ещё >

Процедуры обработки событий (реферат, курсовая, диплом, контрольная)

Для работы пользователя с файлом справочником на форму были помещены кнопки cmdAddSpec, cmdEditSpec и cmdDelSpec, соответственно, для добавления, изменения и удаления записей в файле справочнике. Опишем процедуры обработки событий нажатия на эти кнопки.

Процедура обработки события для добавления записи в файл-справочник.

Private Sub cmdAddSpec_Click (ByVal sender As System. Object,_.

ByVal e As System. EventArgs) Handles cmdAddSpec.Click.

Dim TempStr As String.

Dim Sp As TSpec = New TSpec ().

Dim tempIndex As Integer.

' текущая форма становится неактивной.

Me.Enabled = False.

' до тех пор пока пользователь не введет число, происходит.

' запрос учетного номера новой специальности.

TempStr = InputBox («Введите учетный номер специальности», _.

" Ввод данных").

Do While Not (IsNumeric (TempStr)).

If (TempStr = «») Then.

Me.Enabled = True.

Exit Sub.

End If.

MsgBox («Ошибка ввода», vbOKOnly + vbExclamation, _.

" Ошибка").

TempStr = InputBox («Введите учетный номер» + _.

" специальности", «Ввод данных»).

Loop.

' учетный номер записывается в структуру Sp.

Sp.Code = CByte (TempStr).

' запрос кода специальности.

TempStr = InputBox («Введите код сциальности (6 цифр)», _.

" Ввод данных").

' код записывается в структуру Sp.

Sp.Number = TempStr.

' запрос названия новой специальности.

TempStr = InputBox («Введите название специальности», _.

" Ввод данных").

' название записывается в структуру Sp.

Sp.Name = TempStr.

' проверяется попытка повторного использования учетного.

' номера специальности в файле справочнике.

tempIndex = FindSpecIndex (Sp.Code).

' если такой номер уже есть,.

If 0 tempIndex Then.

' то выводится сообщение о возможности изменения данных.

If (vbYes = MsgBox («Такой учетный номер уже есть! «_.

+ «Перезаписать?», vbYesNo + vbExclamation, _.

" Предупреждение")) Then.

' изменение данных записи.

Sp.writeToFile (F1_sp, tempIndex).

End If.

Else.

' добавление новой записи в справочник.

Sp.writeToFile (F1_sp, NSpec + 1).

End If.

' вызов пользовательской процедуры загрузки записей.

' справочника в элемент ComSpec.

Call LoadSprav ().

' текущая форма становится активной.

Me.Enabled = True.

End Sub.

Процедура обработки события изменения записи в файле-справочнике.

Private Sub cmdEditSpec_Click (ByVal sender As System. Object, _.

ByVal e As System. EventArgs) Handles cmdEditSpec.Click.

Dim Sp As TSpec = New TSpec ().

Dim i As Integer.

' текущая форма становится неактивной.

Me.Enabled = False.

' чтение текущей записи из файла-справочника.

i = ComSpec.SelectedIndex.

Sp.ReadFromFile (F1_sp, i).

' запрос на изменение кода специальности.

If (vbNo = MsgBox («Код специальности оставить без» + _.

" изменения?", vbYesNo + vbExclamation, «Вопрос:»)) Then.

Sp.Number = InputBox («Введите новый код «+ _.

" специальности (6 цифр)", «Ввод данных»).

End If.

' запрос на изменение кода специальности.

If (vbNo = MsgBox («Название специальности оставить «+ _.

" без изменения?", vbYesNo + vbExclamation, _.

" Вопрос:")) Then.

Sp.Name = InputBox («Введите новое название «+ _.

" специальности", «Ввод данных»).

End If.

' запись обновленных данных.

Sp.writeToFile (F1_sp, i).

' вызов пользовательской процедуры загрузки записей.

' справочника в элемент ComSpec.

Call LoadSprav ().

' текущая форма становится активной.

Me.Enabled = True.

End Sub.

Процедура обработки события удаления записи из файла-справочника.

Private Sub cmdDelSpec_Click (ByVal sender As System. Object, _.

ByVal e As System. EventArgs) Handles cmdDelSpec.Click.

Dim i As Integer.

Dim j As Integer.

Dim ListIndex As Integer.

Dim Sp As TSpec = New TSpec ().

Dim R As TStud = New TStud ().

Dim TempFile As FileStream.

' текущая форма становится неактивной.

Me.Enabled = False.

' сообщение о возможности удаления записей.

' из основного файла.

If (vbNo = MsgBox («Внимание!!! Все данные, «+ _.

" содержащие удаляемую информацию будут уничтожены!" + _.

" Продолжить?", vbYesNo + vbExclamation, _.

" Предупреждение:")) Then.

' если была нажата кнопка «Нет», то выход из процедуры.

' и текущая форма становится неактивной.

Me.Enabled = True.

Exit Sub.

End If.

' отметка на удаление всех записей основного файла базы,.

' в которых содержится информация об удаляемой спец-ности.

ListIndex = ComSpec.SelectedIndex.

If ListIndex 0 Then.

Sp.ReadFromFile (F1_sp, ListIndex).

For i = 1 To N.

R.ReadFromFile (f1, i).

If R. Spec = Sp. Code Then.

Del (i) = 1.

End If.

Next i.

End If.

' запись во временный файл всех данных, за исключением.

' данных об удаляемой специальности.

TempFile = New FileStream (PathTemp, FileMode. Create).

j = 1.

For i = 1 To NSpec.

Sp.ReadFromFile (F1_sp, i).

If i ListIndex Then.

Sp.writeToFile (TempFile, j).

j = j + 1.

End If.

Next i.

F1_sp.Close ().

TempFile.Close ().

' перезапись измененного файла-справочника.

Kill (PathSpec).

Rename (PathTemp, PathSpec).

' загрузка обновленного файла-справочника.

F1_sp = New FileStream (PathSpec, FileMode. Open).

' вызов пользовательской процедуры загрузки записей.

' справочника в элемент ComSpec.

Call LoadSprav ().

' текущая форма становится активной.

Me.Enabled = True.

' вызов процедуры удаления отмеченных записей.

' основного файла данных.

cmdPack_Click (sender, e).

End Sub.

В этом месте снова запустите проект для проверки взаимодействия основного файла базы данных с файлом-справочником, но сохранять записи также пока невозможно, так как не реализована кнопка «Добавить». Не забывайте регулярно сохранять проект.

Процедура обработки события нажатия на кнопку «Добавить» обеспечивает добавление записи в файл базы данных и подготовку к вводу полей новой записи.

Private Sub cmdAdd_Click (ByVal sender As System. Object, _.

ByVal e As System. EventArgs) Handles cmdAdd.Click.

Dim R As TStud = New TStud ().

Dim Sp As TSpec = New TSpec ().

' заполнение полей записи.

R.FIO = txtFIO.Text.

R.Kurs = CByte (txtKurs.Text).

R.Group = CByte (txtGroup.Text).

R.Kol = CByte (txtKol.Text).

R.Pol = CByte (ComPol.SelectedIndex).

R.Spec = FindSpecCode (ComSpec.SelectedIndex).

R.DataR = txtDR.Value.

' проверка корректности введенных данных в поле.

' специальности.

If R. Spec = 0 Then.

MsgBox («Неверное значение поля специальность!»).

Exit Sub.

End If.

' проверка непустоты полей оценок.

If (txtM1.Text = «») Or (txtM2.Text = «») Or _.

  • (R.Kol > 2) And (txtM3.Text = «») Or _
  • (R.Kol > 3) And (txtM4.Text = «») Or _
  • (R.Kol > 4) And (txtM5.Text = «») Then

MsgBox («Введены не все оценки!»).

Exit Sub.

End If.

R.M (0) = CByte (txtM1.Text).

R.M (1) = CByte (txtM2.Text).

If R. Kol > 2 Then R. M (2) = CByte (txtM3.Text).

If R. Kol > 3 Then R. M (3) = CByte (txtM4.Text).

If R. Kol > 4 Then R. M (4) = CByte (txtM5.Text).

' позиция передвигается,.

Pos = N + 1.

' количество записей увеличивается.

N = N + 1.

' запись вносится в файл.

R.writeToFile (f1, Pos).

' кнопки «Начало» и «Назад» становятся активными.

cmdTop.Enabled = True.

cmdBackUp.Enabled = True.

cmdExit.Focus ().

' вызов процедуры для заполнения новой записи.

Call ShowNewZap ().

End Sub.

А теперь попытайтесь заполнить файл данными (1−2 записи) и закрыть форму frmInputEdit с сохранением файлов.

Заметим, что количество видимых на форме элементов txtM"i", предназначенных для ввода оценок прямо зависит от содержимого элемента txtKol. Таким образом, скрытие лишних видимых элементов и показ нужных невидимых элементов txtM"i" должны зависеть от изменения содержимого txtKol, т. е. далее необходимо обработать событие изменения содержимого элемента txtKol. Приведем код процедуры обработки этого события.

Private Sub txtKol_ValueChanged (ByVal sender As System. Object,_.

ByVal e As System. EventArgs) Handles txtKol.ValueChanged.

Dim i As Integer = txtKol.Value.

' все элементы, соответствующие оценкам скрываются.

txtM1.Visible = False.

txtM2.Visible = False.

txtM3.Visible = False.

txtM4.Visible = False.

txtM5.Visible = False.

' открываются первые несколько элементов.

' их количество зависит от значения элемента txtKol.

If i > 0 Then txtM1. Visible = True.

If i > 1 Then txtM2. Visible = True.

If i > 2 Then txtM3. Visible = True.

If i > 3 Then txtM4. Visible = True.

If i > 4 Then txtM5. Visible = True.

End Sub.

Таким образом, при изменении содержимого элемента txtKol все элементы txtM, соответствующие оценкам скрываются, затем открывается столько элементов, сколько указано в содержимом элемента txtKol.

Кроме этого необходимо предусмотреть проверку корректности вводимых данных в поля, соответствующие оценкам. Это можно сделать с помощью следующей обработки события изменения содержимого элементов txtM.

Private Sub txtM_TextChanged (ByVal sender As System. Object, _.

ByVal e As System. EventArgs) Handles txtM5. TextChanged, _.

txtM4.TextChanged, txtM3. TextChanged, txtM2. TextChanged, _.

txtM1.TextChanged.

Dim txtM As TextBox = sender.

' если содержимое элемента txtM (Index) является числом.

If IsNumeric (txtM.Text) = True Then.

' и не находится в пределах от 2 до 5,.

If CByte (txtM.Text) 5 Then.

' пользователь получает предупреждение об ошибке.

MsgBox («Неверная оценка», vbExclamation + vbOKOnly, _.

" Ошибка").

End If.

ElseIf txtM. Text «» Then.

' если содержимое не является цифрой,.

' пользователь получает предупреждение об ошибке.

MsgBox («Оценка должна являться цифрой!», vbOKOnly + _.

vbExclamation, «Ошибка»).

End If.

End Sub.

В этом месте нужно выполнить полное тестирование формы frmInputEdit, для этого необходимо заполнить файл данными (4−5 записей) и сохранить его.

Кроме ввода новых данных форма frmInputEdit должна позволять просматривать и редактировать существующие данные, для этого необходимо описать перемещение по записям нашей базы данных. Для перемещения по записям будем использовать кнопки «Начало» (cmdTop), «Конец» (cmdBottom), «Назад» (cmdBackUp) и «Вперед» (cmdForward). Опишем обработку событий нажатия для каждой кнопки:

Private Sub cmdTop_Click (ByVal sender As System. Object,_.

ByVal e As System. EventArgs) Handles cmdTop.Click.

' вывод первой записи данных.

Pos = 1.

Call ShowZap (Pos).

' кнопки перемещения по записям становятся активными.

frmMenu.Text = frmMenu. Text + «Авт» .

cmdTop.Enabled = True.

cmdBottom.Enabled = True.

cmdForward.Enabled = True.

cmdBackUp.Enabled = True.

' кнопки «Изменить» и «Обновить» становятся активными.

cmdEdit.Enabled = True.

cmdPack.Enabled = True.

' кнопка «Добавить» становится неактивной.

frmMenu.Text = frmMenu. Text + «ор: «.

cmdAdd.Enabled = False.

' фокус передается на кнопку «Выход».

cmdExit.Focus ().

End Sub.

Private Sub cmdBottom_Click (ByVal sender As System. Object, _.

ByVal e As System. EventArgs) Handles cmdBottom.Click.

' вывод последней записи данных.

Pos = N.

Call ShowZap (Pos).

' кнопки перемещения по записям становятся активными.

frmMenu.Text = frmMenu. Text + «дов «.

cmdTop.Enabled = True.

cmdBottom.Enabled = True.

cmdForward.Enabled = True.

cmdBackUp.Enabled = True.

' кнопки «Изменить» и «Обновить» становятся активными.

cmdEdit.Enabled = True.

cmdPack.Enabled = True.

' кнопка «Добавить» становится неактивной.

cmdAdd.Enabled = False.

' фокус передается на кнопку «Выход».

cmdExit.Focus ().

End Sub.

Private Sub cmdBackUp_Click (ByVal sender As System. Object, _.

ByVal e As System. EventArgs) Handles cmdBackUp.Click.

' переход на предыдущую позицию.

Pos = Pos — 1.

' все кнопки становятся активными.

frmMenu.Text = frmMenu. Text + «рохо» .

cmdTop.Enabled = True.

cmdBottom.Enabled = True.

cmdForward.Enabled = True.

cmdEdit.Enabled = True.

cmdPack.Enabled = True.

' если запись первая, то кнопка «Назад».

' становится неактивной.

If Pos <= 1 Then.

cmdBackUp.Enabled = False.

Pos = 1.

End If.

' вывод записи с номером Pos.

Call ShowZap (Pos).

End Sub.

Private Sub cmdForward_Click (ByVal sender As System. Object, _.

ByVal e As System. EventArgs) Handles cmdForward.Click.

' переход на следующую позицию.

frmMenu.Text = frmMenu. Text + «Ско» .

Pos = Pos + 1.

' если была не последняя запись,.

If Pos <= N Then.

' то переход на следующую запись.

vscrZap.Value = Pos.

Call ShowZap (Pos).

cmdBackUp.Enabled = True.

cmdExit.Focus ().

Else.

' иначе вызов процедуры для заполнения новой записи.

Call ShowNewZap ().

End If.

End Sub.

Для перемещения по записям базы данных можно использовать полосу прокрутки (элемент управления VscrZap). При помощи полосы прокрутки можно перемещаться на одну или несколько записей в базе. Процедура обработки события изменения значения имеет вид:

Private Sub vscrZap_Scroll (ByVal sender As System. Object, _.

ByVal e As System.Windows.Forms.ScrollEventArgs) _.

Handles vscrZap.Scroll.

` максимальное значение полосы прокрутки равно.

` количеству записей.

VScrZap.Maximum = N.

` перемещение на запись по значению полосы прокрутки.

Pos = VScrZap.Value.

Call ShowZap (Pos).

End Sub.

Заметим, что во всех этих процедурах обработки событий нажатия на кнопки вызывается процедура ShowZap. Эта процедура позволяет загрузить в элементы формы все поля указанной записи, т. е. именно она обеспечивает просмотр определенной записи в данных.

Новый этап тестирования проекта для проверки возможности перемещения по записям базы данных с использованием описанных возможностей.

Описав процедуры обработки событий и пользовательские процедуры, мы подготовили инструменты для работы с отдельными записями файла базы данных, и теперь можно перейти к созданию «реальной» базы данных.

Для очередного этапа тестирования проекта необходимо подготовить тестовый файл, в котором должно быть 15−20 записей с разными значениями курсов (2−3 курса), для каждого значения курса должно быть несколько групп (2−3 группы), в каждой группе должно быть несколько студентов (3−4 студента).

Создайте файл, удовлетворяющий описанным выше требованиям, и сохраните его в папке проекта. Этот файл будет использоваться для тестирования заявленных функций приложения.

Показать весь текст
Заполнить форму текущей работой