Изучение возможностей создания MDI-приложений (multiple document interface)

2



Цель работы: изучение возможностей создания MDI – приложений, записи информации в файлы и использование технологии OLE при работе с приложениями MS Office



Задание 1. Разработайте MDI – приложение, позволяющее вводить информацию о студентах: фамилия, имя, факультет, группа (в качестве дочерней формы можно использовать разработанное приложение в задании 4 лабораторной работы 5 – 6). Приложение должно обеспечивать возможность выводить данные о выбранном студенте в существующую дочернюю форму или создавать для каждого студента свою форму.



Запускаем Visual Basic 6.0. Выбираем “StandartEXE”.

Добавляем в проект MDI - форму. Для этого открываем меню «Проект» → «Добавить MDI - форму»

У Form1 устанавливаем значение свойства Child равным True.

Создаем меню для MDI - формы, состоящее из пунктов «Добавить форму», «Добавить студента», «Выход» и «Вид окон». 

Также добавляем в проект модуль.

Код для MDI – формы:



Dim i As Integer

Private Sub New_form_Click()

Dim newform As New Form1

newform.Show

newform.Caption = "Новый студент"

End Sub



Private Sub New_student_Click()

add_student

End Sub

Private Sub Exit_Click()

End

End Sub



Private Sub WindowArrange_Click()

MDIForm1.Arrange vbArrangeIcons

End Sub



Private Sub WindowCascade_Click()

MDIForm1.Arrange vbCascade

End Sub



Private Sub WindowTileH_Click()

MDIForm1.Arrange vbTileHorizontal

End Sub



Private Sub WindowTileV_Click()

MDIForm1.Arrange vbTileVertical

End Sub



Код для Form1:



Private Sub Command1_Click()

Unload Me

End Sub



Код для Модуля1;



Private Type StudentType

fam As String * 30

Name As String * 20

Fac As String * 10

Gru As String * 10

End Type



Public tmp As StudentType

Public arr() As StudentType

Public col As Integer



Sub add_student()

Do

wrk

If MsgBox("Добавить еще студента???", vbYesNo, "Еще??") = vbNo Then: Exit Do

Loop

End Sub

Sub form_active()

If MDIForm1.ActiveForm Is Nothing Then

Dim tmpfrm As New Form1

tmpfrm.Show

End If

End Sub



Sub wrk()

Dim i As Integer

Dim tmp_str As String

 A = MsgBox("Добавить в эту же форму???", vbYesNo, "Куда???")

If A = vbNo Then

Dim tmpfrm As New Form1

tmpfrm.Show

tmpfrm.Caption = "Новый студент"

End If

form_active

Inp_inf_stud tmp

ReDim Preserve arr(col)

arr(col) = tmp

col = col + 1

For i = 0 To 3

With arr(col - 1)

Select Case i

Case 0: tmpstr = .fam

Case 1: tmpstr = .Name

Case 2: tmpstr = .Fac

Case 3: tmpstr = .Gru

End Select

End With

MDIForm1.ActiveForm.List1(i).AddItem tmpstr

Next i

End Sub



Private Sub Inp_inf_stud(ByRef StudentData As StudentType)

Dim s(3) As String

Dim i As Integer

i = 0

Do Until i > 3

Select Case i

Case 0: s(0) = InputBox("Введите фамилию", "Студент")

Case 1: s(1) = InputBox("Введите имя", "Студент")

Case 2: s(2) = InputBox("Введите факультет", "Студент")

Case 3: s(3) = InputBox(“Введите группу", "Студент")

End Select

For n = 0 To 3

If s(n) = "" Then s(n) = "Нет данных"

Next n

With StudentData

Select Case i

Case 0: .fam = s(0)

Case 1: .Name = s(1)

Case 2: .Fac = s(2)

Case 3: .Gru = s(3)

End Select

End With

For n = 0 To 3

s(n) = ""

Next n 

i = i + 1

Loop

End Sub



Запускаем приложение (рис.1-3)





Рис.1 MDI – приложение: окна каскадом




Рис.2 MDI – приложение: окна ориентированы вертикально





Рис.3 MDI – приложение: ввод данных



Задание 2. Осуществите запись полученной информации в файл



Добавляем в проект пункт меню «Сохранить все» (для MDI – формы).

Для события save_Click пишем код:




Private Sub save_Click()

Dim FNamber As Integer

Dim adress As String

Dim i As Integer

Dim k As Integer

FNamber = FreeFile()

adress = InputBox("Введите адрес файла, в котором сохранится информация", "Сохранить как", "E:\student.txt")

Open adress For Random Access Write As FNamber Len = Len(arr(i))

Do

If i = col Then: Exit Do

k = i + 1

Put #FNamber, k, arr(i)

i = i + 1

Loop

Close FNamber

End Sub



Запускаем приложение (рис.4,5)





Рис.4 Сохранение данных в файл




Рис.5 Текстовый файл с данными о студенте



Задание 3.

Запишите данные в рабочий ЛИСТ 1 приложения EXCEL интегрированного пакета MS OFFICE.



Добавляем в проект пункт меню «Экспортировать в Excel» (для MDI – формы). Подключаем к Visual Basic 6.0 библиотеку объектов Excel. Для этого открываем меню «Проект» → «Информация». Выбираем Microsoft Excel 11.0 Object Library.

Для события Excel_Click записываем код:



Private Sub Excel_Click()

Dim appl As New Excel.Application

Dim wb As Excel.Workbook

Dim ws As Excel.Worksheets

Set appl = New Excel.Application

appl.Visible = True

Set wb = appl.Workbooks.Add

With wb.Worksheets("Лист1")

Dim i As Integer

Dim j As Integer

For i = 0 To co - 1

For j = 1 To 4

Select Case j

Case 1: .Cells(i + 1, j) = arr(i).fam

Case 2: .Cells(i + 1, j) = arr(i).Name

Case 3: .Cells(i + 1, j) = arr(i).Fac

Case 4: .Cells(i + 1, j) = arr(i).Gru

End Select

Next j

Next i

End With

End Sub



Запускаем приложение (рис.6)





Рис.6 Файл EXCEL с данными о студенте




Вывод:



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

Также были изучены основные приемы работы с записью данных в файл, а также экспорт данных в приложения Microsoft Office, на примере MS Excel интегрированного пакета MS Office.