Работа № 7 щего диалога системы Microsoft Windows

advertisement

Работа № 7
Средства VB 6 для работы с файлами и с панелями общего диалога системы Microsoft Windows
Цель работы: Изучение и использование операторов языка VB 6 для
работы с файлами различных типов: последовательными (текстовыми)
файлами, файлами произвольного доступа, бинарными файлами. Исследование и использование инструмента Common Dialog для открытия и
сохранения файлов, выбора шрифта и цвета, а также использование объекта Clipboard для хранения фрагментов текста, – на примере создания
простого текстового редактора.
Контрольные вопросы:
1. Какими способами можно открыть текстовый файл? Как закрыть
текстовый и любой другой открытый файл?
2. Как записываются данные в открытый для записи текстовый
файл? В чем разница между операторами Write и Print?
3. Как читаются данные из открытого для чтения текстового файла?
Чем отличаются друг от друга операторы Input и Line Input? При
помощи какой функции можно прочитать из файла заданное число
символов? Как прочитать все символы файла?
4. Что такое пользовательский тип данных и как используется это
понятие при работе с файлами произвольного доступа (raf)?
5. С помощью каких операторов из файла raf читаются записи и в
файл raf пишутся новые записи?
6. С какой целью определяется и используется индекс при работе с
файлом raf?
7. Каковы особенности использования бинарных файлов? Как они
открываются? Как производится чтение из бинарного файла и запись в бинарный файл?
8. Как можно применить элемент управления Common Dialog для
загрузки содержимого текстового файла в текстовое поле? Как с
помощью того же элемента управления сохранить отредактированный текст в текстовом файле?
9. Как можно применить элемент управления Common Dialog для
загрузки содержимого файла rtf в поле Rich Textbox? Как с помощью того же элемента управления сохранить отредактированный текст в файле rtf?
1

10. Как можно применить элемент управления Common Dialog для
изменения значений параметров шрифта и для изменения цвета
текста в окне Textbox (или выделенного фрагмента текста в окне
Rich Textbox)?
Пример 7.1. Рассмотрим приложение, демонстрирующее запись в
текстовый файл (и чтение из текстового файла) «сведений о сотрудниках» – строк, каждая из которых содержит идентификационный номер,
ФИО, дату рождения и место рождения сотрудника. Строки образуют
таблицу, которую на экранной форме будут имитировать 4 элемента
управления Combo Box (рис. 7.1), образующие массив объектов Comb(i),
у которых свойство Style имеет значение 1 – SimpleCombo.
Рис. 7.1. Экранная форма с 4 элементами Combo Box, имитирующими таблицу
Меню приложения Edit призвано вызывать подменю, которое содержит 5 команд редактирования: Добавить запись, Удалить запись,
Вставить запись, Изменить запись, Очистить таблицу. Остальные
команды меню (рис. 7.1) не нуждаются в комментариях.
Опуская описание этапа проектирования интерфейса, сразу представим программный код данного приложения:
Dim numb As Integer, fio As String, bdate As Date, bloc As String
‘ Синхронизация выделения записи таблицы:
Private Sub Comb_Click(Index As Integer)
i% = Comb(Index).ListIndex
For j% = 0 To 3
2

Comb(j).Text = Comb(j).List(i):
Comb(j).ListIndex = i
Next j
End Sub
‘ Добавление новой записи в таблицу:
Private Sub mnuAdd_Click()
For j% = 0 To 3
XC(j) = Comb(j).Text
Comb(j).AddItem XC(j)
Next j
End Sub
‘ Удаление записи из таблицы:
Private Sub mnuRemove_Click()
i% = Comb(0).ListIndex
If i < 0 Then
MsgBox "Выделите удаляемую строку", vbExclamation
Else
For j% = 0 To 3
Comb(j).RemoveItem i
Next j
End If
End Sub
‘ Вставка новой записи в таблицу:
Private Sub mnuInsert_Click()
i% = Comb(0).ListIndex
If i < 0 Then
MsgBox "Выделите строку для вставки перед ней", vbExclamation
Else
Comb(0).AddItem InputBox("Введите номер"), i
Comb(1).AddItem InputBox("Введите фио"), i
Comb(2).AddItem InputBox("Введите дату рожд."), i
Comb(3).AddItem InputBox("Введите место рожд."), i
End If
End Sub
‘ Изменение записи в таблице:
Private Sub mnuUpdate_Click()
i% = Comb(0).ListIndex
3

If i < 0 Then
MsgBox "Выделите изменяемую строку", vbExclamation
Else
Comb(0).List(i) = InputBox("Введите номер", , Comb(0).List(i))
Comb(1).List(i) = InputBox("Введите фио", , Comb(1).List(i))
Comb(2).List(i) = InputBox("Введите дату рожд.", , Comb(2).List(i))
Comb(3).List(i) = InputBox("Введите место рожд.", , Comb(3).List(i))
End If
End Sub
‘ Очистка всей таблицы:
Private Sub mnuClear_Click()
For j% = 0 To 3
Comb(j).Clear
Next j
End Sub
‘ Заполнение таблицы сведениями из текстового файла:
Private Sub mnuLoad_Click()
mnuClear_Click
Open "person.txt" For Input As #1
Do Until EOF(1)
Input #1, numb, fio, bdate, bloc
Comb(0).AddItem numb
Comb(1).AddItem fio
Comb(2).AddItem bdate
Comb(3).AddItem bloc
Loop
Close #1
End Sub
‘ Запись сведений таблицы в текстовый файл:
Private Sub mnuSave_Click()
N% = Comb(0).ListCount
Open "person.txt" For Output As #1
For i = 0 To N - 1
numb = Val(Comb(0).List(i))
fio = Comb(1).List(i)
bdate = CDate(Comb(2).List(i))
bloc = Comb(3).List(i)
4

Write #1, numb, fio, bdate, bloc
Next i
Close #1
End Sub
‘ Завершение работы приложения:
Private Sub mnuExit_Click()
End
End Sub
Пример 7.2. Рассмотрим приложение, которое демонстрирует использование элементов управления Common Dialog для открытия и сохранения файла, для выбора шрифта и цвета, а также для редактирования текста.
Файл формата TXT будет загружаться в текстовое поле (левое поле
на рис. 7.2), а файл формата RTF – в поле Rich Textbox (правое поле на
рис. 7.2).
Рис. 7.2. Вид окна приложения после двукратной отработки команды File →
Open и выбора двух файлов для открытия в окне Textbox и Rich Textbox
В окне приложения 4 команды меню (File, Font, Color и Edit), имеющие подменю:
File → Open, Save, Save As;
Color → ForeColor, BackColor;
Edit → Copy, Cut, Paste.
Команды сохранения файла (Save и Save As) здесь реализуются
только для формата RTF.
При проектировании формы помимо нестандартного элемента управления Rich Textbox на форму должны быть помещены 3 также нестандартных элемента Common Dialog (для открытия-сохранения файлов,
для выбора шрифта и для выбора цвета соответственно).
5

Для реализации компьютерного интерфейса заполняется следующая
таблица свойств:
Имя
объекта
Класс
объекта
Свойство
объекта
Form1
Form
Caption
mnuFile
mnuOpen
mnuSave
mnuSaveAs
Text1
RichTextBox1
Menu Command
SubMenu Command
SubMenu Command
SubMenu Command
TextBox
RichTextBox
Caption
Caption
Caption
Caption
MultiLine
MultiLine
CommonDialog1
CommonDialog
(Custom)
CommonDialog2
CommonDialog3
CommonDialog
CommonDialog
(Custom)
(Custom)
Значение свойства
“Панели общего
диалога”
“File”
“Open”
“Save”
“Save As”
True
True
Закладка Open /
Save As
Закладка Font
Закладка Color
В таблице не предствавлены свойства команд меню Font, Color и Edit. Ниже приводится код процедур также лишь для команд меню File
(Open, Save и Save As). Составление кода для других команд меню –
тема 2-го задания данной работы.
Private Sub mnuOpen_Click()
CommonDialog1.ShowOpen
F$ = CommonDialog1.FileName
If Right(F, 3) = "rtf" Then
RichTextBox1.LoadFile F
ElseIf Right(F, 3) = "txt" Then
Open F For Input As #1
N& = LOF(1)
S$ = Input(N, 1)
Text1.Text = S
Close 1
End If
End Sub
Private Sub mnuSave_Click()
CommonDialog1.ShowSave
F$ = CommonDialog1.FileName
If F = "" Then
6

mnuSaveAs_Click
Else
RichTextBox1.SaveFile F, rtfRTF
End If
End Sub
Private Sub mnuSaveAs_Click()
CommonDialog1.ShowSave
F$ = CommonDialog1.FileName
RichTextBox1.SaveFile F, rtfRTF
End Sub
В ходе выполнения данной работы студент должен выполнить 2 задания.
Задание 1. В процессе выполнения задания студенты осваивают
имеющиеся в VB 6 возможности работы с файлами произвольного доступа (RAF – random access file).
Для заданной таблицы базы данных объявляется пользовательский
тип данных, объявляется переменная этого типа (учебное пособие [2],
стр. 108 – 112), составляются и отлаживаются процедуры, в которых используется переменная пользовательского типа.
В частности реализуются процедуры для команд меню Записать в
файл RAF и Читать из файла RAF. Как и в примере 7.1, для редактирования данных используется массив объектов Combo Box и меню Edit
с пятью командами подменю: Добавить запись, Удалить запись,
Вставить запись, Изменить запись, Очистить таблицу.
Вариант 1.
Объявить пользовательский тип данных для таблицы «Автомобиль»
(табл. 7.1) базы данных «Автосервис».
Табл. 7.1.
В нижней строке
таблицы 7.1 –
типы полей.
Марка
автомобиля
String*30
Номер
автомобиля
String*20
Код
неисправности
Integer
Используя приложение примера 7.1 как образец, организовать ввод и
редактирование данных для представленной таблицы, запись этих данных в файл произвольного доступа и чтение данных из файла произ7

вольного доступа. Как и в примере 7.1, указанные действия реализовать
как работу команд меню, показанного на рис. 7.1.
Вариант 2.
Объявить пользовательский тип данных для таблицы «Неисправности» (табл. 7.2) базы данных «Автосервис».
Табл. 7.2.
В нижней строке
таблицы 7.2 –
типы полей.
Код
неисправности
Integer
Название
неисправности
String*50
Стоимость
ремонта
Currency
Используя приложение примера 7.1 как образец, организовать ввод и
редактирование данных для представленной таблицы, запись этих данных в файл произвольного доступа и чтение данных из файла произвольного доступа. Как и в примере 7.1, указанные действия реализовать
как работу команд меню, показанного на рис. 7.1.
Задание 2. В ходе выполнения задания студенты дополняют приложение примера 2 новыми возможностями, которые позволяют рассматривать это приложение как простой текстовый редактор.
Вариант 1. С помощью элемента управления Common Dialog реализовать команды меню Font и Color (с подменю Цвет символов и Цвет
фона). С помощью этих команд должен обеспечиваться выбор шрифта
(его наименования, начертания и размера) для выделенного фрагмента
текста в окне Rich Textbox, а также выбор цвета символов выделенного
фрагмента и выбор цвета фона всего этого окна.
Указание: При настройке объекта Common Dialog для выбора шрифта с помощью свойства (Custom) обязательно следует установить значение свойства Flags равным 1, 2 или 3 (см. пособие [2], стр. 183).
Вариант 2. С помощью элемента управления Common Dialog реализовать команды меню Edit (подменю Copy, Cut и Paste), назначением
которых является копирование или удаление в буфер обмена выделенного фрагмента текста, а также вставка в выделенное место текста содержимого буфера обмена.
Указание: К буферу обмена (объекту Clipboard) можно применять
методы SetText и GetText:
Clipboard.SetText RichTextBox1.SelText
RichTextBox1.SelText = Clipboard.GetText
8
Download