- •Министерство образования и науки Российской федерации
- •Предисловие
- •Часть I
- •Описание предметной области
- •2. Моделирование данных
- •3. Представление данных
- •Часть II
- •4. Предварительные замечания
- •5. Постановка задачи
- •6. Структура проекта
- •7. Создание меню
- •8. Пользовательские модули
- •9. Работа с файлами
- •10. Ввод и редактирование данных
- •11. Работа с существующим файлом
- •12. Сортировка данных
- •13. Задачи, решаемые в информационной системе
- •Часть III
- •14. Общие требования
- •15. Технические задания к проектам
- •Часть I. Проектирование информационной системы 4
- •Часть II. Реализация информационной системы «Студенты» 13
- •Часть III. Проекты для самостоятельной разработки 80
9. Работа с файлами
9.1. Использование диалогового окна Windows
Для открытия и сохранения файлов в проекте используется стандартное диалоговое окно Windows, которое создается с использованием элементов управления соответственно OpenFileDialog и SaveFileDialog. Нанесем на главную форму с меню (frmMenu) объекты для работы с диалоговыми окнами для открытия и сохранения файлов, можно оставить им те имена, которые им присвоит система (OpenFileDialog1 и SaveFileDialog1), а можем дать другие имена. Заметим, что во время выполнения приложения данные элементы управления не видны.
Окна диалога имеют определенные свойства и методы. Используемые нами в данной реализации свойства и методы для обоих типов объектов совершенно одинаковы, поэтому остановимся на свойствах только одного элемента управления при пояснении кодов процедур обработки событий для открытия и сохранения файлов. Что касается методов, то для обоих элементов будет использован метод ShowDialog() для получения имен диска, папки и файла соответственно для существующего файла и нового, сохраняемого файла.
Приведем фрагмент кода для вызова диалогового окна Windows для открытия и сохранения файлов.
‘ запрос имени файла базы данных
With OpenFileDialog1
.filename = ""
.Filter = "Все файлы (*.*)|*.*|" + _
"текстовые файлы(*.txt)|*.txt|" + _
"файлы исх. данных(*.dan)|*.dan|" + _
"файлы результата (*.rez)|*.rez"
.FilterIndex = 3
‘ метод, используемый для открытия файла
.ShowDalog()
Decl.Path = .filename
End With
В приведенном выше коде используются следующие свойства окна диалога: Filter – для списка возможных типов файлов, показываемых в поле ввода со списком для типа файла; FilterIndex – для вывода в окне для типа файла того типа, который в списке Filter имеет номер, задаваемый свойством FilterIndex. Имя выбранного файла помещается в окно для имени файла, а полное имя файла становится значением свойства FileName. Чтобы не использовать длинные имена, полное имя файла записывается в переменную Path модуля Declar.
При открытии файла появится диалоговое окно (рисунок 6), в котором необходимо выбрать файл, который нужно открыть.
Рисунок 6. Диалоговое окно открытия файла
9.2. Создание файлов базы данных
Создание файлов базы данных выполняется при выборе команды меню «Файл Создать». Данной команде соответствует процедура обработки события mnuFileNewItem_Click, которая с помощью метода Show должна выводить на экран ту форму, при помощи которой будет производиться ввод новых и редактирование существующих записей данных.
Вначале, для простоты работы с загрузкой новых записей базы данных, основной рабочий файл с данными будем создавать в корневом каталоге какого-либо диска, например, диска «c:» с полным именем «c:\untitled.dan», а после выхода из формы для ввода и редактирования пользователю будет предложено сохранить данные в некотором файле. Для этих целей используем элемент управления «SaveFileDialog1» главной формы frmMenu. При этом фактически будет происходить переименование файла «c:\untitled.dan» и присвоение ему имени, введенного пользователем в окне диалога.
Запишем процедуру обработки события выбора команды меню «Файл Создать».
Private Sub mnuFileNewItem_Click(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles mnuFileNewItem.Click
Dim i As Integer
‘ закрываются все открытые до этого времени файлы
Decl.CloseAllFiles()
' открывается основной файл "c:\untitled.dan"
Decl.Path = PathUntitled
f1 = New FileStream(Decl.Path, FileMode.Create)
' и файл-справочник "c:\untitled.spe"
PathSpec = Mid(Decl.Path, 1, Len(Decl.Path) - 4) +".spe"
F1_sp = New FileStream(Decl.PathSpec, FileMode.Create)
' количество записей в основной таблице базы данных
' равно нулю
N = 0
' инициализация индексного массива Ind, который будет
' использоваться для сортировки данных, и массива Del
' для пометки удаляемых записей
For i = 1 To Nmax
Ind(i) = i
Del(i) = 0
Next i
' основная форма становится неактивной
Me.Enabled = False
' загрузка формы для ввода записей файла frmInputEdit
frmInputEdit.Text = "Файл: " + Decl.Path
frmInputEdit.Show()
frmInputEdit.ShowNewZap() ' пользовательская процедура
' ввода новой записи
End Sub
Поскольку, в данном коде программы участвует новая форма для ввода и редактирования данных, то необходимо добавить ее в проект, выполнив команду «Project/Add Windows Form», и дать новой форме имя frmInputEdit.
Теперь наш проект содержит две формы и нужно указать, какая из них является главной, т.е. запускается первой. Для этого нужно выполнить команду «Project/*имя проекта* Properties…» и в открывшемся диалоговом окне в поле ввода со списком StartUp Form выбрать в качестве стартового объекта форму frmMenu.
Несмотря на то, что форма для ввода не содержит пока никаких элементов управления, запустите проект для проверки процедуры создания файлов и взаимодействия форм. Не забывайте регулярно сохранять проект.