Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
22
Добавлен:
02.05.2014
Размер:
751.22 Кб
Скачать

Здесь первый параметр задает количество байт (число символов), которые нужно прочитать, а второй – дескриптор файла.

Количество символов открытого с помощью оператора Open файла можно получить функцией LOF(<ДФ>). Например,

Private Sub Command1_Click() fn = FreeFile

Open "C:\1.txt" For Input As fn Text1 = Input(LOF(fn), fn)

Close fn

End Sub

Private Sub Form_Load()

Caption="Текстовый файл" Command1.Caption = "Читать 1.txt"

End Sub

Рис.41

Управляющие элементы для работы с файлами

Один из основных способов визуального доступа к текстовым файлам заключается в совместном использовании трех стандартных управляющих элементов, позволяющих организовать выбор диска (DriveListBox), папки (DirListBox) и файла (FileListBox). С помощью этих элементов можно организовать диалог выбора файла для открытия или сохранения. Их основными свойствами являются:

Drive – обозначение дисковода;

Path – строка текста, которая может содержать маршрут к диску либо к диску и совокупности вложенных папок, либо полный путь к файлу выбранной папки;

FileName – имя выбранного файла;

Pattern – шаблон, определяющий тип выводимых файлов, например, «*.*» или «*.bas».

Первые три свойства доступны только в режиме выполнения.

Чтобы правильно воспользоваться этими элементами, необходимо засинхронизировать их работу в программе с помощью процедур-событий Change, Click и свойства Path следующим образом.

Sub Drive1_Change()

 

Dir1.Path=Drive1.Path

 

End Sub

 

Sub Dir1_Change()

 

File1.Path= Dir1.Path

 

End Sub

 

Sub File1_Click()

 

IF Right(File1.Path,1)="\" Then

 

Label1= File1.Path& File1.FileName

'Вывод на метку

Else

Label1= File1.Path &"\" &File1.FileName End IF

End Sub

Особенность файловой системы такова, что если файл находится в корневом каталоге диска (например, диска С), то маршрут к файлу (File1.Path) будет представлять собой строку "С:\" (строка, заканчивающаяся символом "\"). Если же файл находится в папке диска, то в конце строки маршрута не будет символа "\", и его следует добавлять.

С помощью условия Right(File1.Path,1)="\" (что означает «проверить последний символ строки маршрута к файлу») определяется правильность маршрута к файлу.

Пример 32. Организовать выбор файла с диска и его просмотр с помощью элементов DriveListBox, DirListBox и FileListBox.

Используя диалог InputBox, запомним строку шаблона (например, "*.txt;*.bas") для выбора файлов. С помощью кнопки Command1 выведем в поле Text1 маршрут к файлу, а содержимое выделенного файла – в текстовое поле Text2. В программе предусмотрим вывод содержимого файла по двойному щелчку на имени файла. Поскольку код процедурысобытия DblClick должен быть тем же, что и для процедуры-события Click, то осуществим вызов последней процедуры с помощью оператора Call.

Dim S As String

Private Sub Form_Load()

Do

S = InputBox("Введи шаблон выбора файлов, например, ", , "*.txt;*.bas") Loop Until S <> ""

End Sub

Private Sub Command1_Click()

If Right(File1.Path, 1) = "\" Then

Text1 = File1.Path & File1.FileName Else

Text1 = File1.Path & "\" & File1.FileName End If

Open Text1 For Input As 1 i% = LOF(1)

' Размер файла не должен превышать 32767 байт при работе с TextBox Text2 = Input(i, 1)

Close 1

End Sub

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

Private Sub Dir1_Change()

File1.Pattern = S

File1.Path = Dir1.Path

End Sub

Private Sub File1_DblClick()

Call Command1_Click

End Sub

Рис.42

Второй способ визуального управления файлами – это программное использование компонента CommonDialog, размещенного на форме. Он содержит набор стандартных диалоговых окон для операций открытия и сохранения файла, выбора цвета и шрифта. Чтобы поместить его на панель General ToolBox, следует установить флажок напротив библиотеки

Microsoft Common Dialog Controls 6.0 в списке диалога Components.

Методы и свойства элемента перечислены в следующей таблице.

 

Методы и свойства CommonDialog

Таблица 17

Метод

Описание

 

ShowOpen

Открыть диалог открытия файла

 

ShowSave

Открыть диалог сохранения файла

 

ShowColor

Открыть диалог выбора цвета

 

ShowFont

Открыть диалог выбора шрифта

 

ShowPrinter

Открыть диалог установка параметров принтера

 

 

Описание

 

Свойство

 

FileName

Имя выбранного файла в диалоге открытия

 

Color

&HBGR-значение выбранного цвета

 

CancelError

Если True, то генерируется ошибка при щелчке по кнопке Отмена

Flags

Опции, устанавливаемые перед вызовом соответствующего диалога

Чтобы открыть окно соответствующего диалога, нужно обратиться к методу объекта CommonDialog1. Например,

'Открыть диалог открытия файла и выбрать имя

CommonDialog1.ShowOpen

'Запомнить имя в переменной fname

fname = CommonDialog1.FileName

 

Open fname For Input As 1

'Открыть файл для ввода

'Открыть диалог сохранения файла и ввести имя

CommonDialog1.ShowSave

'Запомнить имя в переменной fname

fname = CommonDialog1.FileName

 

Open fname For Output As 2

'Открыть файл для записи

'Открыть диалог выбора цвета и заполнить им фигуру Shape1

CommonDialog1.ShowColor

 

 

Shape1.FillStyle = 0

 

'Сплошная заливка

Shape1.FillColor = CommonDialog1.Color

'Цвет фигуры

Перед открытием диалога ShowOpen можно установить следующие свойства Flags, равные одной из констант или их совокупности, объединенной операцией OR:

cdlOFNHideReadOnly – снять с файлов флажок Только для чтения;

cdlOFNAllowMultiselect – разрешить многократный выбор файлов, при этом диалоговое окно будет состоять из элементов DriveListBox, DirListBox и FileListBox. Если не использовать этот флаг, то окно диалога будет иметь вид окна MS Explorer.

Перед открытием диалога выбора шрифта ShowFont с помощью свойства Flags указывается, какие шрифты Вам понадобятся:

cdlCFScreenFonts – все экранные шрифты;

cdlCFTTOnly – только контурные (True Type) шрифты;

cdlCFEffects – разрешить использование флажков Подчеркивания, Перечеркивания и Цвета символов текста.

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

cd1.Flags = cdlCFScreenFonts Or cdlCFEffects cd1.ShowFont

Перед открытием диалога выбора цвета ShowColor с помощью свойства Flags указывается вид окна:

cdlCCFullOpen – окно с полным выбором цветов;

cdlCCPreventFullOpen – окно с неполным выбором цветов.

Пример 33. Организовать выбор файла с диска и его просмотр, редактирование, форматирование, сохранение, изменение цвета символов, цвета фона, используя элемент CommonDialog.

Разместите на форме с панели General ToolBox усовершенствованное текстовое поле Rich TextBox, предварительно установив флажок напротив библиотеки Microsoft Rich TextBox Control 6.0 в списке диалога Components.

Разместите на форме семь кнопок с именами (свойства Name):

Открыть, ВыборШрифта, Сохранить, ЦветаТекста, ЦветаФона,

Очистить, Выход и соответствующими надписями (свойства Caption).

Усовершенствованное текстовое поле в отличие от поля TextBox позволяет:

1.загружать и просматривать большие текстовые файлы, размер которых не ограничен 64 Кбайт;

2.автоматически добавлять полоски скроллинга, если текст выходит за пределы поля;

3.форматировать не только весь текст находящийся в поле, но и отдельные фрагменты текста;

4.вставлять объекты, используя технологию Drag & Drop;

5.сохранять текст с параметрами форматирования (с измененным размером, цветом) в текстовом формате или в формате rtf.

При чтении или записи текстовых и rtf файлов в усовершенствованное поле можно указывать свойства TextRTF (по умолчанию) или SelRTF. Первое свойство заменяет весь текст в поле содержимым из файла, а второе вставляет текст из файла в место поля, где находится курсор. Например, чтобы прочитать содержимое файла, достаточно записать:

RichTextBox1.TextRTF = Input(LOF(fn), fn)

Запись же в текстовый файл содержимое усовершенствованного поля можно выполнить так:

Print #fn, RichTextBox1.TextRTF

В поле RichTextBox можно загрузить файл с расширением rtf путем перетаскивания выделенного текста из другого приложения или перетаскивания файла из папки, либо загрузить файл методом LoadFile. Чтобы сохранить содержимое поля на диске, необходимо воспользоваться методом SaveFile. Недостаток этих методов в том, что LoadFile не позволяет отображать цвет фона документа (rtf-файла), загруженного с диска, а SaveFile не позволяет сохранять цвет фона поля в rtf-файле. Однако поле RichTextBox позволяет отображать цвет фона выделенного фрагмента, если документ (rtf-файл) был до этого сохранен, например, в MS Word 'е.

Синтаксис методов:

ИмяRTFОбъекта.LoadFile Файл [,Тип файла] ИмяRTFОбъекта.SaveFile Файл [,Тип файла],

где Файл – это полный путь к файлу, а Тип файла – это одно из двух значений: rtfText или rtfRTF, определяющих в каком формате загружать и сохранять текст.

Если свойство объекта Rich TextBox начинается с приставки Sel (от слова Select), то оно будет относиться к выделенной части текста.

Dim fn As Integer, Fname As String

Private Sub Очистить_Click()

RTF1.BackColor = vbWhite

RTF1 = ""

 

End Sub

 

Private Sub Form_Load()

 

With CommonDialog1

'Начальные установки, отображаемые

.CancelError = True

'по умолчанию в диалоге выбора шрифта

.FontName = "Times New Roman"

.FontSize = 20

.FontBold = True

.FontItalic = True End With

End Sub

Private Sub ВыборШрифта_Click()

On Error GoTo 100 With CommonDialog1

.Flags = cdlCFScreenFonts Or cdlCFEffects

.ShowFont

End With

With RTF1

.SelFontName = CommonDialog1.FontName

.SelBold = CommonDialog1.FontBold

.SelItalic = CommonDialog1.FontItalic

.SelFontSize = CommonDialog1.FontSize

.SelStrikeThru = CommonDialog1.FontStrikethru

.SelUnderline = CommonDialog1.FontUnderline

.SelColor = CommonDialog1.Color End With

Exit Sub 100:

MsgBox "Ошибка" & CStr(Err.Number) & " при выборе шрифта." & _ vbCrLf & Err.Description

End Sub

Private Sub Открыть_Click() fn = FreeFile

On Error GoTo 100 With CommonDialog1

'Чередование до вертикальной черты – тип файлов, после - имя файла

.Filter = "Все-файлы|*.*|Rtf-файлы|*.rtf*|Txt-файлы|*.txt"

.FileName = "*.*" 'в поле <Имя файла> диалога

.Flags = cdlOFNHideReadOnly

.ShowOpen

'Открыть диалог Open и ввести имя файла

End With

 

 

Fname = CommonDialog1.FileName 'Запомнить имя в переменной

Open Fname For Input As fn

'Открыть файл для ввода

RTF1 = Input(LOF(fn), fn)

 

 

Close fn

 

 

'RTF1.LoadFile Fname

'или одной строкой вместо верхних трех

Caption = Fname Exit Sub

100: MsgBox "Ошибка" & СStr(Err.Number) & " при чтении." & _ vbCrLf & Err.Description

End Sub

Private Sub ЦветФона_Click()

On Error GoTo 100 CommonDialog1.ShowColor RTF1.BackColor = CommonDialog1.Color Exit Sub

100:MsgBox "Ошибка" & CStr(Err.Number) & "при выборе цвета фона." _

&vbCrLf & Err.Description

End Sub

Private Sub ЦветТекста_Click()

On Error GoTo 100 CommonDialog1.ShowColor RTF1.SelColor = CommonDialog1.Color Exit Sub

100:

End Sub

Private Sub Сохранить_Click() fn = FreeFile

On Error GoTo 100

CommonDialog1.Filter = "Все-файлы|*.*|Rtf-файлы|*.rtf*|Txt-файлы|*.txt"

CommonDialog1.ShowSave

'Открыть диалог Save и ввести имя файла

Fname = CommonDialog1.FileName

'Запомнить имя в переменной

Open Fname For Output As fn

 

'Открыть файл для записи

Print #fn, RTF1

 

 

'RTF1.SaveFile Fname, rtfRTF

'или одной строкой вместо верхних трех

Close fn Exit Sub

100: MsgBox "Ошибка" & CStr(Err.Number) & " при записи." & _ vbCrLf & Err.Description

End Sub

Private Sub Выход_Click()

End

End Sub

Рис.43

Если программа обратится к дисковому устройству или к файлу, которого нет, или пользователь нажмет кнопку Отмена в каком-либо диалоге, то оператор Open и, следующие за ним операторы, не должны выполняться, иначе возникнет ошибка, так как значением свойства CommonDialog1.FileName будет пустая строка. Для подобных случаев существует оператор On Error GOTO <имя метки>, который перехватывает ошибки периода выполнения в текущей процедуре и передает управление по метке блоку операторов, где должны определяться номер и описание ошибки с помощью объекта Err и его свойств Number и Description. Обычно перед меткой ставится один из операторов: Exit Sub, Exit Function,

Exit Procedure, End или Stop.

Для того чтобы перехватить ошибку оператором On Error, которая формируется по щелчку на кнопке Отмена, необходимо установить свойство CommonDialog1.CancelError=True.

Соседние файлы в папке Лекции по информатике [Лебедев]