Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Visual Basic и Visual Basic for Applications.doc
Скачиваний:
175
Добавлен:
01.05.2014
Размер:
579.07 Кб
Скачать

Проект 6.

Создание простого списка и его построчное сохранение в файле. Проекту присвоено имя Pro6.

При разработке проекта создаются следующие формы:

1. Загрузочная форма Form600, которая отличается от формы Form100 проекта Pro1 только значением Caption = Создание простого списка и его построчное сохранение в файле (для метки Label601);

2. Форма frmSPISOK601 – такие же свойства как у других ЭУ; аналогична frmSPISOK201;

3. Форма frmSPISOK602 - со свойствами такими же как у других ЭУ;

4. frmDialog601 – такая же как и frmDialog201 в Pro2;

5. frmDialog601 с Caption = Указание сохраняемого или открываемого файла;

содержит следующие ЭУ:

а) Label1 c Caption = Введите полное имя файла;

б) Text1 c Text = c:\Program Files\Microsoft Visual Studio\VB98\Users\*.txt;

в) кнопки Command1 c Caption = OK и Command2 c Caption = Cansel;

6. frmMenu601 – основные свойства такие же как у других ЭУ.

Форма frmDialog602 имеет следующий вид:

Форма frmMenu601 имеет следующий вид:

Проект имеет следующий состав процедур:

1) модуль процедур общего назначения под именем Mod1

Attribute VB_Name = "Mod1"

' СОЗДАНИЕ ПРОСТОГО СПИСКА И ЕГО ПОСТРОЧНОЕ

' СОХРАНЕНИЕ В ФАЙЛЕ

Public NamFile As String 'Полное имя файла

Public nF As Integer 'Дескриптор файла - номер свободного канала

Public PS As Integer 'Признак создания списка

Public SH As String 'Строка с номером группы

Sub Main()

Dim NG As Integer 'Номер группы

Form600.Visible = False

PS = 0

nF = -1

frmMenu601.Show

End Sub

'Создание нового списка

Public Sub New_Spis()

NG = InputBox("Введите № группы")

SH = " Список группы " & Str(NG)

frmSPISOK601.Form_Load

frmDialog601.Form_Load

frmDialog601.Show vbModal

frmSPISOK601.Show

PS = 1

End Sub

'Просмотр списка

Public Sub View_Spis()

If PS <> 1 Then

MsgBox "Список не создан"

Else

frmSPISOK601.Show

End If

End Sub

'Сохранение списка в файле

Sub Save_Spis()

Dim i As Integer

Dim YN As String

On Error GoTo MERR 'Перехват ошибок

nF = FreeFile()

Open NamFile For Append As nF 'Проверка сушествования файла

If LOF(nF) > 0 Then

YN = InputBox("Файл с таким именем уже существует.Заменить его -

Y/y, или не изменять - N/n")

If YN = "Y" Or YN = "y" Then

Close #nF

Open NamFile For Output As nF

GoTo M1

Else

MsgBox "Текст не сохранен ни в каком файле. Для указания нового

имени файла выполните пункт меню СОХРАНИТЬ "

GoTo M2

End If

End If

M1: Print #nF, frmSPISOK601.txtZAGOLOVOK.Text

For i = 2 To frmSPISOK601.lstGrup.ListCount + 1

Print #nF, frmSPISOK601.lstGrup.List(i - 2)

Next i

SH = ""

frmSPISOK601.lstGrup = Clear

Unload frmSPISOK601

PS = 0

Close #nF

MsgBox "Список сохранен в файле " & NamFile

M2: Close #nF

Mod1.NamFile = ""

Exit Sub

MERR: MsgBox "Имя файла задано неверно: " & NamFile

End Sub

'Открытие файла

Sub Open_File()

Dim i As Integer

Dim st As String

On Error GoTo MERR

nF = FreeFile()

Open NamFile For Append As nF 'Проверка сушествования файла

If LOF(nF) = 0 Then

MsgBox "Файл с таким именем не существует."

PS = 0

Exit Sub

End If

Close #nF

Open NamFile For Input As nF

Line Input #nF, SH

Load frmSPISOK601

i = 2

Do Until EOF(nF)

Line Input #nF, st

frmSPISOK601.lstGrup.AddItem st

i = i + 1

Loop

frmSPISOK601.Show vbModal

frmSPISOK601.lstGrup = Clear

Unload frmSPISOK601

PS = 0

Close #nF

Exit Sub

MERR: MsgBox "Имя файла задано неверно: " & NamFile

End Sub

2) процедуры обработки событий форм

'Процедуры обработки событий формы Form600

Private Sub Command601_Click()

Mod1.Main

End Sub

Private Sub Command602_Click()

End

End Sub

'Процедуры обработки событий формы frmDialog601

Public Sub cmdCommand601_Click()

frmSPISOK601.lstGrup.AddItem _

txtFamiliy.Text & " " & _

txtName.Text & " " & _

txtOtchestvo.Text

End Sub

Public Sub cmdCommand602_Click()

txtFamiliy.Text = ""

txtName.Text = ""

txtOtchestvo.Text = ""

End Sub

Public Sub cmdCommand603_Click()

frmDialog601.Hide

End Sub

Public Sub Form_Load()

txtZAGOLOVOK_Change

End Sub

Public Sub txtZAGOLOVOK_Change()

txtZAGOLOVOK.Text = SH

End Sub

'Процедуры обработки событий формы frmDialog602

Private Sub Command1_Click()

Mod1.NamFile = frmDialog602.Text1.Text

Unload frmDialog602

End Sub

Private Sub Command2_Click()

Mod1.NamFile = ""

Unload frmDialog602

End Sub

Public Sub Form_Load()

End Sub

Private Sub mnuCancel_Click()

Unload frmSPISOK601

Unload frmMenu601

Form600.Show

End Sub

'Процедуры обработки событий формы frmMenu601

Private Sub mnuNew_Click()

Mod1.New_Spis

End Sub

Private Sub mnuOpen_Click()

Dim st As String

Load frmDialog602

frmDialog602.Show vbModal

If Mod1.NamFile = "" Then

MsgBox "Имя файла не указано"

Else

Mod1.Open_File

End If

End Sub

Private Sub mnuSave_Click()

Load frmDialog602

frmDialog602.Show vbModal

If Mod1.PS = 0 Then

MsgBox "Список не создан"

ElseIf Mod1.NamFile = "" Then

MsgBox "Имя файла не указано"

Else

Mod1.Save_Spis

End If

End Sub

Private Sub mnuView_Click()

Mod1.View_Spis

End Sub

'Процедуры обработки событий формы frmSPISOK601

Private Sub cmdCommand601_Click()

frmSPISOK601.Visible = False

End Sub

Public Sub Form_Load()

txtZAGOLOVOK_Change

End Sub

Private Sub Label1_Click()

End Sub

Public Sub txtZAGOLOVOK_Change()

txtZAGOLOVOK.Text = Mod1.SH

End Sub