- •Введение. Установка среды программирования
- •2. История языка Basic
- •3. Установка Visual Basic
- •Лабораторная работа №1. Интерфейс Visual Basic. Создание первого проекта
- •Теоретическая часть
- •1 . Первое знакомство
- •5. Стандартная панель инструментов
- •Практическая часть
- •Лабораторная работа №2. Изменение свойств компонентов. Метод Print
- •Теоретическая часть
- •1. Состав панели управления
- •2. Окно свойств и редактора кода
- •3. Свойства элементов управления
- •3.1 Свойства элемента Form
- •3.2 Свойства элемента TextBox
- •3.3. Свойства компонента CommandButton
- •Объект.Print [Список вывода]
- •Объект.Cls Практическая часть
- •Лабораторная работа №3. Работа с простейшим графическим объектом Visual Basic
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №4. Работа с арифметическими выражениями и функциями
- •Теоретическая часть
- •1. Арифметические выражения Visual Basic.
- •2. Встроенные функции Visual Basic
- •3. Функции преобразования
- •Str (число)
- •Val (символьное выражение)
- •Практическая часть
- •Лабораторная работа №5. Решение простейших математических задач с использованием линейных алгоритмов
- •Теоретическая часть
- •1. Типы данных
- •2. Объявление переменных
- •Public / Private / Dim Имя_переменной [As Тип_переменной]
- •Оператор_объявления_типа Строка_интервалов_имен
- •3. Константы Visual Basic
- •4. Область видимости переменной
- •Public / Private / Dim Имя_переменной [As Тип_переменной]
- •Имя_формы.Имя_переменной
- •Практическая часть
- •Лабораторная работа №6. Программирование ветвлений с использованием оператора If
- •Теоретическая часть
- •1. Конструкция If … Then … End If
- •2. Конструкция If … Then … Else … End If
- •3. Конструкция If … Then … Else If… End If
- •Практическая часть
- •Лабораторная работа №7. Программирование ветвлений с использованием оператора Case
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №8. Программирование циклов
- •Теоретическая часть
- •1. Цикл For…Next
- •2. Цикл For Each … Next
- •3. Цикл Do While … Loop
- •4. Цикл Do Until … Loop
- •5. Цикл Do … Loop While
- •6. Цикл Do … Loop Until
- •7. Цикл While … Wend
- •Практическая часть
- •Лабораторная работа №9. Разработка приложений для обработки массивов
- •Теоретическая часть
- •1. Объявление массивов
- •2. Массивы с фиксированной границей и динамические массивы.
- •UBound (имяМассива [, измерение]) Практическая часть
- •Лабораторная работа №10. Разработка приложений с использованием методов рисованИя графических примитивов
- •Теоретическая часть
- •1. Графическая поверхность
- •2. Графические примитивы
- •Практическая часть
- •Лабораторная работа №11. Построение графиков и диаграмм
- •Лабораторная работа №12. Применение пользовательских диалоговых окон
- •Теоретическая часть
- •1. Окно и функция InputBox
- •2. Окно MsgBox
- •MsgBox Текст сообщения [,Константа] [,Заголовок]
- •3. Функция MsgBox()
- •Практическая часть
- •Лабораторная работа №13. Разработка компьютерного теста с использованием Visual Basic
- •Теоретическая часть
- •Лабораторная работа №14. Создание пользовательского меню и панели инструментов
- •Теоретическая часть
- •Call Имя процедуры ([Список Параметров Вызова]),
- •Практическая часть
- •Лабораторная работа №15. Создание текстового редактора
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №16. Разработка мультимедиа-приложений
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №17. Макросы: запись, запуск, чтение
- •Теоретическая часть
- •Обычно макрос содержит следующие элементы.
- •Практическая часть
- •Лабораторная работа №18. Создание форм рабочего листа
- •Теоретическая часть
- •1. Когда необходимо использовать vba в Excel
- •2. Объект Application
- •3. Объект Workbook
- •4. Объект Worksheet
- •5. Объект Range
- •Инициализация и отображение диалогового окна
- •Практическая часть Создание пользовательской формы
- •Создание пользовательской формы
- •Практические задания по программированию на vba
- •Лабораторная работа №19. Создание книги лабораторных работ с автоматизированным выбором страниц книги
- •Практическая часть
- •Лабораторная работа №20. Моделирование процессов
- •Теоретическая часть
- •Лабораторная работа №21. Создание сводных таблиц в vba
- •Теоретическая часть Практическая часть
- •Лабораторная работа №22. Работа с компонентом Chart
- •Теоретическая часть Практическая часть
- •Лабораторная работа №23. Работа с базами данных в Visual Basic
- •Теоретическая часть Практическая часть
- •Лабораторная работа №24. Работа с базами данных в Excel с использованием Visual Basic
- •Теоретическая часть Практическая часть
- •Лабораторная работа №25. Обработка данных на рабочем листе Теоретическая часть Практическая часть
Лабораторная работа №15. Создание текстового редактора
Цель работы: рассмотреть типы существующих текстовых файлов; рассмотреть и изучить свойства компонентов, позволяющих пользователю работать с текстовыми файлами; научиться создавать приложения, которые позволяют пользователю работать с текстовыми файлами
Теоретическая часть
Для работы с текстом в Visual Basic имеется более функциональный элемент, чем Text Box – компонент Rich TextBox . Его можно увидеть на панели инструментов Tool Box, если установить в окне Properties на вкладке Controls галочку напротив компонента Microsoft Rich TextBox Control 6.0 (SP3).
Вывод на экран набора стандартных окон для выполнения операций открытия и сохранения файлов, выбора цвета и характеристик шрифта обеспечивает компонент CommonDialog , который также можно увидеть на панели инструментов, установив галочку напротив компонента Microsoft Common Dialog Control 6.0.
Методы, свойства и события компонента Common Dialog
Таблица 15.1
|
Название |
Значение |
Методы |
ShowOpen |
Выводит на экран диалоговое окно открытия файла |
ShowSave |
Выводит на экран диалоговое окно сохранения файла |
|
ShowPrint |
Выводит на экран диалоговое окно вывода на принтер |
|
ShowColor |
Выводит на экран диалоговое окно выбора цвета |
|
ShowFont |
Выводит на экран диалоговое окно выбора характеристик шрифта |
|
Clear |
Очищает Буфер обмена |
|
SelText |
Помещает в Буфер обмена текстовые данные |
|
Свойства |
CancelError |
Включает формирование ошибки при щелчке на кнопке <Cancel> |
Flags |
Значения этого свойства задают значения диалогового окна |
|
Filter |
Задает типы файлов, которые будут показаны в списке файлов диалогового окна |
|
FileName |
Имя файла |
|
SelText |
Выделенный текст |
|
FontName |
Тип шрифта |
|
FontSize |
Размер шрифта |
|
FontColor |
Цвет шрифта |
|
FontBold |
Жирный |
|
FontItalic |
Курсив |
|
FontStrikethru |
Зачеркнутый |
|
FontUnderline |
Подчеркнутый |
|
PrintQuality |
Качество печати |
|
PaperSize |
Размер бумаги |
|
Orientation |
Ориентация бумаги |
|
Событие |
Change |
Сообщает об изменении содержимого объекта |
Оба компонента - CommonDialog и Rich TextBox помогают программисту создать программу, работающую с текстовыми файлами.
Рассмотрим более подробно формат свойства Filter и свойство Flags.
При использовании стандартного диалогового окна Save as свойство Flags имеет множество значений. В данной работе будут рассмотрены два из них - &H2 и &H4, описание которых приведено в Таблице 15.2.
Таблица 15.2
Имя константы |
Значение |
Описание |
CdlOFNOverwritePrompt |
&H2 |
Если файл с набранным именем уже существует, появляется окно сообщения с предупреждением |
CdlOFNHideReadOnly |
&H4 |
Из диалогового окна Save As исчезает CheckBox “Read Only” (только для чтения) |
Использование стандартного диалогового окна Open отличается от использования окна Save as только значением свойства Flags и оператором, использующим значением свойства FileName. Описание значения свойства Flags для окна Open приведено в Таблице 15.3.
Таблица 15.3
Имя константы |
Значение |
Описание |
CdlOFNFileMustExist |
&H1000 |
Если файл с набранным именем уже существует, появляется окно сообщения с предупреждением и действие отменяется |
CdlOFNHideReadOnly |
&H4 |
Из диалогового окна Save As исчезает CheckBox “Read Only” (только для чтения) |
Все значения записываются в одном операторе присваивания и отделяются друг от друга логическим оператором OR. Для задания значений свойства Flags можно использовать как константы, так и значения.
Свойство Filter задает типы файлов, которые будут показаны в списке файлов диалогового окна Save As (Сохранить как) или Open (Открыть).
Формат задания значений свойства Filter
Объект.Filter = “Описание 1|Фильтр1|Описание2|Фильтр2…”
Здесь Объект – имя объекта CommonDialog;
Описание 1 – описание фильтра 1, этот текст появится в списке типов файлов в окне Save As Type;
Фильтр 1 – строка символов, определяющая расширение имени файла (*.txt – файлы с расширением txt; *.doc – файлы с расширением doc и т.д.).
Описание фильтров и фильтры разделяются символом |. Справа и слева от этого символа не должно быть пробелов.
Текстовые файлы бывают нескольких типов
Различают файлы трех типов:
файлы с последовательным доступом (текстовые);
файлы с произвольным доступом;
двоичные файлы.
Файлы с последовательным доступом состоят из записей переменной длины. Они могут читаться только с самого начала до конца. Запись нельзя прочитать из середины файла. Каждая запись является строкой текста, которая заканчивается специальными символами-разделителями.
Файлы с произвольным доступом обладают заданной структурой и состоят из записей. Каждая запись в файле имеет определенный размер и номер. Доступ к данным в файле с произвольным доступом осуществляется именно по номеру записи. Данные из файла такого типа читаются и записываются записями. Пользователь может создать файл с произвольным доступом своей собственной структуры.
Формат операторов и событий для различных типов файлов.
Таблица 15.4
|
Файлы с последовательным доступом |
Файлы с произвольным доступом |
Операторы |
Open Имя_файла For Режим_доступа As #Номер_файла Режимы доступа: - Input (файл открывается для чтения из него информации; если файл отсутствует, возникает сообщение об ошибке); - Output (файл открывается для записи; если файл отсутствует, возникает сообщение об ошибке; если файл уже существует, он удаляется с диска и создается заново); |
Open Имя_файла [For Random] As #Номер_файла Len=Длина_записи Имя_файла – имя открываемого файла. Если путь к файлу не указан, файл открывается в текущей папке. For Random – режим доступа единственно возможный; не обязателен, т.к. этот параметр устанавливается по умолчанию. Номер_файла – номер файла Длина_записи – длина записи в байтах |
- Append (файл открывается для записи в него информации; если файл уже существует, запись производится в конец файла; если файл не существовал на диске, то он создается) |
В отличие от файла с последовательным доступом, здесь необходимо обязательно указывать длину записи. Если длина неизвестна, ее можно вычислить с помощью функции Len |
|
Close [#Номер_файла][, #Номер_файла][,#Номер_файла Оператор закрывает файлы, номера которых указаны в списке. Если номера файлов не указаны, закрываются все файлы, открытые в данный момент. Файлы необходимо закрывать сразу после того, как работа с ними закончена. |
||
Line Input # Номер_файла, Имя_переменной Оператор читает из файла строку текста и присваивает прочитанное значение переменной типа String. Признаком конца строки служит символ возврата каретки или комбинация символов возврата каретки и конца строки. Если файл создавался в программе Блокнот, символ возврата каретки формируется при нажатии на клавишу [Enter]. Если файл создавался с помощью программы Visual Basic, этот символ добавляется в файл операторами Write# или Print#. В отличие от оператора Line Input # оператор Input # может читать не всю текстовую строку, а только ее часть – поле. Поля отделяются друг от друга запятой. Если текст поля заключен в кавычки, то они при чтении файла отбрасываются. Отбрасывается также запятая, разделяющая поля. |
Put #Номер_файла, [Номер_записи] Переменная Номер_файла – номер файла, аналогичный номеру в операторе Open Номер_записи – целочисленное выражение, которое задает номер записи в файле. Если номер записи не указан, то по умолчанию принимается текущая позиция указателя записи. Переменная – переменная, указывающая источник записываемых данных При использовании оператора Put #, необходимо иметь ввиду, что данные в записи с указанным в операторе номером будут заменены теми, которые записываются в файл. Новая запись с данными не создается. Для добавления записей в файл необходимо указывать номер записи, который на единицу больше номера последней записи. В этом случае запись будет добавлена в файл, а не заменена. Для удаления данных существует два способа: 1) очистить соответствующие поля указанных записей, т.е. записать в них пустые значения. Однако в этом |
Окончание таблицы 15.4
|
Файлы с последовательным доступом |
Файлы с произвольным доступом |
|
Print #Номер_файла, [Список_вывода] Список вывода – перечень строковых или числовых выражений, значения которых записываются в файл. Выражения в списке разделяются запятой, пробелами или точкой с запятой. Этот оператор после каждого элемента списка вставляет в файл один пробел, если выражения в списке вывода разделены точкой с запятой, или несколько пробелов, если выражения разделены запятой. После того, как записан последний элемент из списка вывода, в файл вставляется комбинация символов «конец строки» и «перевод каретки». Если список вывода опущен (запятая после номера файла при этом сохраняется), в файл вставляется пустая строка. Файл, созданный с помощью оператора Print#, читается обычно оператором Line Input# |
случае в файле остаются пустые записи, в связи с чем ресурсы (дисковое пространство) используются нерационально 2) передать данные в новый файл, пропуская пустые записи. В этом случае порядок действий таков:
В результат получается тот же самый файл, но без пустых записей. При этом экономятся дисковое пространство и время поиска данных в файле |
Функции |
Write #Номер_файла, [Список_вывода] Список вывода – перечень строковых или числовых выражений, значения которых записываются в файл. Выражения в списке разделяются запятой. Этот оператор после каждого элемента списка вставляет в файл запятую. Строка текста записывается в кавычках. После того, как записан последний элемент из списка вывода, в файл вставляется комбинация символов «конец строки» и «перевод каретки». Если список вывода опущен (запятая после номера файла при этом сохраняется), в файл вставляется пустая строка. Файл, созданный с помощью оператора Write#, читается обычно оператором Input#. |
Kill Имя_файла Имя_файла – полное имя файла |
Name Старое_имя_файла Новое_имя_файла В качестве имен файлов указываются полные имена файлов |
||
Get #Номер_файла, [Номер_записи] Переменная Номер_файла – номер файла Номер_записи – номер записи в файле. Если параметр Номер_записи не указан, считывается текущая запись Переменная – переменная. |
||
Для того, чтобы выяснить, прочитан ли файл до конца, используется функция EOF: EOF (Номер_открытого_файла) Номер_открытого_файла – единственный аргумент функции. Функция возвращает значение True, если достигнут конец файла, и значение False, если конец файла не достигнут |
Для вычисления номера последней записи нужно размер файла поделить на длину записи. Для вычисления размера (длины) файла (в байтах) используют функцию LOF: LOF (Номер_открытого_файла) Номер_открытого_файла – единственный аргумент функции. Возвращаемое функцией значение имеет тип Long. |