Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2006
Вид материала | Учебное пособие |
- Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2005 удк 330., 1365.17kb.
- Учебное пособие Часть 1 Рекомендовано учебно-методическим советом угаэс уфа 2006, 1359.55kb.
- Бизнес-планирование предприятия учебное пособие Рекомендовано учебно-методическим советом, 1729.98kb.
- Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2009, 2459.47kb.
- Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2008, 3188.71kb.
- Учебное пособие Часть 2 Производственная безопасность Рекомендовано учебно-методическим, 1618.75kb.
- Учебное пособие уфа-2007 удк 330. 01 (075. 8) Ббк 65. 02., 836.31kb.
- Учебное пособие Рекомендовано научно-методическим советом, 1565.87kb.
- Учебно методическое пособие Минск 2006 удк 616. 42-006. 441-053. 2(075., 1819.29kb.
- Учебное пособие рекомендовано умо по образованию в области сервиса угаэс, 1695.83kb.
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