ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОУ ВПО УФИМСКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ ЭКОНОМИКИ И СЕРВИСА Кафедра информатики СИДОРОВ М.Е. ИНФОРМАТИКА Часть 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