Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2006

Вид материалаУчебное пособие

Содержание


2.7. Компоненты навигации файловой системы
2.7.1. DriveListBox (Список дисков)
2.7.2. DirListBox (Список каталогов)
2.7.3. FileListBox (Список файлов)
2.7.3.1. Работа со списками
2.7.3.2. Функции и процедуры модуля проекта
Private. Перед набором кода функции или процедуры выполните команду меню Tools, Add Procedure
2.7.4. Окно открытия файла (Open)
Константы Flags
Timer пишется программный код, который выполняется через промежутки времени, заданные в свойстве таймера Interval
CmD.CancelError = True
Timer1.Enabled = False
Подобный материал:
1   2   3   4   5   6   7   8   9   10

2.7. Компоненты навигации файловой системы


Visual Basic имеет готовые компоненты для работы с файловой системой, представляющие собой списки, содержащие некоторые заданные свойства (например, стиль списка, номер текущего элемента), методы заполнения и отображения списков и даже обработчики событий, например двойной щелчок в списке каталогов.

2.7.1. DriveListBox (Список дисков)


DriveListBox отображает список всех доступных дисков. Список дисков используется обычно с двумя другими элементами управления – списками каталогов и файлов для выбора конкретного файла. Основным свойством списка диска является свойство Drive, которое возвращает или устанавливает текущий диск. В событии Change, происходящем при смене диска, предписывается обновить список каталогов.

2.7.2. DirListBox (Список каталогов)


DirListBox отображает структуру каталогов текущего диска. Основным свойством списка каталогов является свойство Path, которое возвращает или устанавливает путь к открытому каталогу. В событии Change, происходящем при открытии каталога, предписывается обновить список файлов.








Рис. 2.25. Списки дисков, каталогов и файлов

2.7.3. FileListBox (Список файлов)


FileListBox отображает список файлов указанного каталога. Перечислим свойства, дополняющие свойства элемента ListBox.


Таблица 2.32


Свойство

Возвращает или устанавливает

Path

путь к каталогу, файлы которого отображаются

Patern

маску для выбора файлов. Например: "*.bmp; *.gif"

FileName

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


Для данных компонентов часто используется метод установки фокуса – SetFocus, а также метод обновления содержимого списка – Refresh, который необходимо использовать при изменении содержимого списка программным методом.

2.7.3.1. Работа со списками


Приведем примеры копирования и удаления элементов списка. Пусть на форме расположены компоненты: DriveListBox, DirListBox, FileListBox, FileListBox, ComboBox, а также несколько кнопок.





Рис. 2.26. Работа со списками


Зададим исходные установки при загрузке формы.

Private Sub Form_Load()

Combo1.AddItem "*.bmp;*.ico;*.cur;*.jpj;*.gif;*.wmf;*.emf"

Combo1.AddItem "*.txt"

Combo1.Text = Combo1.List(0)

File1.Pattern = Combo1.Text

End Sub

Обработчик события Drive1_Change обеспечивает вывод списка папок в Dir1.

Private Sub Drive1_Change()

On Error GoTo MtkEr

Dir1.Path = Drive1.Drive

Exit Sub

MtkEr: MsgBox("Устройство не загружено")

Drive1.Drive = Dir1.Path

End Sub


Обработчик события Dir1_Change обеспечивает вывод списка файлов в File1.

Private Sub Dir1_Change()

File1.Path = Dir1.Path

End Sub


Обработчик события Combo1_Click обеспечивает вывод файлов по маске.

Private Sub Combo1_Click()

File1.Pattern = Combo1.Text

Combo1.ToolTipText = Combo1.Text

End Sub


Копирование двойным щелчком элементов списка File1 в список List1.

Private Sub File1_DblClick()

Dim strFile As String

strFile = FullFileName(Dir1.Path, File1.FileName)

List1.AddItem strFile

End Sub


Копирование всех элементов списка File1 в список List1 с использованием кнопки.

Private Sub Command1_Click()

Dim strFile As String

Dim i As Integer

For i = 0 To File1.ListCount - 1

strFile = FullFileName(Dir1.Path, File1.List(i))

List1.AddItem strFile

Next i

End Sub


Копирование выделенных элементов списка File1 в список List1 с использованием кнопки.

Private Sub Command4_Click()

Dim strFile As String

Dim i As Integer

For i = 0 To File1.ListCount - 1

If File1.Selected(i) Then

strFile = FullFileName(Dir1.Path, File1.List(i))

List1.AddItem strFile

End If

Next i

End Sub


Удаление всех элементов списка List1

Private Sub Command3_Click()

List1.Clear

End Sub


Удаление выделенного элемента списка List1

Private Sub Command2_Click()

If List1.ListIndex < 0 Then Exit Sub

List1.RemoveItem List1.ListIndex

End Sub


Здесь используется функция FullFileName, возвращающая полное имя файла (см. ниже).

2.7.3.2. Функции и процедуры модуля проекта


Для многократного использования программного кода, выполняющего некоторые заданные команды или расчеты, этот код оформляется в виде подпрограммы – заключается в тело процедуры (функции) и затем вызывается в программе по имени процедуры.

Функции и процедуры, доступные только в области программного кода модуля, объявляются с ключевым словом Private.

Перед набором кода функции или процедуры выполните команду меню Tools, Add Procedure. В поле Name введите имя, например, FullFileName, установите тип и область действия процедуры. После нажатия ОК, в окне редактора кода Вы получите заготовку для набора текста процедуры.

Для того чтобы получить заготовку процедуры, можно также набрать Private Sub FullFileName и нажать Enter.





Рис. 2.27. Добавление процедуры


Функция FullFileName, возвращающая полное имя файла

Private Function FullFileName(Path,FileName As String) As String

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

FullFileName = Path & FileName

Else: FullFileName = Path & "\" & FileName

End If

End Function

2.7.4. Окно открытия файла (Open)


Окно открытия файла отображается с помощью компонента CommonDialog, показывает содержимое текущего каталога и позволяет выбрать файл. Чтобы добавить этот компонент на панель инструментов General отройте окно Components командой меню Project, Components, вкладку Controls и выберите компонент Microsoft Common Dialog Control 6.0

Компонент CommonDialog (Общий диалог) предоставляет стандартный набор окон диалога: Open (Открытие файла), Save as (Сохранение), Color (Цвет), Font (Выбор шрифта), Print (Печать) и Справка (Help).

Методы компонента CommonDialog задают вид отображаемого окна, например:


Таблица 2.33

Вид окна

Метод

Вид окна

Метод

Открытие файла (Open)

ShowOpen

Выбор шрифта (Font)

ShowFont

Сохранение файла (Save)

ShowSave

Печать (Print)

ShowPrint

Цвет (Color)

ShowColor

Справка (Help)

ShowHelp


Все окна имеют свойство CancelError, позволяющего при установке значения True перехватить и обработать ошибку с кодом cdlCancel (если пользователь нажмет кнопку Cancel окна диалога), а также свойство Flags - настройки, задаваемые суммой констант.






Рис. 2.28. Окна открытия файла и выбора шрифта


Приведем назначение некоторых свойств и констант окна открытия файла.


Таблица 2.34

Свойство

Возвращает или устанавливает

FileName

имя открываемого файла

Filter

фильтр отображаемых файлов. Синтаксис:

Filter = Описание1 | Маска1 | Описание2 |Маска2 и т.п. Например:

Filter = "Текстовые файлы (*.txt) | *.txt | " _

& "Графические файлы (*.bmp, *.gif). | *.bmp, *.gif"

Filterlndex

текущий номер маски из фильтра. Нумерация с 1.

InitDir

текущую директорию при открытии окна диалога


Таблица 2.35

Константы Flags

Устанавливает для окна Open

cdlOFNFileMustExist

возможность ввода имен только существующих файлов

cdlOFNExplorer

стиль проводника Windows


В следующем проекте-примере будет использоваться элемент управления Timer (Таймер). В событии Timer пишется программный код, который выполняется через промежутки времени, заданные в свойстве таймера Interval. Это свойство задает интервал времени в миллисекундах. Таймер включается после определения его свойства Enabled=True. Таймер не отображается в окне во время выполнения программы.

Пример. Разместим на форме компоненты: Image1, Picture1, CommonDialog1 и Timer1. Для Image1 и Picture1 в конструкторе зададим свойство Picture (рис. 2.29).





Рис. 2.29. Форма с изменяющимися картинками


Определим объект для временного хранения изображения (картинки).

Private TmpPicture As New StdPicture


Определим функцию, возвращающую имя файла, указанного в CommonDialog.

Private Function FCmdFileName(CmD As CommonDialog) As String

CmD.CancelError = True

On Error GoTo MtkEr

CmD.Flags = cdlOFNFileMustExist

CmD.FileName = Empty

CmD.ShowOpen

FCmdFileName = CmD.FileName

Exit Function

MtkEr:

If Err.Number <> cdlCancel Then

FCmdFileName = Empty

MsgBox "Ошибка: " & Err.Description,vbCritical,"CmnDlgError"

End If

End Function


Определим функцию, загружающую графический файл

Private Sub LoadGrFile(Pict As Object, CmnDlg As CommonDialog)

Dim CmdFileName As String

Timer1.Enabled = False

CmnDlg.InitDir="C:\Program Files\Microsoft Visual Studio\Common\Graphics\"

CmnDlg.Filter="Графические файлы(*.gif;*.wmf) | *.gif;*.wmf"

CmdFileName = FCmdFileName(CmnDlg)

If CmdFileName <> Empty Then

Pict.Picture = LoadPicture(CmdFileName)

End If

Timer1.Enabled = True

End Sub


Меняем рисунки местами

Private Sub Timer1_Timer()

Set TmpPicture = Picture1.Picture 'или =Picture1.Image

Picture1.Picture = Image1.Picture 'а так нельзя Picture1.Image=

Image1.Picture = TmpPicture

End Sub


Загружаем новый рисунок

Private Sub Image1_Click()

Call LoadGrFile(Image1, CommonDialog1)

End Sub


Загружаем новый рисунок

Private Sub Picture1_Click()

Call LoadGrFile(Picture1, CommonDialog1)

End Sub


Выгружаем из памяти объект для временного хранения изображения

Private Sub Form_Unload(Cancel As Integer)

Set TmpPicture = Nothing

End Sub