Учебное пособие Ч. 4

advertisement
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОУ ВПО
УФИМСКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ
ЭКОНОМИКИ И СЕРВИСА
Кафедра информатики
СИДОРОВ М.Е.
ИНФОРМАТИКА
Часть 2
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ
В СРЕДЕ VISUAL BASIC
Учебное пособие
Рекомендовано учебно-методическим советом УГАЭС
Уфа–2006
УДК 004.43 (07)
ББК 32.973-018 (я7)
С 34
Рецензент:
канд. техн. наук З.Ф. Исхаков
Сидоров М.Е.
Информатика. Ч 2. Алгоритмизация и программирование в среде Visual
Basic : Учебное пособие / М.Е. Сидоров. – Уфа: Уфимск. гос. акад. экономики
и сервиса, 2006. – С. 88.
ISBN 5-88469-291-9
Рассмотрены основы программирования в среде Visual Basic 6.0, свойства и методы основных элементов управления, примеры создания Windows
приложений.
Предназначено для студентов всех специальностей, аспирантов и преподавателей.
Илл.:
Библиогр.: назв.
ISBN 5-88469-291-9
© Сидоров М.Е., 2006
© Уфимская государственная академия
экономики и сервиса, 2006
2
СОДЕРЖАНИЕ
2. АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ .......................................... 5
В СРЕДЕ VISUAL BASIC ......................................................................................... 5
Введение ...................................................................................................................... 5
2.1. ПРОГРАММИРОВАНИЕ И АЛГОРИТМИЗАЦИЯ ......................................................... 5
2.2. ПРОГРАММЫ И ЯЗЫКИ ПРОГРАММИРОВАНИЯ ....................................................... 7
2.2.1. Языки программирования ............................................................................... 8
2.2.2. Объектно-ориентированное и визуальное программирование ................ 10
2.3. ПРОГРАММИРОВАНИЕ В СРЕДЕ VISUAL BASIC .................................................... 12
2.3.2. Основы программирования в среде Visual Basic......................................... 13
2.3.3. Операции Visual Basic.................................................................................... 17
2.3.4. Встроенные функции Visual Basic ............................................................... 19
2.3.5. Инструкции Visual Basic ............................................................................... 24
2.3.6. Функции и процедуры .................................................................................... 28
2.3.7. Область видимости переменной ................................................................. 31
2.3.8. Задание цвета изображения ........................................................................ 31
Контрольные вопросы ............................................................................................. 31
2.4. СОЗДАНИЕ СТАНДАРТНОГО ПРОЕКТА ПРИЛОЖЕНИЯ ........................................... 32
2.5. ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ ПРИЛОЖЕНИЙ VISUAL BASIC .............. 33
2.5.1. Компоненты рабочей среды ......................................................................... 33
2.5.2. Главное меню .................................................................................................. 34
2.5.3. Стандартная панель инструментов .......................................................... 34
2.5.4. Окно конструктора форм ............................................................................ 35
2.5.5. Окно макета формы ..................................................................................... 35
2.5.6. Окно проводника проекта ............................................................................ 36
2.5.7. Панель элементов управления ...................................................................... 36
2.5.8. Размещение элементов управления в форме .............................................. 37
2.5.9. Окно свойств .................................................................................................. 39
2.5.10. Основные свойства элементов управления .............................................. 39
2.5.11. Редактор исходного кода программы ....................................................... 43
2.5.12. Основные события и методы элементов управления ............................. 46
2.5.13. Сохранение и выполнение проекта ............................................................ 47
2.6. ФОРМА................................................................................................................. 48
2.6.1. Семейство форм ............................................................................................ 48
2.6.2. Основные свойства формы .......................................................................... 48
2.6.3. Основные методы и события формы ......................................................... 51
2.6.4. Обработка событий мыши .......................................................................... 53
2.6.5. Обработка событий клавиатуры ............................................................... 55
2.6.7. Единицы измерения размеров ....................................................................... 57
2.6.8. Инструкции начала и завершения работы с формой ................................ 57
2.6.9. Соглашения об именах объектов ................................................................. 57
2.7. КОМПОНЕНТЫ НАВИГАЦИИ ФАЙЛОВОЙ СИСТЕМЫ ............................................. 58
2.7.1. DriveListBox (Список дисков)........................................................................ 58
3
2.7.2. DirListBox (Список каталогов) .....................................................................58
2.7.3. FileListBox (Список файлов) ..........................................................................59
2.7.4. Окно открытия файла (Open) ......................................................................62
2.8. ВСТРОЕННЫЕ ДИАЛОГОВЫЕ ОКНА .......................................................................65
2.8.1. Окно ввода - функция InputBox .....................................................................65
2.8.2. Окно сообщений - функция MsgBox..............................................................66
2.8.3. Применение функций InputBox и MsgBox в проекте...................................67
2.9. СОЗДАНИЕ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ПРИЛОЖЕНИЯ .....................................68
2.9.1. Основное меню................................................................................................68
2.9.2. Контекстное меню ........................................................................................70
2.9.3. Список изображений .....................................................................................70
2.9.4. Панель инструментов ...................................................................................71
2.9.5. Строка состояния .........................................................................................72
2.9.6. Обработка событий панели инструментов ...............................................74
2.9.7. Обработка событий меню............................................................................74
2.10. МАССИВЫ ОБЪЕКТОВ.........................................................................................75
2.11. СОЗДАНИЕ ГРУППЫ ПЕРЕКЛЮЧАТЕЛЕЙ .............................................................76
2.11.1. Порядок размещения переключателей в рамках ......................................76
2.12. НЕСКОЛЬКО ФОРМ В ПРОЕКТЕ............................................................................76
2.12.1. Шаблоны форм диалога ..............................................................................76
2.12.2. Создание и вывод на экран окна диалога ...................................................76
Создание формы диалога из шаблона Form ..........................................................77
Шаблон формы Dialog .............................................................................................78
Шаблон формы About Dialog ..................................................................................79
Шаблон формы Log in Dialog .................................................................................80
Общий модуль проекта............................................................................................81
Контрольные вопросы .............................................................................................83
2.13. НОВАЯ ВЕРСИЯ - VISUAL BASIC.NET .................................................................84
ГЛОССАРИЙ ............................................................................................................86
СПИСОК ЛИТЕРАТУРЫ………………………………………………………...87
4
2. АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ
В СРЕДЕ VISUAL BASIC
Введение
Это учебное пособие написано для студентов, обучающихся в гуманитарных и экономических высших учебных заведениях и, следовательно, содержит материал, ограниченный необходимостью освоения основ программирования в среде Visual Basic. Основное внимание уделено изучению стандартных элементов управления Visual Basic и их использованию при создании
графического интерфейса пользователя в приложениях. Это позволит студентам лучше понять графический интерфейс офисных приложений Windows.
Учебное пособие предназначено для изучения основ программирования в визуальных средах и не является справочным пособием, поэтому в нем не приводится перечень всех элементов управления (компонентов), их свойств, методов и событий. Основное внимание уделяется изучению часто используемых компонентов и их атрибутов, в контексте приводимых в пособии примеров и учебных приложений.
В пособии не рассматриваются различные численные методы и их реализация в среде Visual Basic, характерные для изучения программирования в
технических университетах. Не рассматриваются также вопросы хранения
данных: запись и считывание данных из файлов различных типов, использования баз данных в проектах Visual Basic, в том числе и при создании Интернет-проектов. Не затрагиваются вопросы создания новых классов, компонентов ActiveX, справочной системы, дистрибутива (инсталляционного варианта
проекта), использование в проектах функций Windows API. В связи с ограниченным объемом пособия в сокращенном варианте изложена настройка среды
программирования, а также возможности Visual Basic для создания графических и мультимедийных приложений.
Изучение программирования в среде Visual Basic 6.0 поможет тем, кто
собирается программировать в Microsoft Office, используя средства VBA
(Visual Basic for Applications), поскольку эти языки имеют общую основу.
2.1. Программирование и алгоритмизация
Программированию предшествует важнейший этап – постановка задачи. Постановка задачи может включать широкий спектр вопросов (разработка
математических и физических моделей, вывод расчетных формул и т. п.). Программист должен четко представлять явление или формулу, которые он алгоритмизирует.
Процесс программирования начинается, как правило, с составления алгоритма. Составление алгоритма заключается в логическом описании процесса
решения задачи и требует знания элементов математической логики. Таким
образом, алгоритм – это последовательности операций, описывающих про5
цесс решения задачи.
Графическая запись алгоритма представляется в виде блок-схемы. Такое представление алгоритма достаточно удобно и наглядно показывает последовательность выполнения операторов программы.
С появлением объектно-ориентированного программирования изменились и подходы к алгоритмизации, наряду с разработкой алгоритмов реализации численных методов программист при создании приложения сталкивается
с необходимостью алгоритмизации пользовательского интерфейса приложения (команд меню, кнопок панелей инструментов), разработкой алгоритмов
при создании классов, написании обработчиков событий для объектов, используемых в приложении.
Блок-схемы используется как при обучении программированию для графического представления выполнения операторов и логических переходов (детальные блок-схемы), так и при описании взаимодействия процедур в сложных программах (укрупненные блок-схемы). Приведем основные обозначения,
применяемые в детальных блок-схемах.
Ввод, вывод
данных
Выполнить
оператор
Проверить
условие
Начало, конец
программы
Рис. 2.1. Обозначения в блок-схемах
В соответствии с используемыми в программе операторами различают
следующие типы алгоритмов: линейный, ветвящийся, циклический, комбинированный.
Пример блок-схемы алгоритма расчета квадратного корня числа.
6
Начало
Ввести
значение
x<0 ?
Да
Вывести
сообщение
Нет
Значение
у = х
Вывести
значение y
Конец
Рис. 2.2. Пример блок-схемы алгоритма
Программирование заключается в записи алгоритма на языке программирования и отладке программы. Текст программы записывается в текстовом
редакторе, затем программа компилируется – переводится транслятором (переводчиком) в машинные коды и запускается на выполнение.
Процесс отладки программы начинается с выявления:
синтаксических ошибок в тексте (неверно записанных операторов);
ошибок при выполнении программы (недопустимые математические
действия, операции с числами, превосходящими предельные значения);
алгоритмических ошибок (неверно составлен или запрограммирован
алгоритм).
2.2. Программы и языки программирования
Программа (исходный код) - набор пошаговых команд, написанных на
языке программирования (в текстовом редакторе), соответствующих алгоритму решения задачи и реализуемых микропроцессором.
Язык программирования – язык, используемый для написания компьютерных программ и состоящий из словаря и совокупности правил (синтаксиса),
которые применяются при написании команд, выполняемых микропроцессором.
Текст программы на языке программирования называется исходным
кодом, а конечная программа в машинных кодах – объектным кодом. Для
получения объектного кода используются компиляторы и интерпретаторы.
7
Компилятор – программа, которая считывает исходный код, проверяет
его синтаксис, преобразует в машинный код (транслирует) и устанавливает
связи с используемыми подпрограммами (компилирует). В результате работы
компилятора получается исполняемый файл – приложение.
Интерпретатор – программа, которая считывает исходный код по операторам, сразу транслирует их выполняет. Таким образом, в результате работы
интерпретатора исполняемый файл не формируется.
Исполняемый файл – программа, готовая к запуску на компьютере
(обычно файл с расширением .exe).
Программирование – процесс, включающий стадии проектирования,
кодирования, отладки, тестирования и документирования программы.
Проектирование программы – определение входных данных, процедур
обработки данных и выходных данных.
Кодирование программы – запись программы на языке программирования в соответствии с алгоритмом задачи.
Отладка программы – выявление и исправление синтаксических ошибок, ошибок на этапе выполнения (переполнение разрядной сетки, деление на
ноль, извлечение корня из отрицательного числа и т.д.) и логических ошибок в
программе.
Тестирование программы – проверка результатов выполнения программы для различных вариантов исходных данных, включающих крайние
значения диапазона данных, экспериментально апробированные данные, расчеты по аналитическим, либо упрощенным зависимостям и расчеты с использованием других программ.
Документирование программы – создание подробного руководства по
программе: описание вводимых и выводимых данных, тестовые примеры расчета.
2.2.1. Языки программирования
Языки программирования по стилю написания исходного кода классифицируются на процедурные (составляются процедуры, содержащие набор
команд) и декларативные (определяется совокупность фактов и взаимосвязей,
позволяющих запрашивать результаты).
Языки программирования по уровню исходного кода классифицируются
на языки высокого уровня и языки низкого уровня.
2.2.1.1. Языки программирования низкого уровня
Языки программирования низкого уровня представляют специальный
набор инструкций, набранных с использованием команд управления регистрами микропроцессора. Языки программирования низкого уровня позволяют
программисту кодировать команды с максимально возможной эффективностью. Но использование языков низкого уровня требует досконального знания
возможностей конкретной компьютерной системы и команд микропроцессора.
Кроме того, программирование на языке низкого уровня занимает существен8
но больше времени, чем программирование на языке высокого уровня.
2.2.1.1.1. Машинный язык
Машинный язык содержит набор команд управления регистрами микропроцессора. Оперирует двоичными, восьмеричными или шестнадцатеричными
числами. Зависит от типа микросхемы процессора компьютера.
2.2.1.1.2. ASSEMBLER (Ассемблер)
Язык ассемблера оперирует инструкциями и командами, которые может
выполнить микропроцессор. Программирование в машинных кодах очень
сложно и обычно это делается сериями мнемоник. Мнемоники – это коды операций, которые читабельны и понятны людям и могут быть легко преобразованы в машинный код, используя ассемблер.
2.2.1.2. Языки программирования высокого уровня
Языки программирования высокого уровня представляют специальный
набор инструкций, использующих ключевые слова и синтаксис, похожий на
английский. Эти языки освобождают программиста от необходимости знать,
как именно компьютер выполняет команды. Каждый оператор языка высокого
уровня соответствует нескольким командам машинного языка, что позволяет
писать программы быстрее, чем на языках низкого уровня. Однако трансляция
выполняется не самым эффективным образом, поэтому программы, написанные на языках высокого уровня, выполняются медленнее, чем написанные на
языках низкого уровня.
2.2.1.2.1. BASIC (Бейсик)
Разработан сотрудниками Дартмутского колледжа (США) Джоном Кемени (John Kemeny) и Томасом Курцом (Tomas Kurtz)в 1964 году. Первый
персональный компьютер IBM PC имел 16-разрядный BASIC, разработанный
корпорацией IBM. Позже его сменил GW-BASIC и QUICK-BASIC, разработанный корпорацией Microsoft.
BASIC (Beginner's All-Purpose Symbolic Instruction Code) – универсальный код символьных команд для начинающих, является интерпретируемым
процедурным языком, операторы которого выполняется компьютером шаг за
шагом. BASIC легко изучить, но программы, написанные на нем, выполняются
медленно, поэтому он плохо подходит для профессионального программирования. Разработаны компиляторы Бейсика, например, Turbo Basic (фирма
Borland) и Visual Basic (фирма MicroSoft).
Для программирования в приложениях Microsoft Office корпорацией
Microsoft был разработан язык VBA (Visual Basic for Application).
2.2.1.2.2. FORTRAN (Фортран)
Разработан в 1956 году Джоном Бэкусом (John Backus). FORTRAN
(FORmula TRANslator) – переводчик формул, является компилируемым язы9
ком программирования. FORTRAN удобный язык для программирования
научных и инженерных задач, создания математических прикладных программ, имеет большую библиотеку готовых подпрограмм.
2.2.1.2.3. PASCAL (Паскаль)
Разработан в 1971 году Никлаусом Виртом (Nicklaus Wirth), назван в
честь Луи Блез Паскаля. Процедурный, структурированный язык программирования позволяет писать модульные программы. PASCAL получил широкое
распространение как язык обучения программированию.
Turbo Pascal – усовершенствованный и расширенный (объектноориентированные версии - Object Pascal) язык программирования, разработанный фирмой Borland International. Имеет быстродействующий компилятор,
оболочку с текстовым редактором и позволяет создавать исполняемые программы.
Delphi (Дельфи) – разработан фирмой Borland, 1995 г. Позволяет создавать проекты, используя средства визуального программирования, дополняемые исходным кодом, написанным на Object Pascal.
2.2.1.2.4. C(Си)
Разработан в 1972 году Денисом Ричи (Dennis Ritchi). Многоцелевой
компилируемый процедурный язык сочетает образность языков программирования высокого уровня с эффективностью ассемблера. Используется для профессионального программирования, создания программного обеспечения.
Большинство коммерческих (платных) программ, написаны на С или C++.
C++ - объектно-ориентированный язык программирования, разработанный Бьярни Страуструпом (Bjarne Stroustrup) в начале 1980-х.
Borland C++ Builder, Microsoft Visual C++ - объектно-ориентированные
визуальные языки программирования.
2.2.2. Объектно-ориентированное и визуальное программирование
Современные
языки
программирования
являются
объектноориентированными, что означает использование объектов при написании программного кода. Объекты являются экземплярами классов. Таким образом,
объектно-ориентированное программирование (ООП) предполагает использование готовых и создание новых классов в программах.
Класс представляет собой тип данных, содержащий набор свойств, методов и событий, в отличие от обычного типа данных, определяющего только
внутреннее представление значений переменных. Например, некоторый класс
Pen, предназначенный для рисования, может иметь такие свойства как цвет,
толщину линии, начертание линии (сплошная, пунктирная и т.п.), методы создания и удаления экземпляров класса, присвоения свойств другим экземплярам данного класса. Набор событий некоторого класса позволяет программировать необходимые действия, выполняющиеся при наступлении событий,
например, при изменении свойства цвет объекта класса Pen, можно запро10
граммировать изменение начертания линий, определив, таким образом, для
некоторого набора цветов, определенные начертания линий.
Доступ к свойствам и методам класса реализуется через объекты данного класса по схеме: ИмяОбъекта.Свойство и ИмяОбъекта.Метод, таким образом, разные объекты могут иметь одинаковые свойства и использовать одни
и те же методы.
Свойства могут быть объектами, которые, в свою очередь, имеют свои
свойства. В этом случае доступ к свойствам имеет вид:
ИмяОбъекта.ИмяОбъекта_Свойства.Свойство
Например: Command1.Font.Name
Некоторые свойства являются свойствами по умолчанию. В этом случае
их можно не указывать, например, следующие записи идентичны:
ИмяОбъекта.ИмяОбъекта_Свойства.Свойство_ПоУмолчанию
ИмяОбъекта.ИмяОбъекта_Свойства
Например: Command1.Font.Name то же, что и Command1.Font
Значения некоторых свойств могут задаваться как на этапе конструирования проекта, так и в программном коде, например, значения свойств шрифта
(Font), другие только на этапе конструирования проекта, например, значения
свойства начальная позиция формы Form1.StartUpPosition.
Если свойство доступно для чтения и записи, то оно может стоять как в
левой, так и в правой части равенства, например:
List1.Font.Name = "Courier"
Fname = List1.Font.Name,
где Fname – переменная строкового типа.
Если свойство доступно только для чтения, то оно может стоять только в
правой части равенства, например, количество элементов списка:
Cnt= List1.ListCount
Методы объектов используются при написании программного кода,
например, добавление строки в список: List1. AddItem "Строка1".
Класс может содержать набор событий. Основная идея событийноуправляемого программирования (event-driven programming) заключается в
том, что в программе необходимо указать, как реагировать на различные события (действия пользователя): выбор команды меню, щелчок или перемещение мыши, нажатие клавиш и др. Например, в событии щелчок мыши на кнопке, можно закрыть окно приложения
Private Sub Command1_Click()
Unload Me
End Sub
ООП основывается на трех принципах: инкапсуляция, наследование и
полиморфизм.
Способность класса содержать в себе свойства, методы и события называется инкапсуляцией. Принцип инкапсуляции в ООП позволяет скрыть от
пользователя программную реализацию свойств и методов, оставляя только
возможность их использования в классах.
11
Следующим принципом ООП является наследование, т.е. создание новых классов на основе имеющихся. Это позволяет использовать готовые свойства, методы и события, написанные ранее для одних классов другими классами. Например, оператор
Type Pencil = class(Pen)
Позволяет создать класс Pencil, наследующий все атрибуты класса Pen и
обладающий собственными, выполняющими специфические действия, например, свойство, позволяющее рисовать линии переменной толщины.
Классы могут иметь методы с одинаковым названием, но их программная реализация может быть различна. Этот принцип ООП называется полиморфизмом. Например, оба класса Pencil и Pen имеют метод Assign – присвоения свойств другим экземплярам, но поскольку набор свойств у данных классов может быть разным, то и процедуры присвоения свойств будут разными.
ООП позволяет программистам создавать приложения, используя готовые классы, и это хорошо. Но современные языки программирования еще и
визуальные, например, Visual Basic. Визуальная среда разработки включает
редактор программного кода, отладчик, конструктор форм и называется также
интегрированной средой разработки IDE (Integrated Development Environment).
Конструктор форм позволяет использовать готовые компоненты, например,
форму, кнопку, надпись, поле, флажок, переключатель и т.п., что значительно
упрощает и ускоряет создание приложения. Такие средства разработки приложений называют RAD (Rapid Application Development).
2.3. Программирование в среде Visual Basic
В 1992 г. корпорацией Microsoft была разработана версия Visual Basic
1.0 – объектно-ориентированного языка программирования для Windows 3.1,
поддерживающего событийно-управляемое программирование. Затем были
версии Visual Basic 3.0, 4.0, 5.0 и Visual Basic 6.0. Visual Basic содержит несколько сотен команд, функций и ключевых слов, многие из которых реализуют графический интерфейс пользователя GUI (Graphical User Interface) операционной системы Windows.
Программы - приложения, разрабатываемые в среде Visual Basic, имеют,
как правило, стандартный пользовательский интерфейс: форму, на которой
располагаются элементы управления, панели инструментов и меню. Далее
пишется код обработки событий - операторы на языке Visual Basic. Таким образом, разработка приложения включает следующие этапы:
создание графического интерфейса пользователя (GUI);
написание текста программы.
12
2.3.2. Основы программирования в среде Visual Basic
2.3.2.1. Типы данных
Тип данных определяет множество допустимых значений, которое может принимать указанная переменная. В Visual Basic имеются следующие основные типы данных.
Таблица 2.1
Тип данных
Byte (байт)
Boolean (логический)
Integer (целое)
Long (длинное целое)
Single (вещественное обычной
точности)
Double (вещественное двойной
точности)
Размер
(байт)
1
2
2
4
4
8
Currency (денежный)
8
Date (даты и время)
Object (объект)
String (строка переменной длины)
String (строка постоянной длины)
Variant
Тип данных, определяемый с помощью ключевого слова Туре
8
4
-
Диапазон значений
От 0 до 255
True или False
От -32768 до 32767
От -2147483648 до 2147483647
От –3,4 Е+38 до -1,4 Е-45 и
от 1,4 Е-45 до 3,4 Е+38
От –1,7 Е+308 до –4,9 Е-324 и
от 4,9 Е-324 до 1,7 Е+308
От -922 337 203 685 477,5808
до 922 337 203 685 477,5807
С 1 января 100г. до 31 декабря
9999г.
Ссылка на объект
От 0 до ~2 миллиардов знаков
От 1 до ~65 400 знаков
Тип зависит от значения
определяется типом данных
2.3.2.2. Допустимые имена
В Visual Basic пользователь определяет имена переменных, функций,
процедур, типов, постоянных и других объектов. Верхний и нижний регистр
букв в имени равнозначны. В Visual Basic имеются следующие ограничения на
имена:
длина имени не должна превышать 255 символов;
имя может буквы, цифры и знак подчеркивания "_";
имя должно начинаться с буквы;
имена должны быть уникальны внутри области, в которой они определены;
не следует использовать имена, совпадающие с ключевыми словами
Visual Basic и именами встроенных функций и процедур.
13
2.3.2.3. Описание переменных
В программе Visual Basic тип переменной объявлять не обязательно, в
этом случае переменная получает тип variant. Для обязательного описания
всех переменных в начале модуля ставится инструкция Оption Explicit. Синтаксис описания переменной:
Dim ИмяПеременной [As [New] Тип]
Переменная может быть описана также при помощи инструкций Private,
Public и Static, определяющих область действия переменной. После инструкций Dim и т.п. можно через запятую описать несколько переменных с указанием типа для каждой из них. Переменная с неуказанным типом получает тип
variant. Примеры:
Dim Number As Integer
Dim AVar, Choice As Boolean, BirthDate As Date
AVar="Привет"
Number=123
AVar = 276.9 + Number
Choice=True
BirthDate=#4/5/2001 1:25:33 AM#
New – ключевое слово для неявного создания объекта без использования
ссылки на объект с помощью инструкции Set, например
Dim xlApp1 As Excel.Application' раннее связывание
Set xlApp1 = New Excel.Application 'либо
Dim xlApp2 As Object
' позднее связывание
Set xlApp2 = CreateObject("Excel.Application")
Dim X As New Worksheet ' либо
Dim Х As Worksheet
Set Х = New Worksheet
Ключевое слово New не может использоваться для фундаментальных
типов (например, Byte), общего типа Control, элементов управления и их типов
(например, MyLstBox1, ListBox).
2.3.2.4. Массивы
Массивы должны быть объявлены до их использования в программе.
Синтаксис:
Dim ИмяМассива (Индексы) [As Тип],
где индексы – Размерности массива. Допускается описание до 60 размерностей.
Синтаксис индексов: [Нижний То] Верхний [,[Нижний То] Верхний] ...
Если нижний индекс не задан явно, то нижняя граница массива определяется инструкцией Option Base, иначе нижняя граница массива равняется нулю. Базовый индекс можно изменить, написав в области описания модуля инструкцию, например
Option base 1 'Базовый Индекс равен 1
14
Dim MyArr(20), TwoDArr(3, 4) ' Объявление массивов
Dim ZeroArr(0 To 5) As Integer ' Явное задание базового индекса
Dim MyMatr(1 To 5, 1 To 9) As Double
ZeroArr(0)=15
ZeroArr(2)=25
MyMatr(1,1)=8.9
Для определения одномерных массивов можно использовать переменную типа variant, задавая значения элементам массива инструкцией Array:
Dim A As Variant
А = Аrrау(1, 15, 30) ' значения элементов массива равны: 1, 15, 30
2.3.2.4.1. Динамические массивы
Если в процессе выполнения программы требуется изменять размер массива, то массив объявляют как динамический, например:
Dim R() As Single
В программе следует задать размер массива с помощью инструкции
ReDim. Синтаксис:
ReDim [Preserve] ИмяМассива(Индексы) [As Тип]
Preserve – ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности.
Для массива, не сохраняющего данные, можно изменять верхнюю и
нижнюю границы, но нельзя менять размерность массива, например:
ReDim R(1 to 90)
ReDim R(-10 to 10)
Для массива, сохраняющего данные, можно изменять только верхний и
последний индекс размерности массива, например:
Dim Matr() As Integer
ReDim Matr(19, 29)
ReDim Preserve Matr(19,33)
2.3.2.4.2. Чистка массивов
Для повторной инициализации массивов фиксированной длины и освобождения памяти, отведенной для динамического массива служит процедура
Erase СписокМассивов, например:
Dim NumAr(10) As Integer ' числовой массив
Dim StrVarAr(10) As String 'массив строк переменной длины
Dim StrFixAr(10) As String * 10 'массив строк постоянной длины
Dim VarAr(10) As Variant ' 'массив вариант
Dim DynAr() As Integer ' динамический массив
ReDim DynAr(10) 'определение длины массива
Erase NumAr ' все элементы массива равны 0.
Erase StrVarAr ' все элементы массива нулевой длины ("")
Erase StrFixAr ' все элементы массива равны 0
15
Erase VarAr
Erase DynAr
' все элементы массива равны Empty
'освобождение памяти, использовавшейся для массива
2.3.2.4.3. Массивы объектов
Для создания массива объектов на этапе конструирования необходимо:
1. Создать в форме один из объектов из элементов управления;
2. Скопировать объект в буфер обмена (нажмите Ctrl+C);
3. Вставить несколько объектов из буфера обмена (несколько раз
нажмите Ctrl+V).
При обращении к объектам массива указывается их индекс:
ИмяОбъекта(Индекс), например, LblArr(5).
2.3.2.5. Константы
Константы не могут изменять свои значения. Синтаксис:
[Public | Private] Const ИмяКонстанты [As Тип] = Выражение
Примеры:
Const MyStr = "Hello", MyVar = 459
Public Const MyStr1 = "HELP"
Private Const MyInt As Integer = 5
2.3.2.6. Перечисленный тип
Перечисленный тип используется для работы с константами и позволяет
ассоциировать их значения с именами. Синтаксис:
[Public | Private] Enum ИмяПеременной
СonstName1 [= Const1]
ConstName2 [= Const2]
.........
End Enum,
где СonstName1 – имя константы. Сonst1 – значение константы.
По умолчанию значение первой константы равно 0, второй 1 и т.д. Пример:
Enum SecLev
SecLev1 = 0
SecLev2 = 1
End Enum
Dim MyLev As SecLev
If MyLev <> SecLev2 Then MsgBox ("No assecc!")
2.3.2.7. Тип данных, определенный пользователем
Тип, определенный пользователем, представляется как запись или
структура. Синтаксис:
[Private | Public] Type ИмяТипа
ИмяПоля1 [([Индексы])] As Тип
16
ИмяПоля2 [([Индексы]) ] As Тип
........
End Type
Пример:
Type ERecord ' Тип, определенный пользователем
ID As Integer
Name As String * 20
Address As String * 30
End Type
Dim MyRec As ERecord ' Объявление переменной
MyRec.ID = 13
' Присвоение значения
2.3.3. Операции Visual Basic
В программах на Visual Basic имеются три типа операций: математические, отношения, логические.
2.3.3.1. Математические операции
Таблица 2.2
"+" – Сложе- "*" – Умноже- "\" – Целочисленное "-" – Унарный миние
ние
деление
нус
"-" – Вычита- "/" – Деление
"Mod" – Остаток "^" – Возведение
ние
от деле- в степень
ния
Для отрицательных чисел возможно возведение только в целую степень.
При целочисленном делении и нахождении остатка от деления вещественные данные сначала округляются до целых значений, примеры:
Dim MyR
MyR = 10 Mod 5 ' получаем 0
MyR = 10 Mod 3 ' получаем 1
MyR = 12 Mod 4.3 ' получаем 0
MyR = 12.6 Mod 5 ' получаем 3
MyValue = 11 \ 4 'получаем 2
MyValue = 9.3 \ 3 'получаем 3
MyValue = 101.7 \ 3 'получаем 34
2.3.3.2. Операции отношения
Таблица 2.3
"<" – Мень- "<=" – Меньше или "=" – Равно
ше
равно
">" – Больше ">=" – Больше или рав- "<>" – Не равно
но
17
"Is" – Сравнение
объектов
"Like" – Сравнение
строк
2.3.3.3. Логические операции
"And" – Логическое умножение.
"Хог" – Исключающее или.
"Or" – Логическое сложение.
"Not" – Логическое отрицание.
2.3.3.4. Таблица истинности
Таблица 2.4
Значения\Операция
A And B
A Or B
A Хог B
Not A
A=True
B=True
True
True
False
False
A=True
B=False
False
True
True
False
A=False
B=True
False
True
True
True
A=False
B=False
False
False
False
True
2.3.3.5. Соединение строк
Используется знак конкатенации &, либо + (для переменных, кроме
числового типа Variant).
Строка1 & Строка2 или Строка1 + Строка2.
Использование знака &, предпочтительнее, чем +, поскольку выражение,
содержащее знак & автоматически преобразуется в строковый тип, примеры:
Dim X, Y, Z
X=6
Y = "7"
Z= X + Y ' получаем 13
Z= X & Y ' получаем "67"
2.3.3.6. Приоритеты операций
Visual Basic выполняет операции в соответствии с их приоритетами (от
наибольшего к наименьшему). Более высокий приоритет имеет операция с
меньшим порядковым номером (см. таблицу 2.5).
Таблица 2.5
№ Операция
№ Операция
1 Вызов функции и скобки 5 Деление нацело
№ Операция
9 Not
2
Возведение в степень
6
Остаток от деления
3
Унарный минус
7
Сложение и Вычитание 11 Or
4
Умножение и Деление
8
Операции отношения
18
10 And
12 Xor
Примеры:
Dim MyVal
MyVal = (-5) ^ 2 'получаем +25
MyVal = -5 ^ 2 'получаем -25
MyVal=True
MyVal =not MyVal Or MyVal 'получаем True
MyVal = Not (MyVal Or MyVal) 'получаем False
2.3.4. Встроенные функции Visual Basic
В Visual Basic имеется большой набор встроенных функций и процедур,
следующих категорий:
Математические функции, Функции проверки типов, Функции преобразования форматов, Функции обработки строк, Функции времени и даты, Финансовые функции. Синтаксис:
Функция(Аргумент или Выражение)
2.3.4.1. Математические функции
Таблица 2.6
Функция
Возвращаемое значение
Функция
Abs
Sgn
Atn
Модуль (абсолютная величина) числа
Арктангенс
Возвращаемое значеЗнакние
числа
Sin
Синус
Cos
Косинус
Sqr
Ехр
Экспонента
Tan
Квадратный корень числа
Тангенс
Log
Натуральный логарифм
Fix
Целая часть числа
Rnd
Случайное число в интервале
(0,1)
Int
Целая часть числа.
Если число меньше нуля, то Rnd возвращает каждый раз одно и то же
число. Если число больше нуля или опущено, то Rnd возвращает следующее
случайное число в последовательности. Если число равняется нулю, то Rnd
возвращает случайное число, возвращенное при предыдущем вызове этой
функции. Для изменения чисел в последовательности перед вызовом функции
Rnd используйте инструкцию Randomize. Примеры.
Dim MyVal
Randomize 'инициализация генератора случайных чисел
MyVal = Int((6 * Rnd) + 1) 'генерируется случайное число от 1 до 6
MyVal = Sqr(4) ' получаем 2.
MyVal = Sqr(-4) 'генерируется ошибка времени выполнения
Различие между функциями int и Fix состоит в том, что для отрицатель-
19
ного значения параметра число функция int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, a Fix – ближайшее отрицательное целое число, большее либо равное указанному.
2.3.4.2. Функции проверки типов и значений
Таблица 2.7
Функция Тип аргумента Функция
Значение аргумента
IsArray
массив
IsEmpty переменная не инициирована
IsDate
дата
isNull
пустое значение
IsObject
объект
isNumeric
числовое значение
Примеры.
Dim MyDate, YourDate, NoDate, MyCheck
MyDate = "29.04.1969"
YourDate = #4/29/1969#
NoDate = "Hello"
MyCheck = IsDate(MyDate) ' получаем True
MyCheck = IsDate(YourDate) ' получаем True
MyCheck = IsDate(NoDate) ' получаем False
Dim MyInt As Integer, YObj
Dim MyObj As Object
Set YObj = MyObj ' назначаем объекту ссылку на другой объект
MyCheck = IsObject(YObj) ' получаем True.
MyCheck = IsObject(MyInt) ' получаем False.
2.3.4.3. Функции преобразования форматов
2.3.4.3.1. Функция Format
Функция Format возвращает значение типа Variant (string), содержащее
выражение, отформатированное согласно инструкциям, заданным в описании
формата. Синтаксис:
Format(Выражение[,Формат[,ПервыйДеньНедели[,ПерваяНеделяГода]]]),
где
Выражение – любое допустимое выражение;
Формат – инструкция форматирования.
ПервыйДеньНедели и ПерваяНеделяГода — используются при задании
формата даты.
20
2.3.4.3.2. Инструкции форматирования чисел
Таблица 2.8
Инструкция
Возвращает
General
число в общем формате без разделителя тысяч
Number
Currency
число в денежном формате согласно установкам Windows
Fixed
число с фиксацией двух цифр в дробной части числа и одной в
Standard
число в стандартном форматецелой.
– фиксированный с разделителем
Percent
число в фиксированномтысяч.
формате со знаком "процент"
Scientific
число с плавающей десятичной точкой (экспоненциальный)
True/False
False, если число равно 0, и True – в противном случае
2.3.4.3.3. Символы форматирования чисел
0 (нуль) – отображает цифру или нуль.
# (решетка) – отображает цифру или ничего.
. (точка) – отображает десятичный разделитель числа.
% (процент) – отображает символ процента после числа.
, (запятая) – отображает разделитель тысячных частей в целой части
числа.
: (двоеточие) – отображает разделитель часов, минут и секунд в формате
времени.
/ (слеш) – отображает разделитель дня, месяца и года в формате даты.
Е+, Е- или е+, е- - отображает разделитель мантиссы и порядка в экспоненциальном формате. Примеры:
MyStr = Format(1.2,"00.00") ' выводит 01,20
MyStr = Format(1.2,"#.##") ' выводит 1,2
MyStr = Format(5459.4, "##,##0.00") ' выводит 5 459,40
MyStr = Format(5, "0.00%") ' выводит 500,00%
MyStr = Format(1.22,"##.##е+##") ' выводит 1,22е+
MyStr = Format(1045.22,"Standard") ' выводит 1 045,22
MyStr = Format(1045.22,"Scientific") ' выводит 1,05Е+03
2.3.4.3.4. Инструкции форматирования даты и времени
Таблица 2.9
Инструкция
Возвращает
General Date дату или время. Если нет дробной части, то выводит только дату,
например,
13.04.2006с 20:18:37.
Long Date дату
в соответствии
длинным форматом Windows для даты.
21
Окончание табл. 2.9
Medium Date дату в соответствии со средним форматом Windows для даты,
например, 13-апр-06.
Short Date дату в соответствии с коротким форматом Windows для даты.
Long Time часы, минуты и секунды, например, 20:15:43.
Medium Time часы и минуты в 12-часовом формате, например, 8:15.
Short Time часы и минуты в 24-часовом формате, например, 20:15.
2.3.4.4. Функции преобразования типов
2.3.4.1. Преобразование строки в число и обратно
Val(строка)
Возвращает число, содержащееся в строке.
Str(число)
Возвращает строковое представление числа, тип
Variant (string). В качестве допустимого десятичного разделителя функция str
воспринимает только точку, иначе используйте функцию cstr.
2.3.4.1. Преобразование выражения в стандартный тип данных
Таблица 2.10
Функция Возвращает тип Функция Возвращает тип
СВооl
Boolean
Cint
Integer
Cbyte
Byte
CLng
Long
Ccur
Currency
CSng
Single
Cdate
Date
CVar
Variant
CDbl
Double
CStr
String
Примеры.
Dim MyDbl, MyStr, MyByte
MyDbl = 137.8
MyStr = CStr(MyDbl) ' получаем "137.8"
MyByte = CByte(MyDbl) ' получаем 138
2.3.4.5. Функции обработки строк
Таблица 2.11
Функция
Asc
Chr
Возвращает
ASCII код начальной буквы строки. Синтаксис: Asc(строка)
символ ASCII кода. Синтаксис: Chr(байт).
Например: Chr(99) – буква "с", Asc("с") – получаем число – 99
22
LСase
UСase
Left
Right
Mid
Lеn
Trim
Space
StrReverse
Окончание табл. 2.11
строку в нижнем регистре. Синтаксис: LCase(строка)
строку в верхнем регистре. Синтаксис: UCase(строка)
подстроку исходной строки. Синтаксис:
Left(строка,ЧислоПервыхСимволов)
подстроку исходной строки. Синтаксис:
Right(строка,ЧислоПоследнихСимволов)
подстроку строки. Синтаксис:
Mid(Строка,НомерПервогоСимвола[,ЧислоСимволов])
число символов строки. Синтаксис: Len(Строка)
строку без пробелов в ее начале и конце. Синтаксис:
Trim(Строка)
строку, состоящую
из пробелов. Синтаксис:
Space(числоПробелов)
строку в обратном
порядке. Синтаксис: StrReverse(string)
Примеры.
Dim str, UCaseStr, RevStr, LStr
str = "Hello World"
UCaseStr = UCase(str)
' получаем "HELLO WORLD"
RevStr =StrReverse(str) ' получаем "dlroW olleH"
LStr = Left(str,Len(str)\2) ' получаем "Hello"
2.3.4.5.1. Константы Visual Basic для управляющих ASCII кодов
Таблица 2.12
Константа Chr(Код) Клавиша
VbBack
Chr(8) Backspace
VbTab
Chr(9)
Tab
VbCr
Сhr(13)
Enter
2.3.4.6. Функции времени и даты
Таблица 2.13
Функция
Возвращает
Date
текущую системную дату, тип Variant (Date)
Time
текущее системное время, тип Variant (Date)
Now
текущую системную дату и время, тип Variant (Date)
целые числа – часы, минуты и секунды, тип Variant (integer).
Hour,
Синтаксис: Hour(Время), Minute(Время), Second(Время)
Minute,
Например:
Second
час=Hour(Now), Минута = Minute(Now), Секунда = Second(Now)
23
Окончание табл. 2.13
Day,
целые числа – день, месяц, год, тип Variant (integer)
Month, Синтаксис: Day(Дата), Month(Дата), Year(Дата)
Year
Например: День=Day(Now), Месяц=Month(Now), Год=Year(Now)
целое число – день недели
Синтаксис: Weekday(Дата, [ПервыйДеньНедели])
Weekday ПервыйДеньНедели по умолчанию – vbSunday (воскресенье)
Допустимы: vbMonday, VbTuesday, VbWednesday, vbThursday,
VbFriday, VbSaturday
Timer
число секунд, прошедших после полуночи, тип Single
количество временных интервалов между двумя датами, тип Long.
Синтаксис: DateDiff(Интервал, Дата1, Дата2 [, ПервыйДеньНедели
[, ПерваяНеделяГода]])
Интервал - тип временного интервала. Допустимые значения:
DateDiff
уууу – Год, q – Квартал, m – Месяц, ww – Неделя, h – Часы, m –
Минуты, s – Секунды; , у – День года d – День месяца, w – День
недели,
Например: Лет = DateDiff("yyyy", #4/7/57#, Now)
TimeValue Преобразует строку в формат времени
2.3.5. Инструкции Visual Basic
Инструкция Visual Basic представляет собой полную команду языка
Visual Basic. Она может содержать ключевые слова, операторы, переменные,
константы и выражения.
2.3.5.1. Оператор присвоения
Оператор присвоения присваивает значение выражения переменной,
константе или свойству объекта. Оператор присвоения всегда включает знак
равенства (=).
Синтаксис: [Let] Переменная = Выражение
Инструкция Let необязательна и чаще всего опускается.
Для присвоения переменной типа ссылки на объект применяется инструкция Set. Синтаксис:
Set Объект = [New] ИмяОбъекта | Nothing
где ключевое слово New используется при создании нового объекта, а
ключевое слово Nothing – при удалении объекта, чтобы освободить память,
выделенную для объекта.
2.3.5.2. Операторы управления
Операторы управления ходом выполнения программы функционально
делятся на две группы:
перехода и выбора: GоTо, If - Then – Else, Select Case;
повтора For - Next, For Each - Next, Do – Loop, While - Wend.
В операторах управления выполняются только те инструкции, которым
24
передается управление.
2.3.5.3. Оператор условного перехода
Оператор условного перехода задает выполнение определенных групп
инструкций в зависимости от значения выражения. Синтаксис:
If Условие Then Инструкция1 [Else Инструкция2]
Если Условие принимает значение True, то выполняется Инструкция1,
иначе Инструкция2. В случае блочной структуры оператора оператора условного перехода необходимо использовать ключевое слово End If, например:
If Условие Then
Инструкции1
[Else
Инструкции2
Еnd If
Для проверки нескольких условий используется оператор в виде if - Then
-ElseIf.
Синтаксис:
If Условие1 Then
Инструкции1
ElseIf Условие2 Then
Инструкции2
Else
Инструкции3
End If
Если условие1 имеет значение True, то выполняются инструкции1 и далее после End if. Если Условие1 имеет значение False, то проверяется Условие2 и т. д. пока не встретится условие, имеющее значение True, или пока не
встретится ключевое слово Else.
Примеры.
If A > 10 Then A = A + 1 : B = B + A
If А < 10 Then
Print "однозначное"
ElseIf А < 100 Then
Print "двухзначное"
Else
Print "трехзначное и более"
End If
2.3.5.4. Оператор выбора
Оператор выбора выполняет одну из нескольких групп инструкций в зависимости от значения выражения. Синтаксис:
Select Case Выражение
Case СписокВыражений1
25
Инструкции1
Case СписокВыражений2
Инструкции2
и т.п.
[Case Else
Инструкции3
End Select,
где СписокВыражений – это список с разделителями, состоящий из одного или нескольких выражений следующего вида:
2, 4, 5
6 to 10
Is > 18
Выполняются те инструкции для которых СписокВыражений включает
значение Выражение, иначе выполняется Инструкции после Else. Пример:
Select Case N
Case 21
Print "21"
Case 23
Print "23"
End Select
2.3.5.5. Оператор цикла с параметром: For - Next
Оператор цикла For - Next повторяет выполнение инструкций при изменении параметра цикла от значения параметр1 до значения параметр2 с заданным шагом параметра. По умолчанию шаг параметра равен 1. Синтаксис:
For параметр = параметр1 То параметр2 [ШагПараметра]
Инструкции
Next [параметр]
Прервать цикл можно оператором Exit For. Допустимы вложенные циклы.
Пример нахождения 10!:
F10=1
For i = 2 To 10
F10=F10*i
Next
2.3.5.6. Оператор цикла для элементов группы: For Each - Next
Оператор цикла For Each - Next повторяет выполнение инструкций для
каждого элемента массива или семейства. Синтаксис:
For Each Элемент In Группа
Инструкции
Next [Элемент]
Прервать цикл можно оператором Exit For.
Перед выполнением оператора нужно объявить тип элемента управле26
ния. Пример.
Dim Command As Object
For Each Command In Command1
Command.Enabled = False
Next Command
Dim Cntrl as Control
for Each Cntrl in Controls
Cntrl.Enabled=False
Next
Здесь Controls – семейство элементов управления.
Command1 – массив элементов CommandButton, созданный в конструкторе проекта.
2.3.5.7. Оператор цикла с предусловием: While - Wend
Оператор цикла while - wend повторяет выполнение инструкций, пока
заданное условие имеет значение True. Синтаксис:
While Условие
Инструкции
Wend
2.3.5.8. Оператор цикла с комбинацией условий Dо - Loop
Оператор DO - Loop повторяет выполнение инструкций, при while условии равном True или Until условии равном False. Синтаксис:
Do [While | Until Условие]
Инструкции
Loop
Do
Инструкции
Loop [While | Until Условие]
Прервать цикл можно оператором Exit Dо.
Пример:
Dim InPass, MyPass, n
MyPass = "y"
n=0
Do
n=n+1
If n > 3 Then Exit Do
InPass = InputBox("Введите пароль")
Loop Until InPass = MyPass
If n > 3 Then End
2.3.5.9. Оператор безусловного перехода GoTo
Оператор безусловного перехода задает переход на указанную Метку
внутри процедуры. Имя Метки должно начинаться с буквы. Синтаксис:
GoTo Метка
Метка с двоеточием пишется перед началом инструкции, на которую будет передано управление оператором GoTo. Синтаксис:
27
Метка: Инструкция
2.3.5.10. Синтаксические правила для инструкций
2.3.5.10.1. Комментарии
Комментарии, т. е. пояснения к фрагменту текста программы, не являются программным кодом и игнорируются компилятором. Комментарий начинается с апострофа ', либо словом Rem, при этом все символы до конца строки,
будут восприниматься компилятором как комментарий.
2.3.5.10.2. Перенос строки инструкции
Для продолжения инструкции Visual Basic в конце строки ставится пробел и знак подчеркивания "_". Исключения:
нельзя переносить строковые константы;
допустимо не более семи продолжений одной и той же строки;
инструкция не может состоять более чем из 1024 символов.
2.3.5.10.3. Расположение нескольких инструкций в одной строке
Знак двоеточие ":" позволяет разместить несколько инструкций в одной
строке.
2.3.5.10.4. Оператор With
Оператор with позволяет не указывать имени объекта в области оператора при работе с его свойствами и методами при этом точка перед свойством
или методом остается. Синтаксис:
With ИмяОбъекта
инструкции (используют .СвойствоОбъекта, .МетодОбъекта)
End With
Пример:
With MyObject
.Height = 100 'тоже что и MyObject.Height = 100
With .Font
.Bold = True 'тоже что и MyObject.Font.Bold = True
End With
End With
2.3.6. Функции и процедуры
2.3.6.1. Описание функций и процедур
Процедуры и функции содержат инструкции, обеспечивающие выполнение некоторой задачи. Они имеют имя, могут иметь входные параметры,
раздел описания, раздел инструкций и возвращать значения своих параметров.
Имена процедур и функций удовлетворяют правилам именования переменных.
28
Перед именем процедуры используют служебное слово Sub, а перед именем
функции – Function. Синтаксис процедуры:
[Private | Public] [Static]
Sub ИмяПроцедуры[(СписокФормальныхПараметров)]
Инструкции
End Sub
Синтаксис функции:
[Public | Private] [Static]
Function ИмяФункции([СписокФормальныхПараметров]) [As Тип]
[Инструкции]
[ИмяФункции = Выражение] ' возврат значения функции
End Function
Для прерывания процедуры используется инструкция Exit sub, функции–
Exit Function.
Таблица 2.14
Опция
Назначает область действия
Public процедура доступна для всех процедур во всех модулях приложения
Private процедура доступна для процедур только того модуля, в котором она
описана
Static локальные переменные процедуры сохраняются при вызове процедуры
Список параметров, значения которых передаются в процедуру (функцию) или возвращаются из процедуры (функции), разделяется запятыми. Синтаксис:
[Optional] [ByVal | ByRef] [ParamArray] ИмяПараметра [As тип]
[=Значение]
Таблица 2.15
Опция
Указывает
что параметр из СпискаФормальныхПараметров – необязательный.
Все параметры, следующие за необязательным, также должны быть
необязательными и описаны с помощью опции Optional. Все параOptional метры, описанные как Optional, должны иметь тип Variant.
В процедуре с необязательными параметрами можно использовать
функцию isMissing, возвращающую True, если соответствующий параметр не был передан в процедуру, и False в противном случае.
29
Окончание табл. 2.15
что параметр из СпискаФормальныхПараметров передается по
ByVal
значению.
что параметр передается по ссылке. Опция ByRef используется
ByRef
по умолчанию.
что конечный (последний) параметр - необязательный массив
ParamArray значений типа Variant. Не может использоваться с опциями
ByVal, ByRef или Optional.
тип параметра. Не допускаются строки фиксированной длины.
Тип
Если отсутствует ключевое слово Optional, могут быть также указаны определяемый пользователем тип или объектный тип Object.
константу или выражение, дающее константу, используемое по
Значение умолчанию. Задается вместе с опцией optional. Для типа Object
задается значение Nothing.
Примеры:
Function Hypotenuse(A As Integer, B As Integer) As Integer
Hypotenuse = Sqr(A ^ 2 + B ^ 2)
End Function
Sub FormsClose()
Dim i as integer
For i = Forms.Count – 1 to 0 Step - 1
Unload Forms(i)
Next
End Sub
2.3.6.2. Вызов функций и процедур
Вызов процедуры можно произвести несколькими способами.
1. ИмяПроцедуры СписокФактическихПараметров
2. Call ИмяПроцедуры (СписокФактическихПараметров)
Инструкцию Call можно также использовать для вызова функции.
Вызов функции
Х = ИмяФункции (СписокФактическихПараметров)
СписокФактическихПараметров должен соответствовать по порядку, количеству и типам параметров спискаФормальныхПараметров, заданному в
процедуре (функции) при ее определении.
Примеры:
С= Hypotenuse(A,B)
FormsClose
Если используются процедуры с одинаковыми именами из разных модулей, то надо указывать имя модуля, в котором находится процедура:
ИмяМодуля.ИмяПроцедуры СписокФактическихПараметров
30
Используя имена формальных параметров (с опцией ByVal), Visual Basic
позволяет вводить фактические параметры в любом порядке. При этом после
имени параметра ставятся двоеточие и знак равенства, после которого помещается значение параметра, например:
ИмяПроцедуры a:=l, b:=3
2.3.7. Область видимости переменной
Существуют три типа области видимости переменной.
1. Локальные переменные описываются внутри процедуры при помощи
инструкций Dim или Static и распознаются только в процедуре, в которой они
описаны.
2. Личные переменные описываются внутри модуля при помощи инструкций Dim или Private и распознаются только в модуле, в котором они описаны.
3. Открытые переменные описываются внутри модуля при помощи инструкции Public и доступны для всех процедур проекта.
Отметим, что если имя локальной переменной дублирует имя личной
или открытой переменной, то последние необходимо использовать с указанием имени модуля, либо они будут "перекрыты" локальной переменной. То же
относится и к формальным параметрам.
2.3.7.1. Время жизни переменной
Локальные переменные сохраняют свое значение, во время выполнения
процедуры и при повторном запуске процедуры "обнуляются". Локальные переменные, описанные при помощи инструкции static, сохраняют свое значение
пока работает программа.
2.3.8. Задание цвета изображения
В Visual Basic для задания цвета изображения используется шестнадцатеричные константы, обозначаемые с префиксом &Н, например,
Form1.BackColor = &HFF.
Удобно задавать цвет, используя функцию RGB.
Функция RGB позволяет получить любой цвет, смешивая красную, зеленую и синюю компоненты различной интенсивности. Синтаксис: RGB(Red,
Green, Blue), где Red, Green, Blue - целые числа от 0 до 255.
Например: RGB(0,0,0) – черный цвет, RGB(255,255,255) – белый цвет.
Form1.BackColor =RGB(255,0,0) – красный цвет.
Контрольные вопросы
Все вопросы относятся к языку программирования Visual Basic.
1. В каком диапазоне может принимать значения переменная, имеющая
тип данных Byte?
31
2. Какие значения может принимать переменная, имеющая тип данных
Boolean?
3. Какой тип данных обозначает тип Boolean
4. Для каких переменных используется тип данных Integer?
5. Для каких переменных используется тип данных Single?
6. Для каких переменных используется тип данных String?
7. Для каких переменных используется тип данных Variant?
8. С какого символа должны начинаться имена переменных?
9. Учитывается ли верхний и нижний регистр букв в именах переменных?
10. Может ли имя переменной содержать пробел?
11. Для чего используется инструкция Оption Explicit?
12. Какой инструкцией описываются локальные переменные
13. Какой инструкцией описываются личные переменные?
14. Какой инструкцией описываются открытые переменные?
15. Где описываются формальные переменные?
16. Какой оператор используется для целочисленного деления?
17. Какой оператор используется для вычисления остатка от деления?
18. Какой вид имеет оператор "НЕ равно"?
19. Какой вид имеет оператор "логического умножения" ?
20. Какой вид имеет оператор "логического сложения"?
21. Какой оператор используется для соединения строк?
22. Какой оператор имеет наиболее высокий приоритет?
23. В каких случаях истинно выражение "A And B"?
24. В каких случаях истинно выражение "A Or B"?
25. Какой вид имеет оператор "Выбора"?
26. Какой вид имеет оператор "Условного перехода"?
27. Какой вид имеют операторы "Цикла"?
28. С какого символа начинаются комментарии?
29. Какой символ используется для продолжения оператора с новой строки?
30. Какой символ используется для размещения нескольких операторов в
одной строке?
31. Какая опция используется для передачи в процедуру параметра "по
ссылке"?
32. Какая опция используется для передачи в процедуру параметра "по значению"?
2.4. Создание стандартного проекта приложения
Для запуска Microsoft Visual Basic 6.0 (файл VB6.exe) выполните команду главного меню Пуск, Программы, Microsoft Visual Basic 6.0, Microsoft
Visual Basic 6.0. При настройках по умолчанию, на экране появляется диалоговое окно New Project (Новый проект).
32
Окно New Project имеет вкладки:
 New (Новый) - содержит шаблоны и
мастера для создания нового проекта;
 Existing (Существующий) - позволяет
открыть ранее созданный проект или проектыпримеры, поставляемые с Visual Basic
 Recent (Недавно созданный) - содержит список проектов, открывавшихся в последнее время;
Рис. 2.3. Окно создания проекта
Используйте значок Standard EXE для создания стандартного проекта.
2.5. Интегрированная среда разработки приложений Visual Basic
Интегрированная среда проектирования Microsoft Visual Basic предназначена для разработки различных приложений и позволяет конструировать
интерфейс приложения, редактировать исходный код программы, компилировать и отлаживать приложения. Совокупность файлов, создаваемых в процессе
разработки приложения, принято называть проектом.
2.5.1. Компоненты рабочей среды
После выбора типа проекта открывается среда проектирования Visual
Basic.
Компоненты среды:
главное меню;
стандартная панель инструментов Standard, а также Debug, Edit, Form
Editor, Shortcut Menus;
панель элементов управления General;
окно конструктора форм Form;
окно редактора исходного кода Code;
окно просмотра объектов Object Browser;
окно свойств Properties;
окно проводника проекта Project;
окно макета формы Form Layout.
33
Рис. 2.4. Инструментальная среда проектирования Visual Basic 6.0
2.5.2. Главное меню
Главное меню среды Visual Basic 6.0 содержит пункты: File (Файл), Edit
(Правка), View (Вид), Project (Проект), Format (Формат), Debug (Отладка), Run
(Запуск), Query (Запрос), Diagram (Диаграмма), Tools (Сервис), Add-Ins
(Надстройки), Window (Окно), Help (Справка).
2.5.3. Стандартная панель инструментов
Для отображения стандартной панели инструментов на экране выберите
команду меню View, Toolbars (Вид, Панели инструментов), а затем значение
Standard (Стандартная).
Команда меню View, Toolbars позволяет также открыть панели инструментов: Debug (Отладка), Editor (Редактор), Form Edit (Редактор форм) и окно
Customize (Настройка).
На вкладке Options окна Customize параметр Show ScreenTips on
ToolBars устанавливает вывод всплывающих подсказок для кнопок стандартной панели инструментов.
Рис. 2.5. Стандартная панель инструментов
34
На стандартной панели инструментов отображены наиболее часто используемые команды меню в виде кнопок: Add Standard EXE Project (Добавить
стандартный проект), Add Form (Добавить форму), Menu Editor (Редактор меню), Open Project (Открыть проект), Save Project (Сохранить проект), Cut (Вырезать), Copy (Копировать), Paste (Вставить), Find (Найти) , Can't Undo (Отмена предыдущего),. Can't Redo (Отмена повторного), Start (Запустить), End (Закончить) , Break (Прервать), Project Explorer (Проводник проекта), Properties
Window (Окно свойств), Form Layout Window (Окно макета форм), Object
Browser (Браузер объектов), Toolbox (Панель элементов управления), Data
View Window (Окно просмотра данных), Visual Component Manager (Менеджер визуальных компонентов).
2.5.4. Окно конструктора форм
Окно конструктора форм (Form) предназначено для визуального проектирования приложения. Открыть окно можно командой меню View, Object
(Вид, Объект), либо двойным щелчком в проводнике проекта Project.
В окне конструктора форм размещаются
объекты приложения. Для точного позиционирования объектов в форме в окне имеется сетка.
Размер ячеек сетки можно менять командой меню
Tools, Options, на вкладке General. Размеры формы можно изменять мышкой, при этом автоматически меняются свойства формы Height и Width.
Рис. 2.6. Окно конструктора форм
2.5.5. Окно макета формы
Окно Form Layout (Макет формы) предназначено для расположения
формы на экране на этапе конструирования проекта. Окно Form Layout вызывается командой меню View, Form Layout Window, либо кнопкой Form Layout Window на стандартной панели инструментов. Окно можно перемещать
мышкой, при этом автоматически меняются свойства формы Left, Тор, а
свойство StartUpPosition принимает значение VbManual.
В окне макета формы показывается изображение
проектируемой формы на экране монитора после запуска проекта. Размеры формы в окне макета формы пропорциональны размерам монитора.
35
Рис. 2.7. Окно макета формы
2.5.6. Окно проводника проекта
Окно проводника проекта Project (Проект) предназначено для отображения "крупных" объектов, входящих в проект (форм, модулей), двойным
щелчком можно открыть нужное окно. Окно проводника проекта открывается
командой меню View, Project Explorer (Вид, Проводник проекта), либо
кнопкой Project Explorer на стандартной панели инструментов.
Панель управления окна проводника содержит
три кнопки:
 View code – показывает окно редактора кода
программы для выделенного в проводнике объекта;
 View Object – показывает объект в конструкторе формы;
 Toggle Folders – включает/ выключает отображение папок.
Рис. 2.8. Окно проводника проекта
2.5.7. Панель элементов управления
Панель элементов управления General открывается командой меню
View, Toolbox (Вид, Панель элементов управления), либо кнопкой Toolbox
на стандартной панели инструментов. Контекстное меню панели элементов
управления имеет команды: Components (Компоненты), Add Tab (Добавить
вкладку), Dockable (Прикрепить), Hide (Спрятать).
36
Указатель - Pointer -
- Графическое окно - PictureBox
Надпись - Label -
- Текстовое поле - TextBox
Рамка - Frame -
- Кнопка - CommandButton
Флажок - CheckBox -
- Переключатель - OptionButton
Поле со списком – ComboBox HScrollBar - горизонтальная
полоса прокрутки Timer - Таймер -
- Список - ListBox
вертикальная
полоса
прокрутки - VScrollBar
- Список дисков - DriveListBox
Список папок - DirListBox -
- Список файлов - FileListBox
Shape - Фигура -
- Линия - Line
Image - Изображение -
- Данные - Data
OLE - Объект OLE Рис. 2.9. Панель элементов управления
Чтобы поместить на панель элементов управления новые компоненты,
нужно выполнить команду меню Project, Components, затем в окне Components указать нужные компоненты (установить флажки) и нажать ОК.
Controls
Designers
Insertable Objects
(Средства управле(Проектировщики)
(Встраиваемые
ния) – основные и допол-- подключение динамиче-объекты) - компоненты
нительные компоненты. ских библиотек
программных приложений.
Рис. 2.10. Вкладки окна Components
2.5.8. Размещение элементов управления в форме
Все элементы управления формы образуют семейство Controls.
37
Для размещения элемента управления в форме, в рамке, на вкладке выполните следующие действия:
1. Кликните мышкой на элементе управления в панели элементов управления
2. В окне конструктора форм установите указатель мыши на местоположение размещаемого объекта. Нажмите левую кнопку мыши и, удерживая
кнопку, переместите указатель до требуемого размера объекта.
Для размещения (по умолчанию) элемента управления в активной форме
выполните двойной щелчок мышкой на элементе управления в панели элементов управления.
После размещения элементов управления в форме для выравнивания
группы объектов, а также для установки размеров используются команды меню Format и свойства категории Position окна Properties. По умолчанию размеры объектов измеряются в твипах (свойство формы ScaleMode) - 1440
твипов =1 дюйму=2,54см.
Рис. 2.11. Форма с элементами управления
Для одновременной работы с несколькими объектами их необходимо
выделить. Выделение объектов производится нажатием кнопки мыши при
нажатой клавише Shift, а также рисованием рамки с помощью указателя – элемента на панели элементов управления General. Выделение объектов, команды
выравнивания, установки размеров, интервалов и центрирования, относятся к
объектам, расположенным на одном общем объекте-собственнике. Команды
меню Format выравнивают и устанавливают размеры выделенных объектов, по
границе и размерам последнего выделенного объекта группы.
2.5.8.1. Команды меню Format
Align (Выровнять) – содержит команды выравнивания выделенных
объектов
38
Make Same Size (Установить одинаковый размер) – содержит команды
управления размерами выделенных объектов
Horizontal Spacing (Горизонтальный интервал) - Устанавливает между
выделенными объектами интервал в горизонтальном направлении
Vertical Spacing (Вертикальный интервал) - Устанавливает между выделенными объектами интервал в вертикальном направлении
Center in Form (Центрирование в форме) - Центрирует объекты в форме.
Order (Порядок) - помещает объект в нижний или верхний слой объекта-собственника
Lock Сontrols (Закрепить объект) - Фиксирует положение объектов в
форме.
2.5.9. Окно свойств
Окно Properties (Свойства) предназначено для отображения и настройки свойств активного объекта (формы, элементов управления). В нижней части
окна выводится подсказка, поясняющая назначение выбранного свойства объекта.
Окно Properties вызывается командой меню View,
Properties Window (Вид, Окно свойств), либо кнопкой
Properties Window на стандартной панели инструментов. Свойства объекта можно упорядочить в алфавитном
порядке на вкладке Alphabetic (По алфавиту) или по
группам на вкладке Categorized (По категориям).
В окне Properties можно вводить, либо выбирать
из списков значения свойств объектов.
Рис. 2.12. Окно свойств
Геометрические свойства объекта можно также задать перемещением
объекта и изменением его размеров с помощью мыши в конструкторе форм.
Если выделить сразу несколько объектов, то в окне свойств можно ввести общие для этих объектов свойства.
Свойства можно изменять также при выполнении приложения, написав
соответствующие коды в процедурах.
2.5.10. Основные свойства элементов управления
Приведем некоторые общие свойства элементов управления. Все свойства логического типа, возвращающие или устанавливающие режимы работы
элементов управления имеют значение True, либо False.
Таблица 2.16
39
Свойство
Name
Caption,
либо Text
Возвращает или устанавливает
имя объекта
надпись, отображаемую в элементе управления, либо
текст, содержащийся в поле элемента управления
характеристики шрифта текста (наименование, размер,
Font
начертание, цвет и т.п.)
вид формы в период выполнения кода – плоский (Flat), лиAppearance
бо объемный (3D)
Visible
режим визуализации объекта при выполнении программы
Enabled
режим доступа к объекту при выполнении программы.
Height и Width
геометрические размеры объекта (высоту и ширину).
координаты левого верхнего угла объекта, в области форLeft и Тор
мы.
ToolTipText
текст в окне всплывающей подсказки
вид указателя мыши, когда он находится над объектом:
MousePointer
(VbDefault, VbCross, VbHourglass, VbArrowQuestion и др.)
Picture
растровое изображение, отображаемое в объекте
Некоторые особенные свойства элементов управления.
Таблица 2.17
Элемент
управления
Label
Свойства
AutoSize
WordWrap
MultiLine
TextBox
PasswordChar
Locked
Style
CommandButton
DownPicture
Cancel
Default
Возвращает или устанавливает
режим автоматического изменения размеров
надписи в соответствии с размерами текста
режим автоматического переноса текста
режим многострочного ввода данных в текстовое поле
символ, отображаемый при вводе текста.
режим блокировки ввода данных
вид кнопки – стандартный (Standard), либо графический (Graphical)
изображение, отображаемое при нажатой кнопке
действие клавиши Esc при установке True
действие клавиши Enter при установке True
40
Окончание табл. 2.17
ComboBox
Style
Style
ListCount
TopIndex
NewIndex
ListBox
Text
MultiSelect
Selected
ComboBox
и
ListBox
List
ListIndex
Sorted
Value
HScrollBar
и
VScrollBar
SmallChange
и
LargeChange
Max и Min
Style
Option-Button
Value
Style
CheckBox
Value
Picture
AutoSize
Image
Image
Stretch
вид списка – раскрывающийся (DropDown
Combo), простой (Simple Combo), раскрывающийся блокированный (DropDown List)
вид списка – стандартный (Standard), либо с
флажками (CheckBox)
число элементов списка.
номер элемента списка, отображаемого в
верхней позиции
номер последнего элемента, занесенного в список.
выбранный в списке элемент.
способ выделения элементов списка: None или
0 - одного; Simple или 1 - нескольких (мышкой, либо клавишей Пробел); Extended или 2 нескольких (с клавишами Shift и Ctrl) .
режим выделения элемента списка. Применяется, когда свойство MultiSelect равно 1 или 2
элемент списка Синтаксис: List(номер элемента)
номер текущего элемента списка. Нумерация
начинается с нуля. Если список пуст, то -1
режим автоматической сортировки строк
текущее значение полосы прокрутки (целое >
0)
шаг изменения значения свойства Value при
щелчке на стрелке и на поле полосы прокрутки
минимальное и максимальное значение полосы прокрутки
вид переключателя – стандартный (Standard),
либо графический (Graphical)
режим переключателя – включен, либо выключен
вид флажка – стандартный (Standard), либо
графический (Graphical)
значение флажка – включен (Checked), выключен (UnChecked), затененный (Grayed)
режим автоматического изменения размеров
элемента в соответствии с размерами рисунка
изображение, содержащееся в свойстве Picture
режим автоматического масштабирования рисунка в соответствии с размерами элемента
41
Установим некоторые свойства элементов управления на форме. Общее
начало пути к графическим файлам: C:\Program Files\Microsoft Visual
Studio\Common\ Graphics\, окончание указывается для каждого конкретного
случая.
Таблица 2.18
Элемент
Свойство
Значение
Label
Caption
Text
MultiLine
Style
Picture
Style
Style
Sorted
Надпись
Текстовое поле
True (увеличьте высоту элемента)
Graphical
...\Bitmaps\OffCtlBr\Small\Color\Open.bmp
Simple Combo
CheckBox, свойство MultiSelect - None
True
Строки: строка4, строка3, строка2, строка1
TextBox
CommandButton
ComboBox
ListBox
ComboBox и
ListBox
List
HScrollBar
и
VScrollBar
LargeChange
SmallChange
Max
Min
Caption
OptionButon
Style
Value
Caption
CheckBox
Picture
Image
Style
Value
AutoSize
Picture
Stretch
Picture
1
1
3
0
Picture1 - для Option1,
Image1 - для Option2,
Picture1 и Image1 - для Option3
Standard
True для третьего переключателя
опция Picture1 - для Check1,
опция Image1 - для Check2,
опция Picture1 и Image1 - для Check3
Standard
Checked (для всех)
False
\Metafile\Business\ Quarter.wmf
True
\Metafile\Business\ Dollar.wmf
После установки некоторых свойств элементов управления на форме и
запуска программы на выполнение приложение будет иметь вид (рис. 2.13).
42
Рис. 2.13. Окно программы
2.5.11. Редактор исходного кода программы
2.5.11.1. Окно редактора
Редактор кода Code (Код) – встроенный редактор исходного кода программы.
Окно редактора кода открывается командой меню View, Code (Вид,
Код), либо двойным щелчком на объекте или форме в окне конструктора формы.
Object
Procedure
Раскрывающиеся списки Object и Procedure позволяют выбрать для объекта процедурусобытие, в которой программируется обработчик события.
Рис. 2.14. Окно редактора кода
В левой нижней части окна расположены кнопки режимов редактирования: Procedure View (код процедуры) и Full Modul View (код всего модуля).
2.5.11.2. Настройки редактора
Редактирование исходного кода программы выполняется в окне редактора кода (Code). Для написания кода обработки события объекта выберите в
окне редактора кода в списке Object – имя объекта, а в списке Procedure имя
процедуры. Каждый объект имеет свою процедуру-событие "по умолчанию",
вызываемую двойным щелчком мыши на объекте в окне конструктора формы.
43
Для набора текста на русском языке на вкладке Editor Format установите шрифт (Font): Courier New Cyr.
Некоторые настройки редактора позволяют упростить написание кода
программы и облегчают поиск синтаксических ошибок.
Выделение красным цветом строки кода с синтаксической ошибкой производится в редакторе кода автоматически.
Таблица 2.19
Параметры Code Settings
Auto Syntax Check (Автоматический контроль синтаксиса)
Require Variable Declaration
(Требование объявления переменных)
Auto List Members (Автоматический вывод списка
свойств и методов)
Auto Quick Info (Автоматический вывод синтаксиса
функций)
Auto Data Tips (Автоматическое отображение значений)
Назначение параметров
установки редактора кода
автоматический контроль синтаксиса при
вводе исходного кода приложения в редакторе
обязательное объявление типов всех переменных, используемых в программе
автоматическое отображение в позиции курсора свойств и методов объекта при вводе
текста программы
разрешение или запрет вывода информации
о функциях и их параметрах при вводе текста программы
при отладке приложения отображает значение переменной, находящейся под указателем мыши
Auto Indent (Автоматический автоматический отступ при нажатии Enter
отступ)
для перехода на новую строку текста программы
44
Рис. 2.15. Окно параметров Options
Рис. 2.16. Меню свойств и методов
Окно параметров вызывается командой
меню Tools, Options.
На вкладке Editor – устанавливаются
параметры настройки редактора кода.
Установлен флажок Auto List Members
- выводится список со свойствами и методами объекта.
Команда с клавиатуры - Ctrl+J
Рис. 2.17. Окно сообщения об ошибке
Рис. 2.18. Всплывающая подсказка
Установлен флажок Auto Syntax
Check– выводится окно диалога с комментарием синтаксической ошибки законченной строки кода.
Установлен флажок Auto Quick Info –
выводится строка подсказки синтаксиса
процедур и функций.
Команда с клавиатуры - Ctrl+I
Для вызова подсказки используются команды меню Edit и контекстного
меню.
- список со свойствами объекта
- список констант
- строка подсказки синтаксиса процедуры
- строка подсказки параметров процедуры
- список возможных слов по первым буквам
Рис. 2.19. Команды для вызова подсказки
45
2.5.12. Основные события и методы элементов управления
Приведем некоторые общие события элементов управления
Таблица 2.20
Событие
Происходит
Click, DblClick
при щелчке и двойном щелчке на объекте
MouseDown,
MouseUp
при нажатии и отпускании кнопки мыши
KeyPress
после ввода символа на клавиатуре
Key Down, KeyUp
Change
при нажатии и отпускании клавиши на клавиатуре
при изменении данных (значений) объекта
Методами называются процедуры, позволяющие преобразовать объект
при выполнении программы.
Таблица 2.21
Метод
Clear
Позволяет
удалить все элементы из списка – очистить список
удалить элементы с указанным номером из списка
RemoveItem
Синтаксис: RemoveItem(номер удаляемого элемента)
добавить элемент в список
AddItem
Синтаксис: Addltem(элемент списка, номер элемента)
Move
переместить элемент управления
SetFocus
установить фокус на вызвавшем этот метод элементе управления
Zorder
расположить объект над или под другими объектами
Пример программного кода, реализующего работу элементов управления (рис.2.13).
Использование флажка для управления доступом к переключателю,
например:
Private Sub Check1_Click()
Option1.Enabled = Check1.Value
End Sub
Использование переключателя для управления изображениями,
например:
Private Sub Option1_Click()
Picture1.Visible = True
Image1.Visible = False
End Sub
46
Использование полосы прокрутки для управления текущей строкой в
списке, например:
Private Sub HScroll1_Change()
Combo1.ListIndex = HScroll1.Value
Combo1.SetFocus
End Sub
Установка обратной связи между полосой прокрутки и текущей строкой
в списке, например:
Private Sub Combo1_Click()
HScroll1.Value = Combo1.ListIndex
End Sub
Установим полосы прокрутки в исходном положении при загрузке формы:
Private Sub Form_Load()
Show
Call HScroll1_Change ' вызов события для полосы прокрутки
Call VScroll1_Change
End Sub
Использование кнопки для закрытия формы:
Private Sub Command1_Click()
Unload Me
End Sub
Событие HScroll1_Scroll происходит при перемещении ползунка, что
позволяет использовать его для немедленного реагирования на перемещение
ползунка, например
Private Sub HScroll1_Scroll()
Call HScroll1_Change
End Sub
2.5.13. Сохранение и выполнение проекта
Завершив этап программирования можно сохранить проект на диске командой меню Save Project (Сохранить проект), либо нажав кнопку Save
Project на стандартной панели инструментов. При сохранении проекта Visual
Basic создает несколько файлов с именами по умолчанию, например: для формы – Form1.frm, для проекта – Project1.vbp и возможно другие, поэтому при
сохранении каждого проекта необходимо создавать отдельные папки.
Команда меню File, Make Project позволяет создавать исполнимый файл
проекта – приложение, который Вы можете также сохранить в папке проекта.
Запустить проект на выполнение можно командой меню Run, Start , либо нажав кнопку Start на стандартной панели инструментов, либо клавишей
F5.
Закончить выполнение проекта можно: закрыв приложение, либо коман47
дой меню Run, End, либо нажав кнопку End на стандартной панели инструментов. Если нет другой возможности прервать выполнение проекта нажмите
комбинацию клавиш Ctrl+Break.
2.6. Форма
Форма представляет собой окно приложения, в котором можно размещать различные элементы управления. В приложении может быть как одна,
так и несколько форм. Новая форма добавляется в проект выбором команды
Project, Add Form.
2.6.1. Семейство форм
Семейство Forms является коллекцией, элементы которой представляют все загруженные формы в приложении. У семейства Forms имеются свойства Count (число форм в семействе) и item (номер формы), а также метод
Add (добавляет к семейству новую форму).
2.6.2. Основные свойства формы
Многие свойства формы задаются на этапе конструирования. Некоторые
свойства, например, размеры и расположение формы, можно задать с помощью мыши в окне макета и окне конструктора формы. Большинство свойств
формы, установленных по умолчанию, можно изменить, используя диалоговое
окно Properties. Значения свойств могут задаваться константами, числами, а
также ссылками на файлы. Причем, изменение значений некоторых свойств
формы проявляется только после запуске проекта на выполнение.
Рис. 2.20. Свойства формы
2.6.2.1. Свойства оформления формы
В группе Appearance (Оформление) окна Properties содержатся свойства объекта, которые задают атрибуты его внешнего вида.
48
Таблица 2.22
Свойство
Appearance
Caption
BorderStyle
BackColor,
ForeColor
Picture
Возвращает или устанавливает
вид формы при выполнении кода: 0 - плоский; 1- объемный
текст, отображаемый в строке заголовка формы
тип границы формы (в режиме конструктора).
0 – vbBSNone; 1 – vbFixedSingle; 2 – vbSizable;
3 – VbFixedDialog; 4 – vbFixedToolwindow;
5 – VbSizableToolwindow
цвет фона и текста формы. В окне свойств могут задаваться
числами или константами Windows, преобразуются в шестнадцатеричные числа
фон
формы,
программируется
функцией
LoadPicture("ИмяФайла")
2.6.2.2. Свойства позиционирования формы
Группа Position (Расположение) окна Properties служит для установки
размеров и положения формы на экране.
Таблица 2.23
Свойство
StartUpPosition
Height,
Width
Left, Тор
Moveable
Возвращает или устанавливает
положение формы после запуска приложения.
Допустимые значения:
0 – VbManual – положение формы задано при конструировании;
1 – VbCenterOwner;
2- VbCenterScreen; 3 – VbWindowDefault
высота и ширина формы, включая толщину границ и высоту заголовка формы. Единицы измерения – Twips (твипы).
В 1 дюйме 1440 твипов
координаты на экране левого верхнего угла формы
значение True – пользователь может передвигать окно приложения
2.6.2.3. Общие свойства формы
Свойства группы Misc (Общие) задают общие атрибуты формы.
49
Таблица 2.24
Свойство
Name
MaxButton,
MinButton
ControlBox
Возвращает или устанавливает
имя формы.
значение True при наличии в форме кнопок «Развернуть» и
«Свернуть», соответственно.
значение True при наличии в форме системного меню.
состояние формы после запуска приложения. Допустимые значения: 0 - VbNormal – обычное;
WindowState
1 – VbMinimized – свернутое;
2 – VbMaximized – развернутое.
Icon
значок приложения, программируется функцией
значение True, если форма получает сообщение о событиях
KeyPreview
нажатия клавиш.
форму указателя мыши. Допустимые значения:
0 - VbDefault - по умолчанию,
MousePointer
1 - VbArrow, 2 - VbCrosshair, и т.д. до 15.
99 – VbCustom - Значок, указанный в свойстве MouseIcon.
MouseIcon
форму указателя мыши в случае MousePointer=VbCustom
ShowInTasbar значение True - окно приложения выводится на панели задач.
2.6.2.4. Свойства поведения формы
Приведем некоторые свойства формы из группы Behavior (Поведение)
окна Properties.
Таблица 2.25
Свойство
Возвращает или устанавливает
признак перерисовки графики и текста на поверхности формы,
AutoRedraw
(например, после сворачивания)
Enabled
признак доступа к форме и объектам на ней;
Visible
признак видимости объекта
2.6.2.5. Свойство шрифт формы
Свойство шрифт (группа Font) позволяет, при выводе символов на поверхность формы, устанавливать атрибуты шрифта – наименование (Name),
размер (Size), начертание (Bold, Italic, UnderLine).
Пример задания свойств формы.
1. Caption – Форма-Окно приложения.
Icon - файл ...\Icons\Misc\Face02.ico.
2. BackColor - ToolTip,
3. ForeColor - &HFF или красный цвет из палитры.
4. BorderStyle – vbSizable
50
5. Font: - MS Sans Serif, размер – 18 , начертание – полужирный курсив
6. Picture - файл ...\Bitmaps\Gauge\Vert.bmp.
7.
Рис. 2.21. Свойства формы
2.6.2.6. Слои формы
Форма имеет три слоя: фон формы (для фона с рисунком используйте
свойство Picture), слой для вывода изображения или текста (используйте методы Print и PaintPicture, например, Print "Второй слой формы") и слой для
размещения элементов управления, причем последние могут налагаться друг
на друга.
2.6.3. Основные методы и события формы
2.6.3.1. Методы формы
Таблица 2.26
Метод
Show
Hide
Move
Cls
Print
Действие
Отображает форму на экране
Закрывает форму
Изменяет местоположение и размер формы
Очищает форму, закрашивая ее цветом фона.
Отображает в форме строку текста. Синтаксис: Print "Строка"
2.6.3.2. Графические методы формы
В дополнение к рассмотренным методам формы – Сls и Print изучим методы рисования во втором слое формы.
Метод PaintPicture - выводит изображение в определенной области формы. Синтаксис:
PaintPicture picture, xl, yl, widthl, heightl, tbx2, y2, width2, height2, opcode
51
где Picture – объект-источник графического изображения;
xl, yl - координаты левого верхнего угла, где будет располагаться рисунок;
widthl, heightl - ширина и высота рисунка;
х2, у2 и width2, height2 - координаты левого верхнего угла, ширина и высота части источника графического изображения, заданного параметром Picture
(эти параметры не используются при выводе всего изображения);
opcode - тип побитового смешивания при наложении изображений.
Метод Pset - рисует точку заданного цвета. Синтаксис:
PSet [Step] (x, у), [color]
где (х, у) - координаты точки в заданной системе координат формы,
step – ключевое слово, определяющее параметры х, у как приращения относительно текущей точки
color - цвет точки; если этот параметр опущен, то цвет - ForeColor.
Метод DrawWidth – задает толщину рисования в пикселах.
Форма имеет также методы рисования окружности, дуги или эллипса заданного цвета – Circle, а также линии или прямоугольника заданного цвета –
Line.
Пример рисования и стирания "по точкам".
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _ x As Single,
y As Single)
If Button = vbLeftButton Then PSet (x, y), vbRed
If Button = vbRightButton Then PSet (x, y), Me.BackColor
End Sub
2.6.3.3. События формы
Таблица 2.27
Событие
Происходит
Initialize
при инициализации формы, но до ее загрузки.
Load
после инициализации формы, но до ее отображения
на экран.
перед закрытием формы. Возвращает параметр
Unload
Canсel для подтверждения закрытия формы. По
умолчаниию Canсel=0 - закрыть;
QueryUnload
перед событием Unload, для подтверждения закрытия формы.
Terminate
при закрытии формы.
Click, DblClick
при щелчке и двойном щелчке в форме.
MouseDown, MouseUp
при нажатии и отпускании кнопки мыши.
KeyPress
после ввода символа на клавиатуре
Key Down, KeyUp
при нажатии и отпускании клавиши на клавиатуре.
Activate, Deactivate
при активизации и деактивизации формы.
Resize
при изменении размеров формы.
GotFocus, LostFocus
при получении и потере фокуса
52
События
Form_Activate,
Form_Deactivate,
Form_LostFocus
и
Form_GotFocus происходят при перемещении между окнами одного приложения. При перемещении между окнами разных приложений эти события не
происходят. Если на форме есть другие объекты, способные получать фокус
(кнопки, списки, поля ввода и т.п.), то события Form_GotFocus не происходит,
а фокус получает один из этих объектов.
Напомним, что окно редактора кода Code открывается командой меню
View, Code, либо двойным щелчком на элементе управления или на форме. В
последнем случае, в окне редактора кода готов шаблон процедуры обработки
события "по умолчанию". Пример.
Private Sub Form_Initialize()
AutoRedraw = True
KeyPreview = True
Picture=LoadPicture("C:\Program Files\Microsoft Visual Studio\" _
& "Common\Graphics\Bitmaps\Gauge\Circlock.bmp")
PaintPicture Me.Picture, Width / 20, Height / 20, 2000, 2000
End Sub
Рис. 2.22. Редактор кода
Рис. 2.23. Рисование на форме
2.6.4. Обработка событий мыши
Процедуры событий Click, DblClick не имеют параметров, а процедуры
событий MouseDown, MouseMove и MouseUp имеют параметры Button и
Shift.
Таблица 2.28
Параметр
Button
Возвращает
целое число, обозначающее нажатую кнопку мыши. Допустимые значения:
1 - VbLeftButton - левая кнопка;
2 - VbRightButton - правая кнопка;
4 - VbMiddleButton - средняя кнопка (не работает).
53
Shift
XиY
Окончание табл. 2.28
целое число, обозначающее нажатую клавишу клавиатуры. Допустимые значения:
1 - VbShiftMask - клавиша Shift;
2 - VbCtrlMask - клавиша Ctrl;
4 - VbAltMask - клавиша Alt.
положение указателя мыши в координатах формы.
Событие нажатие кнопки мышки MouseDown возникает сразу после
нажатия на кнопку мыши, когда указатель находиться на объекте. Пример обработчика события.
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As
Single, Y As Single)
If Button = VbLeftButton Then
MousePointer = VbCustom 'указатель мыши по выбору
Mouselcon = LoadPicture("...\Cursors\pencil.cur")
End If
End Sub
Событие перемещение указателя мышки MouseMove возникает, когда
указатель перемещается над объектом, при этом кнопка мыши необязательно
должна быть нажата. Пример.
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _ X As
Single,Y As Single)
If Button = VbLeftButton Then ' нажата левая кнопка мыши
PSet(X, Y) 'ставим точку
End If
End Sub
Событие отпускание кнопки мышки MouseUp возникает сразу после
отжатия кнопки мыши, когда указатель находиться на объекте. Пример.
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If Button = VbLeftButton Then
MousePointer = VbDefault 'указатель мыши по умолчанию
End If
If Button = vbRightButton Then Cls
End Sub
При написании кода обработки событий необходимо учитывать следующее.
При щелчке кнопки мыши происходит три события в следующей последовательности: MouseDown, MouseUp, Click.
При двойном щелчке кнопки мыши происходит пять событий в следующей последовательности: MouseDown, MouseUp, Click, DblClick, MouseUp.
54
Событие DblClick "два в одном" происходит после второго щелчка левой
кнопки мыши, когда указатель находится на объекте. Например, событие первый щелчок выделяет строку и делает ее текущей в списке List1, второй позволяет выполнить код события – DblClick.
Private Sub List1_DblClick()
List2.AddItem List1.Text 'добавить строку в список List2
List1.RemoveItem List1.ListIndex 'удалить строку из списка List1
end Sub
2.6.5. Обработка событий клавиатуры
Каждая клавиша на клавиатуре имеет свой код сканирования (не путать
с кодом символа, хотя некоторые значения совпадают), которому Visual Basic
ставит в соответствие свои константы.
2.6.5.1. Коды клавиш
Констатнта
Код
VbKeyBack
8
vbKeyTab
VbKeyReturn
9
13
VbKeyShift
VbKeyControl
VbKeyEscape
VbKeySpace
vbKeyDelete
vbKeyA-VbKeyZ
16
17
27
32
46
65 90
Клавиша
BackSpace
Tab
Enter
Констатнта
vbKeyFl - vbKeyF12
vbKeyPageUp
VbKeyPageDown
Shift
Ctrl
Esc
Пробел
Delete
А-Z
VbKeyEnd
VbKeyHome
VbKeyLeft
VbKeyUp
VbKeyRight
VbKeyDown
Таблица 2.29
Код
Клавиша
112 F1 - F12
123
33
PageUp
34
PageDo
wn
35
End
36
Home
37
влево
38
вверх
39
вправо
40
вниз
Объекты, допускающие ввод с клавиатуры имеют события KeyPress,
KeyDown и KeyUp. При помощи логического свойства KeyPreview можно
управлять порядком, в котором Windows обрабатывает эти события: по умолчанию сначала события клавиатуры формы, а потом элементов управления
(значение свойства формы KeyPreview = True), или наоборот,
KeyPreview=False.
Событие ввод символа KeyPress возникает после ввода символов. Процедура события KeyPress имеет параметр KeyAscii - код символа: буквы,
цифры, знаки на стандартной клавиатуре, а также клавиш Enter, Esc, Tab,
BackSpace и Space.
55
Событие нажатие клавиши KeyDown возникает сразу после опускания
клавиши. Событие отпускания клавиши KeyUp возникает сразу после подъема
клавиши.
Процедуры событий KeyDown и KeyUp имеют параметры:
Keycode – код клавиши (не зависит от регистра).
Shift – числовой параметр, соответствующий нажатой клавише:
1 - VbShiftMask - клавиша Shift,
2 - VbCtrlMask - клавиша Ctrl,
4 - VbAltMask - клавиша Alt.
Пример.
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Print "
- код клавиши: " & Str(KeyCode)
Print "------------------------------------------"
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 13
Print "Enter - код символа: " & Str(KeyAscii)
Case 27
Print "Esc - код символа: " & Str(KeyAscii)
Case 32
Print "Space - код символа: " & Str(KeyAscii)
Case Else
Print Chr(KeyAscii) & " - код символа: " & Str(KeyAscii)
End Select
End Sub
Результат выполнения обработчиков событий Form_KeyUp
Form_KeyPress
Рис. 2.24. Коды символов и клавиш
56
и
2.6.7. Единицы измерения размеров
Основной единицей измерения размеров является твип (twip).
В 1 дюйме 1440 твипов, а в 1 см - 567 твипов.
В Visual Basic в качестве единиц измерения используются также пункты
(в одном дюйме 72 пункта) и пиксели (наименьшая единица измерения разрешения монитора или принтера). Единица измерения размеров устанавливаются в свойстве ScaleMode.
VbUser или 0 – определенная пользователем единица измерения;
VbTwips или 1 – твипы; используется по умолчанию;
VbPoints или 2 – пункты;
VbPixels или 3 – пиксели;
VbCharacters или 4 – символы;
VbInches или 5 – дюймы;
VbMillimeters или 6 – миллиметры;
VbCentimeters или 7 – сантиметры.
2.6.8. Инструкции начала и завершения работы с формой
Таблица 2.30
Load
Unload
End
Загружает форму или элемент управления в память
Синтаксис: Load object
Выгружает форму или элемент управления из памяти
Синтаксис: Unload object
Завершает программу без генерации событий Unload, QueryUnload, Terminate
2.6.9. Соглашения об именах объектов
При создании формы или элемента управления, Visual Basic устанавливает свойство объекта Name (т. е. его имя) по умолчанию. Например, для первой созданной кнопки свойство Name устанавливается равным command1, для
второй - command2 и т. д. При разработке приложений с одной формой имя
объекта, устанавливаемое по умолчанию, обычно не вызывает никаких проблем и в этом случае имена объектов можно оставить без изменения. Если
приложение обладает сложной структурой и состоит из нескольких форм, то в
этом случае бывает полезным переименовать объекты так, чтобы они различались. Для переименования объектов и переменных существует соглашение
об именах, называемое венгерской нотацией. Суть соглашения состоит в следующем: имя объекта начинается с короткого префикса для объектов одного и того же класса. За префиксом следует собственно имя, отображающее
суть объекта. В таблице приведены префиксы и примеры имен для управляющих элементов.
57
2.6.9.1. Префиксы имен объектов
Объект
TextBox
Label
CommandButton
ListBox
ComboBox
HScrollBar
VScrollBar
OptionButton
CheckBox
Timer
Префикс
Txt
Lbl
Cmd
Lst
Cbo
Hsb
Vsb
Opt
Chk
Tmr
Объект
Frame
Image
PictureBox
Line
Shape
FileListBox
DirListBox
DriveListBox
Data
Form
Таблица 2.31
Префикс
Fra
Img
Pic
Lin
Shp
Fil
Dir
Drv
Dat
Frm
2.7. Компоненты навигации файловой системы
Visual Basic имеет готовые компоненты для работы с файловой системой, представляющие собой списки, содержащие некоторые заданные свойства (например, стиль списка, номер текущего элемента), методы заполнения
и отображения списков и даже обработчики событий, например двойной щелчок в списке каталогов.
2.7.1. DriveListBox (Список дисков)
DriveListBox отображает список всех доступных дисков. Список дисков
используется обычно с двумя другими элементами управления – списками каталогов и файлов для выбора конкретного файла. Основным свойством списка
диска является свойство Drive, которое возвращает или устанавливает текущий диск. В событии Change, происходящем при смене диска, предписывается обновить список каталогов.
2.7.2. DirListBox (Список каталогов)
DirListBox отображает структуру каталогов текущего диска. Основным
свойством списка каталогов является свойство Path, которое возвращает или
устанавливает путь к открытому каталогу. В событии Change, происходящем
при открытии каталога, предписывается обновить список файлов.
Рис. 2.25. Списки дисков, каталогов и файлов
58
2.7.3. FileListBox (Список файлов)
FileListBox отображает список файлов указанного каталога. Перечислим свойства, дополняющие свойства элемента ListBox.
Таблица 2.32
Свойство
Path
Patern
FileName
Возвращает или устанавливает
путь к каталогу, файлы которого отображаются
маску для выбора файлов. Например: "*.bmp; *.gif"
имя выбранного файла
Для данных компонентов часто используется метод установки фокуса –
SetFocus, а также метод обновления содержимого списка – Refresh, который
необходимо использовать при изменении содержимого списка программным
методом.
2.7.3.1. Работа со списками
Приведем примеры копирования и удаления элементов списка. Пусть на
форме расположены компоненты: DriveListBox, DirListBox, FileListBox,
FileListBox, ComboBox, а также несколько кнопок.
Dir1
Drive1
List1
File1
Combo1
Рис. 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
59
Обработчик события 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()
60
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.
61
Рис. 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 задают вид отображаемого окна,
например:
Вид окна
Открытие файла
(Open)
Сохранение файла
(Save)
Цвет (Color)
Метод
Вид окна
Выбор шрифта
(Font)
ShowOpen
Таблица 2.33
Метод
ShowFont
ShowSave
Печать (Print)
ShowPrint
ShowColor
Справка (Help)
ShowHelp
Все окна имеют свойство CancelError, позволяющего при установке значения True перехватить и обработать ошибку с кодом cdlCancel (если пользователь нажмет кнопку Cancel окна диалога), а также свойство Flags - настройки, задаваемые суммой констант.
62
Рис. 2.28. Окна открытия файла и выбора шрифта
Приведем назначение некоторых свойств и констант окна открытия файла.
Таблица 2.34
Свойство
FileName
Filter
Filterlndex
InitDir
Возвращает или устанавливает
имя открываемого файла
фильтр отображаемых файлов. Синтаксис:
Filter = Описание1 | Маска1 | Описание2 |Маска2 и т.п. Например:
Filter = "Текстовые файлы (*.txt) | *.txt | " _
& "Графические файлы (*.bmp, *.gif). | *.bmp, *.gif"
текущий номер маски из фильтра. Нумерация с 1.
текущую директорию при открытии окна диалога
Таблица 2.35
Константы Flags
Устанавливает для окна Open
cdlOFNFileMustExist возможность ввода имен только существующих файлов
cdlOFNExplorer
стиль проводника Windows
В следующем проекте-примере будет использоваться элемент управления Timer (Таймер). В событии Timer пишется программный код, который выполняется через промежутки времени, заданные в свойстве таймера Interval.
Это свойство задает интервал времени в миллисекундах. Таймер включается
после определения его свойства Enabled=True. Таймер не отображается в окне
во время выполнения программы.
Пример. Разместим на форме компоненты: Image1, Picture1, CommonDialog1 и Timer1. Для Image1 и Picture1 в конструкторе зададим свойство Picture
(рис. 2.29).
63
Picture1
Image1
CommonDialog1
Timer1
Рис. 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
dio\Common\Graphics\"
CmnDlg.Filter="Графические файлы(*.gif;*.wmf) | *.gif;*.wmf"
CmdFileName = FCmdFileName(CmnDlg)
If CmdFileName <> Empty Then
Pict.Picture = LoadPicture(CmdFileName)
End If
64
Stu-
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
2.8. Встроенные диалоговые окна
В Visual Basic используются встроенные диалоговые окна: окно ввода InputBox имеет поле для ввода информации, а окно сообщений - MsgBox выводит сообщения для пользователя.
2.8.1. Окно ввода - функция InputBox
Функция InputBox выводит на экран диалоговое окно, содержащее сообщение и поле ввода.
Рис. 2.30. Окно ввода - функция InputBox
65
Функция InputBox при нажатии кнопки ОК возвращает строку введенную пользователем в поле ввода, при нажатии кнопки Cancel возвращает пустую строку.
Упрощенный синтаксис функции:
InputBox(Prompt [, Title] [, Default])
где
Prompt – приглашение, отображаемое в диалоговом окне. Может содержать несколько строк. Для разделения строк используются символы chr(13)
и chr(10)
Title - заголовок, отображаемый в строке заголовка диалогового окна.
Если этот параметр опущен, то в строку заголовка помещается имя приложения;
Default – строка по умолчанию, возвращаемая функцией, если пользователь не введет другую строку.
Prompt, Title, Default –параметры типа String.
2.8.2. Окно сообщений - функция MsgBox
Функция MsgBox выводит на экран диалоговое окно, содержащее сообщение. При закрытии окна функция возвращает значение типа Integer, указывающее, какая кнопка была нажата, например, vbOK, vbCancel, vbAbort,
vbYes, vbNo.
Рис. 2.31. Окно сообщений - функция MsgBox
Упрощенный синтаксис функции:
MsgBox(Prompt [, Buttons] [, Title])
где
Prompt – приглашение, отображаемое в диалоговом окне.
Buttons - числовое выражение, представляющее сумму константатрибутов, которые указывают тип отображаемых кнопок, тип используемого
значка, основную кнопку, модальность окна и др. Значение по умолчанию параметра Buttons равно нулю.
Title - заголовок, отображаемый в строке заголовка окна.
66
Prompt, Title – параметры типа String, Buttons – константа.
2.8.2.1. Константы параметра Buttons
Параметр Buttons задается в виде суммы констант:
Константа1+ Константа2 +Константа3+ДопКонстанты
Константа3 указывает какая кнопка будет иметь фокус:
VbDefaultButtonl = 0 - первая, 256 - вторая, 512 - третья, 768 – четвертая.
Таблица 2.36
Константа1
VbOKOnly
VbOKCancel
VbAbortRetrylgnore
VbYesNoCancel
VbYesNo
VbRetryCancel
Значение
0
1
2
3
4
5
Константа2
VbCritical
VbQuestion
VbExclamation
VbInformation
Значение
16
32
48
64
Отметим следующие значения констант ДопКонстанты:
VbSystemModal - делает окно модальным для операционной системы,
VbMsgBoxSetForeground - делает окно фоновым.
Пример использования функции MsgBox для подтверждения закрытия
формы.
Private Sub Form_QueryUnload(Cancel As Integer,UnloadMode As Integer)
If MsgBox("Закончить?",vbQuestion+vbYesNo, Me.Caption)=vbNo _
Then Cancel=True
End Sub
2.8.3. Применение функций InputBox и MsgBox в проекте
Приведем пример использования окон диалога.
Будем изменять цвет формы, задавая константы цветов в окне ввода InputBox. Удобно задавать цвет, используя функцию RGB.
Функция RGB позволяет получить любой цвет, смешивая красную, зеленую и синюю компоненты различной интенсивности.
Синтаксис: RGB(Red, Green, Blue)
где Red, Green, Blue – целые числа от 0 до 255:
Red – интенсивность красного;
Green – интенсивность зеленого;
67
Blue –интенсивность синего.
Расположим на форме элемент управления согласно рис. 2.32.
Рис. 2.32. Изменение цвета формы
Пример программного кода для изменения цвета формы.
Private Sub Command1_Click()
Dim btRed As Byte, btGreen As Byte, btBlue As Byte
' код для красного
On Error Resume Next
btRed=CByte(InputBox("Введите интенсивность красного – число от 0 до
255", _
"Ввод цвета формы", "255"))
If Err.Number <> 0 Then
MsgBox "Принято 255", vbCritical Or vbOKOnly, "Ошибка ввода красного"
btRed = 255
End If
Err.Clear
' аналогичный код для зеленого
' аналогичный код для синего
Caption = "красного:" & btRed & " зеленого:" & btGreen & " синего:" &
btBlue
BackColor = RGB(btRed, btGreen, btBlue)
End Sub
2.9. Создание графического интерфейса приложения
При создании графического интерфейса приложения возможно использование следующих компонентов: StatusBar, Toolbar и ImageList.
2.9.1. Основное меню
Меню создается и редактируется при помощи Menu Editor (Редактор
меню). Для создания меню надо сделать форму активной и выбрать команду
68
меню Tools, Menu Editor или нажать кнопку Menu Editor на панели инструментов. В результате на экране отобразится диалоговое окно Menu Editor
(рис. 2.33).
Рис. 2.33. Редактор меню
По своей структуре меню состоит из заголовков меню верхнего и нижних уровней (до пяти уровней) и команд меню:
заголовки меню верхнего уровня располагаются в крайней левой позиции;
команды меню смещаются вправо на одну позицию от их заголовка
меню.
Элементы меню имеют набор свойств, например:
Caption – название пункта меню;
Name – имя пункта меню;
Index – номер элемента массива команд меню.
Shortcut – комбинация клавиш для быстрого вызова команды меню с
клавиатуры;
поле HelpContextID для создания идентификатора контекстнозависимой справки;
флажок Checked для создания маркированных пунктов меню;
флажок Enabled для блокировки пунктов меню;
флажок Visible для визуализации пунктов меню;
флажок WindowList, используемый при создании меню MDI-форм;
Пункт меню, свойство caption которого равно дефису (-), отображается
как разделитель. Разделитель служит для визуальной группировки пунктов
меню.
В имени пунктов меню допустимо использовать амперсанд (&) перед
69
буквой, которая будет Alt - буквой для доступа к этому пункту меню с клавиатуры.
2.9.2. Контекстное меню
Контекстное меню содержит команды, доступные для объекта в момент
нажатия правой кнопки мыши. Создается контекстное меню в редакторе меню, в виде заголовка верхнего уровня, например mnuСontext и команд меню.
Чтобы команды контекстного меню не появлялись - в основном меню установите его свойство Visible=False. Для отображения контекстного меню в событии object_MouseUp используется метод popupMenu. Синтаксис:
object.PopupMenu mnuСontext, flags, x, у, boldcommand
Таблица 2.37
Параметр
object
mnuСontext
Flags
Описание
Если параметр опущен, то подразумевается текущая форма
Имя меню, отображаемое как контекстное
Определяет местоположение и поведение контекстного меню.
Значение параметра Flags = 0 - контекстное меню отображается при щелчке левой кнопкой мыши, координата х определяет левый край контекстного меню. Подробнее см. справку
по Visual Basic
x, у
Координаты окна, в котором отображается контекстное меню. Если эти параметры опущены, то используются текущие
координаты указателя мыши
boldcommand Имя команды контекстного меню, выделенное полужирным
шрифтом
2.9.3. Список изображений
Для размещения изображений на кнопках панели инструментов предназначен компонент ImageList (Список изображений). Чтобы добавить компонент на панель инструментов General выполните команду меню Project, Components, вкладка Controls и выберите Microsoft Windows Common Controls
6.0.
Компонент ImageList может хранить как растровые изображения, так и
значки. Ссылка на конкретное хранящееся изображение осуществляется либо
при помощи индекса, либо при помощи свойства Key.
Наполнение объекта ImageList рисунками можно делать на этапе конструирования, выбрав его свойство Custom. В появившемся диалоговом окне
Property Pages на вкладке Images (рис. 2.34), нажимайте InsertPicture и выбирайте файлы рисунков.
70
Рис. 2.34. Свойства компонента ImageList
2.9.4. Панель инструментов
Панели инструментов содержат кнопки для выполнения команд, и как
правило, дублируют наиболее часто используемые команды меню. Панель
инструментов создается при помощи двух элементов управления: Toolbar и
ImageList.
Объект Toolbar (Панель инструментов) обычно размещается в верхней
части формы – свойство Align =VbAlignTop и наполняется кнопками (коллекция Buttons), свойство Style, которых может иметь значение:
tbrDefauit – обычная кнопка, используется по умолчанию;
tbrСheck – кнопка-флажок;
tbrButtonGroup – кнопка принадлежит к группе;
tbrSeparator – кнопка-разделитель, шириной 8 пикселей;
tbrPlaceHolder – кнопка-разделитель с переменной шириной;
tbrDropdown – кнопка с раскрывающимся списком.
Кроме того кнопки имеют свойства:
Key – имя кнопки,
Value – состояние кнопки,
Index – номер кнопки на панели Toolbar,
Image – номер рисунка (Index)или его имя (Key) из списка изображений ImageList.
Наполнение объекта Toolbar кнопками можно делать на этапе конструирования, выбрав его свойство Custom. В появившемся диалоговом окне
Property Pages на вкладке General (рис. 2.35), выберите имя объекта-источника
ImageList.
На вкладке Buttons нажмите InsertButton для добавления новой кнопки и
введите значение в поле Image в соответствие с номером изображения в объекте ImageList
71
Рис. 2.35. Свойства компонента Toolbar
2.9.5. Строка состояния
StatusBar (Строка состояния) представляет собой строку, как правило,
располагаемую в нижней части формы, в которую выводится текущее состояние приложения. Строка состояния может быть разделена на несколько частей
(панелей), каждая из которых может содержать текст или рисунок.
Таблица 2.38
Свойство
Panels
Style
SimpleText
Возвращает или устанавливает
семейство панелей
стиль: sbrNormal или 0 – отображаются все панели;
sbrSimple или 1 – отображается только наибольшая панель
текст, отображаемый в панели, если свойство Style = sbrSimple
Семейство Panels имеет свойства item, count и методы Add и Remove,
общие для всех семейств, а также специфичные.
72
Таблица 2.39
Свойство
style
Bevel
Alignment
AutoSize
width
Возвращает или устанавливает
стиль отображаемой в панели информации. Допустимые
значения:
sbrText или 0 – отображает текст или растровое изображение;
sbrCaps или 1 – отображает режим Caps Lock надписью
CAPS;
sbrNum или 2 – отображает режим Num Lock надписью
NUM;
sbrIns или 3 – отображает режим lnsert надписью INS;
sbrScrl или 4 – отображает режим Scroll Lock надписью
SCRL;
sbrTime или 5 – отображает текущее время;
sbrDate или 6 – отображает текущую дату
вид панели: sbrNoBevel или 0 – стандартная панель; sbrlnset
или 1 – вдавленная панель; sbrRaised или 2 – выпуклая панель
выравнивание текста: sbrLeft или 0 – по левому краю;
sbrCenter или 1 – по центру; sbrRight или 2 – по правому
краю
ширину панели после изменения размеров формы. Допустимые значения:
sbrNoAutoSize или 0 – ширина панелей не изменяется;
sbrSpring или 1 – ширина панелей изменяется пропорционально исходным;
sbrContents или 2 – ширина панелей изменяется так, чтобы
помещалась надпись
ширину панели
Наполнение объекта StatusBar можно делать на этапе конструирования,
выбрав его свойство Custom. В появившемся диалоговом окне Property Pages
на вкладке General (рис. 2.36), выберите стиль строки состояния sbrNormal
или sbrSimple.
На вкладке Panels нажмите InsertPanel для добавления новой панели,
выберите значение в поле Style и в др. полях.
73
Рис. 2.36. Свойства компонента StatusBar
2.9.6. Обработка событий панели инструментов
Чтобы получить заготовку для набора кода, выполните двойной щелчок
на панели инструментов. Если кнопки панели инструментов дублируют команды меню, то необходимо связать соответствующие события, например:
Private
Sub
ToolBar1_ButtonClick(ByVal
Button
As
_
MSComctlLib.Button)
On Error Resume Next
Select Case Button.Key
Case "New": mnuFNew_Click
Case "Open": mnuFOpen_Click
Case "Save": mnuFSave_Click
End Select
End Sub
2.9.7. Обработка событий меню
Все пункты и команды меню имеют одно событие – Click. Чтобы получить заготовку для набора кода – щелкните по команде меню. Некоторые
пункты меню могут иметь свойство Checked (рис. 2.37), в этом случае, в событии Click необходимо программно изменять значение свойства на противоположное, например:
Private Sub mnuVSBar_Click()
mnuVSBar.Checked = Not mnuVSBar.Checked
End Sub
Private Sub mnuVTbar_Click()
mnuVTbar.Checked = Not mnuVTbar.Checked
End Sub
74
ImageList1
Рис. 2.37. Команды меню с флажками
2.10. Массивы объектов
Массивом объектов называется совокупность однотипных объектов с
одинаковыми именами. Для создания массива объектов на этапе конструирования необходимо:
1. Создать на объекте-контейнере, например, на Frame1 первый объект, и
задать ему имя, например, Option1
2. Скопировать объект в буфер обмена (нажмите Ctrl+C)
3. Выделить объект-контейнер, на котором будут размещаться объекты, в
данном случае – Frame1
4. Вставить объект из буфера обмена (нажмите Ctrl+V) и подтвердить в
окне диалога Visual Basic создание массива.
5. Повторить п.3, п. 4 для вставки необходимого количество объектов.
Рис. 2.38. Создание массива объектов
Можно создать массив из объектов уже размещенных в контейнере. Для
этого в окне свойств задайте свойству Name объектов одно и то же значение,
например Option1. После ввода имени для второго объекта, появится окно
диалога Visual Basic, в котором следует выбрать "Да" для создания массива.
Массив объектов создается, как правило, для написания более простого
и краткого программного кода. В программном коде, при обращении к объекту массива указывается его индекс: ИмяОбъекта(Индекс), например
Option1(5).
75
2.11. Создание группы переключателей
Группа переключателей – два и более переключателей – OptionButton,
свойство Value которых, взаимозависимо. В группе переключателей нельзя
выбрать (установить для свойства Value значение True) более одного переключателя.
Для создания группы переключателей используются объектыконтейнеры, например, форма - Form, рамка - Frame (чаще всего) и графическое поле - Picture. Рамка позволяет объединить переключатели в группу не
только логически, но и визуально. Отметим, что переключатели в группе совсем необязательно должны быть массивом объектов.
2.11.1. Порядок размещения переключателей в рамках
Если рамка группирует переключатели, то сначала создается объект –
рамка, а затем на нем размещаются переключатели.
Если рамка не группирует переключатели, то сначала на каком-либо
контейнере размещаются переключатели (при этом создается группа), далее
поверх них размещается рамка (которая объединяет переключатели лишь визуально) и затем в контекстном меню рамки выбирается команда: Send to
Back.
Используя для выделенной группы переключателей приемы вырезания
(Ctrl+Х) и вставки (Ctrl+V), можно переносить их с одного объектаконтейнера на другой.
2.12. Несколько форм в проекте
2.12.1. Шаблоны форм диалога
Шаблоны форм можно использовать при создании проектов в среде проектирования Visual Basic в качестве вспомогательных окон диалога, временно
появляющиеся на экране с какими-либо сообщениями для пользователя. Как
правило такие окна бывают модальными (VbModal), т.е. "прекращающими"
работу пользователя с другими окнами приложения, пока пользователь не закроет модальное окно.
В Visual Basic имеются шаблоны форм диалога, например:
Dialog – простой диалог
About Dialog – о программе
Log in Dialog – диалог регистрации
2.12.2. Создание и вывод на экран окна диалога
Для создания окна диалога можно воспользоваться одним из шаблонов
форм, представляемых Visual Basic. Выполните команду меню Project, Add
Form, в окне Add Form выберите нужную форму. В окне Project появятся
новые формы проекта.
76
Рис. 2.39. Создание окон диалога
Чтобы открыть форму в конструкторе форм необходимо в окне Project
выполнить двойной щелчок на названии формы.
Для вывода на экран окна диалога используется метод Show:
ИмяФормы.Show [style] [,ownerform]
где
style – стиль формы: VbModal – модальная, VbModaless – не модальная (по
умолчанию)
ownerform – собственник формы, часто используется ключевое слово Me,
обозначающее форму, в модуле которой был вызван метод, например:
frmDialog.Show vbModal, Me
Создание формы диалога из шаблона Form
Свою форму диалога можно создать из шаблона Form, установив необходимые свойства формы и разместив на ней нужные компоненты. В данном случае
форма будет предназначена для просмотра видео-клипов. Для этого добавьте на
панель General компонент Microsoft Windows Common Controls 2-6.0.
Добавьте в стандартный проект форму
Form и установите свойства формы:
Name=FrmMyDialog,
BackColor=ToolTip, BorderStyle=VbFixedDialog.
Добавьте на форму кнопки CmdYes (Да)
со свойством Default=True и CmdNo
(Нет) со свойством Cancel=True.
Добавьте на форму компоненты
CommonDialog и Animation.
Для компонента Animation установите
свойство Center=True.
Рис. 2.40. Форма с компонентом Animation
77
Для вывода формы необходимо в модуле главной формы проекта,
например в событии Click кнопки Command1 набрать код:
Private Sub Command1_Click()
FrmMyDialog.Show vbModal, Me
End Sub
В модуле формы FrmMyDialog наберите код:
Private Sub Form_Load()
CommonDialog1.InitDir="C:\Program Files\Microsoft Visual Studio" _
&"\Common\Graphics\Avis\"
End Sub
Private Sub CmdNo_Click()
Animation1.Stop
Animation1.Close
CommonDialog1.InitDir = CurDir
Unload Me
End Sub
Private Sub CmdYes_Click()
On Error GoTo MtkErr
CommonDialog1.Flags = cdlOFNFileMustExist
CommonDialog1.Filter = "аудио-видио файлы (*.avi)|*.avi"
CommonDialog1.ShowOpen
If CommonDialog1.FileName = Empty Then Exit Sub
Animation1.Open CommonDialog1.FileName
Animation1.Play
Exit Sub
MtkErr:
MsgBox "Ошибка: " & Err.Description,vbCritical,"CommonDialogError"
End Sub
Шаблон формы Dialog
Форма Dialog используется для вывода сообщений и запросов, например, на продолжение работы приложения. Свойство формы BorderStyle имеет
значение VbFixedDialog. На форме расположены кнопки OKButton, свойство
Default=True и CancelButton, свойство Cancel=True.
Добавьте в форму Dialog элемент управления Label с надписью " Закрыть приложение?", как показано на рис. 2.41. Чтобы узнать, какая кнопка
была нажата пользователем, введем открытую переменную BlnDlgRet логического типа.
78
Рис. 2.41. Форма Dialog
В модуле формы Dialog наберите код обработки событий
Public BlnDlgRet As Boolean 'переменная, возвращающая результат (да, нет)
Private Sub CancelButton_Click()
BlnDlgRet = False
Unload Me
End Sub
Private Sub OKButton_Click()
BlnDlgRet = True
Unload Me
End Sub
Форму Dialog можно использовать в модуле главной формы проекта,
например, в событии QueryUnload для подтверждения закрытия формы:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dialog.Show vbModal, Me
If Dialog.BlnDlgRet = True Then Cancel = False
End Sub
Шаблон формы About Dialog
Форма About Dialog содержит информацию о приложении и ее разработчике.
Свойство
формы
BorderStyle=VbFixedDialog. На форме
расположена кнопка cmdOK со свойствами Default=True и Cancel=True, а также
кнопка cmdSysInfo.
Модуль формы About Dialog содержит обработчики событий, позволяющие:
считать из реестра путь к файлу
msinfo32.exe (информация о системе), открыть файл, вывести надписи при загрузке
формы, выгрузить форму.
Рис. 2.42. Форма About Dialog
79
При загрузке формы используется следующий код
Private Sub Form_Load()
Me.Caption = "About " & App.Title 'Название приложения
lblVersion.Caption= "Version " & App.Major & "." & App.Minor _
& "." & App.Revision
lblTitle.Caption = App.Title
End Sub
Рис.2. 43. Информация о системе (файл msinfo32.exe)
Шаблон формы Log in Dialog
Форма Log in Dialog предназначена для регистрации пользователя.
Свойство
формы
BorderStyle=VbFixedDialog.
На форме расположены надписи,
кнопка cmdOK со свойством Default=True,
кнопка cmdCancel со свойством Cancel=True,
а также текстовое поле txtUserName и поле
txtPassword со свойством PasswordChar="*".
Рис. 2.44. Форма Log in Dialog
Модуль формы Log in Dialog содержит обработчики событий кнопок и
открытую переменную LoginSucceeded со значением True, если пароль введен
верно, иначе – False. При закрытии формы используется метод Hide, не выгружающий ее из оперативной памяти. Пример:
Public LoginSucceeded As Boolean 'открытая переменная
Событие кнопки "Cancel"
80
Private Sub cmdCancel_Click()
LoginSucceeded = False
Me.Hide
'введенный пароль не стирается
End Sub
Событие кнопки "OK"
Private Sub cmdOK_Click()
If txtPassword = "psw" Then
LoginSucceeded = True
Me.Hide
'введенный пароль не стирается
Else
MsgBox "Invalid Password, try again!", , "Login"
txtPassword.SetFocus
SendKeys "{Home}+{End}" 'выделить текст
End If
End Sub
Общий модуль проекта
Процедуры, используемые в различных модулях проекта и не являющиеся методами какой либо формы проекта, размещаются в отдельном модуле
проекта. Для добавления в проект модуля без формы выполните команду меню
Project, Add Module. В окне Add Module выберите значок Module. Имя модуля
можно изменить в окне свойств. Приведем пример использования модуля.
Установить шрифт по умолчанию для объекта.
Public Sub GetFontDefault(obj As Object)
With obj.Font
.Name = "MS Sans Serif"
.Size = 8
.Bold = False
.Italic = False
.Strikethrough = False
.Underline = False
End With
obj.ForeColor = vbButtonText
End Sub
Установить шрифт, выбранный в общем диалоге, для объекта.
Public Sub GetFontCmnDlg(obj As Object, CmnDlg As CommonDialog)
With obj.Font
.Name = CmnDlg.FontName
.Size = CmnDlg.FontSize
81
.Bold = CmnDlg.FontBold
.Italic = CmnDlg.FontItalic
.Strikethrough = CmnDlg.FontStrikethru
.Underline = CmnDlg.FontUnderline
End With
obj.ForeColor = CmnDlg.Color
End Sub
Рис. 2.45. Выбор атрибутов шрифта, в общем диалоге (CommonDialog)
Пример использования процедур модуля Module1 для присвоения цвета
метке Label1. Установки флага – доступны экранные и принтерные шрифты и
эффекты (Видоизменение).
Private Sub CmdModal_Click()
Call Module1.GetFontDefault(Label1)
.CancelError = True
On Error GoTo MtkErr
CommonDialog1.Flags=cdlCFBoth + cdlCFEffects
CommonDialog1.FontName = Label1.Font.Name
CommonDialog1.ShowFont
Call Module1.GetFontCmnDlg(Label1, CommonDialog1)
Exit Sub
MtkErr:
If Err.Number <> cdlCancel Then
MsgBox "Ошибка: " & Err.Description,vbCritical Or vbOKOnly, _
"CommonDialogError"
82
End If
End Sub
Контрольные вопросы
Все вопросы относятся к языку программирования Visual Basic
1. Какое расширение имеет файл проекта?
2. Как называется кнопка для отображения панели General?
3. Как называется кнопка для отображения свойств выбранного объекта?
4. Какая команда меню для отображения окна с дополнительными компонентами?
5. Какая команда меню Format предназначена для блокирования объектов
на форме?
6. Какой элемент управления используется для создания надписи?
7. Какой элемент управления используется для ввода данных?
8. Какой элемент управления используется для переключателя?
9. Какой элемент управления используется для флажка?
10. Какой элемент управления объединяются в группы?
11. Какой элемент управления используется для отображения списка дисков?
12. Какой элемент управления используется для отображения списка папок?
13. Какой элемент управления используется для отображения списка файлов?
14. Какое свойство элемента управления FileListBox задает маску для выбора файлов?
15. Какой метод элемента управления FileListBox, используется для обновления списка?
16. На какие компоненты можно вывести графические изображения?
17. Какие компоненты можно вывести данные методом Print?
18. Для чего предназначено свойство Font?
19. Для чего предназначено свойство ToolTipText?
20. В каком свойстве элемента управления ComboBox содержатся данные?
21. В каком свойстве элемента управления ListBox содержится текущий
номер элемента списка?
22. В каком свойстве элемента управления ListBox содержится текущее
значение?
23. Какое свойство позволяет скрыть заголовок формы?
24. Какое свойство позволяет автоматически развернуть форму на весь
экран сразу после запуска проекта?
25. Какое свойство позволяет задавать положение формы на экране сразу
после запуска проекта?
26. Какое свойство позволяет форме получать сообщение о событиях нажатия клавиш?
83
27. Какое событие происходит дважды при двойном щелчке на форме?
28. Нажатие каких клавиши может вызвать в форме событие KeyPress?
29. Нажатие каких клавиши может вызвать в форме событие KeyDown?
30. Что возвращает функция InputBox при нажатии кнопки ОК в окне диалога?
31. Что возвращает функция InputBox при нажатии кнопки Cancel в окне
диалога?
32. Для чего предназначена функция MsgBox Visual Basic?
33. Что возвращает функция MsgBox Visual Basic при нажатии кнопок в
окне диалога?
34. Что возвращает окно "Открытие файла" компонента CommonDialog при
нажатии кнопки "Отрыть"?
35. Для чего предназначена функция "Me"?
2.13. Новая версия - Visual Basic.Net
Новизна. В отличие от предыдущей версии Visual Basic 6.0, компоненты которой представляли собой элементы ActiveX, что не позволяло использовать наследование классов при динамическом создании объектов, новая
версия Visual Basic.Net базируется на полностью объектно-ориентированном
программировании. Особенностью новой технология является ее объектная
ориентация, основанная на FrameWorkClass Library (.Net FrameWork) – библиотеки классов. Классы в .Net FrameWork имеют иерархическую структуру.
В системах с .Net FrameWork вместо API функций используются объекты (экземпляры классов).
Microsoft Visual C++ использует для создания классов Microsoft Foundation Class Library (MFC).
Следует отметить полную интеграцию языка VB.net с остальными языками программирования, созданными Microsoft и объединенными в общий
пакет Visual Studio.net. Используя инструмент Web Forms Designer, входящий
в состав Visual Basic.Net 2003, разработчики смогут применить приобретенные навыки для создания web-приложений. Инструменты для создания webформ позволят расширить возможности создания сценариев средствами
Visual Basic.Net.
Совместимость. VB.net может считывать все компоненты старых программ и переводить их в новый формат VB.net для использования их в операционных системах Windows.
Отличия. Несколько иначе выглядит (но вполне узнаваема) среда программирования, изменились некоторые типы данных, формальные параметры
в процедуры теперь по умолчанию передаются по значению, а не по ссылке,
как это было в предыдущих версиях Visual Basic.
Перспективы. В связи с созданием корпорацией Microsoft и активным
продвижением на рынок программных сред на платформе программирования
.Net, а также ограниченными возможностями Visual Basic 6.0 для создания
профессиональных приложений в среде Windows, начинающим программи84
стам рекомендую начинать с изучения Visual Basic.Net, а в дальнейшем освоить и более "крутые" средства, например, Visual С++.
Платформы Microsoft.NET разрабатывались для того, чтобы вытеснить
СОМ (Component Object Model). Однако это случится не скоро, поскольку тысячи объектов построены по технологии СОМ, все версии Microsoft Office
(включая ХР) основаны на технологии СОМ.
85
ГЛОССАРИЙ
Алгоритм – это последовательности операций, описывающих процесс
решения задачи.
Блок-схема - графическая запись алгоритма.
Группа переключателей – два и более переключателей, значение
свойства Value которых, взаимозависимо.
Инкапсуляция – способность класса содержать в себе свойства, методы
и события.
Интегрированная среда разработки – IDE (Integrated Development
Environment) – визуальная среда разработки, включающая конструктор форм,
редактор программного кода, отладчик и другие средства разработки прилоджений.
Интерпретатор – программа, которая считывает исходный код по операторам, сразу транслирует их выполняет. Таким образом, в результате работы
интерпретатора исполняемый файл не формируется.
Исполняемый файл – программа, готовая к запуску на компьютере
(обычно файл с расширением .exe).
Исходный код – текст программы на языке программирования.
Класс – специальный тип данных, содержащий набор свойств, методов и
событий, в отличие от обычного типа данных, определяющего только внутреннее представление значений переменных.
Компилятор – программа, которая считывает исходный код, проверяет
его синтаксис, преобразует в машинный код (транслирует) и устанавливает
связи с используемыми подпрограммами (компилирует). В результате работы
компилятора получается исполняемый файл – приложение.
Конкатенация – операция соединения строк.
Массив объектов – совокупность однотипных объектов с одинаковыми
именами.
Наследование – создание новых классов на основе имеющихся.
Объектно-ориентированное программирование (ООП) – стиль программирования, основанный на использовании классов.
Объектный код – программа в машинных кодах. Для получения объектного кода используются компиляторы и интерпретаторы.
Полиморфизм – способность классов иметь методы с одинаковым
названием, но с различной программной реализацией.
Программа (исходный код) - набор пошаговых команд, написанных на
языке программирования, соответствующих алгоритму решения задачи и реализуемых микропроцессором.
Программирование – процесс, включающий стадии проектирования,
кодирования, отладки, тестирования и документирования программы.
Проект – совокупность файлов, создаваемых в процессе разработки
приложения.
Язык программирования – язык, используемый для написания компью86
терных программ и состоящий из словаря и совокупности правил (синтаксиса),
которые применяются при написании команд, выполняемых микропроцессором.
СПИСОК ЛИТЕРАТУРЫ
1. Ананьев А.И., Федоров А.Ф. Самоучитель Visual Basic. – СПб.: БХВ Санкт-Петербург, 2001. – 624 с.
2. Гарнаев А.Ю. Visual Basic 6.0: Разработка приложений. – СПб.: БХВ Санкт-Петербург, 2000. – 448с.
3. Браун С. Visual Basic 6.0: Учебный курс. – СПб.: Питер, 2002. – 576 с.
87
Сидоров Михаил Евгеньевич
ИНФОРМАТИКА
Часть 2
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ
В СРЕДЕ VISUAL BASIC
Учебное пособие
Технический редактор: Р.С. Юмагулова
Подписано к печати 22.12.06. Формат 60х84 1/16.
Бумага газетная. Гарнитура «Таймс».
Усл. печ. л. 5,12. Уч.-изд. л. 5,75. Тираж 100 экз.
Цена свободная. Заказ № 202.
Отпечатано с готовых авторских оригиналов
на ризографе издательского отдела
Уфимской государственной академии экономики и сервиса
450078, г. Уфа, ул. Чернышевского,145; тел. (347) 278-69-85.
88
Download