ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf ·...

148
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ КЫРГЫЗСКОЙ РЕСПУБЛИКИ КЫРГЫЗСКО-РОССИЙСКИЙ СЛАВЯНСКИЙ УНИВЕРСИТЕТ Кафедра информационных вычислительных технологий Т .Г . Турчанова, И.В. Хмелёва ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6.0 Учебное пособие Бишкек 2010

Transcript of ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf ·...

Page 1: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ КЫРГЫЗСКОЙ РЕСПУБЛИКИ

КЫРГЫЗСКО-РОССИЙСКИЙ СЛАВЯНСКИЙ УНИВЕРСИТЕТ Кафедра информационных вычислительных технологий

Т.Г. Турчанова, И.В. Хмелёва

ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6.0

Учебное пособие

Бишкек 2010

Page 2: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

УДК 004.438 (075.8)ББК 32.973-01

Т 89

Рецензенты: д-р техн. наук, профессор У.Н. Бримкулов,д-р техн. наук, профессор В.Ф. Бабак,

д-р физ.-мат. наук, профессор Г.А. Десятков

Рекомендовано к изданию Ученым советом КРСУ (пр. №6 от 26 января 2010 г.)

Допущено Министерством образования и науки Кыргызской Республики в качестве учебного пособия

для студентов высших учебных заведений (пр. №176/1 от 19 апреля 2010 г.)

Турчанова Т.Г., Хмелёва И.В. Т 89 ПРОГРАММИРОВАНИЕ НА VISUAL BASIC 6.0: Учебное по-

собие. – Бишкек: Изд-во КРСУ, 2010. – 148 с.

ISBN 978-9967-05-686-2

Рассматриваются теоретический курс по программированию на языке Visual Basic 6.0 и практические задания с подробным описани-ем шагов разработки приложений в визуальной среде программиро-вания. В приложении приведены варианты заданий для самостоятель-ной работы.

Пособие ориентировано на студентов заочников по специально-сти ПОВТиАС, а также студентов других технических специально-стей.

Т 2404090000-10 УДК 004.438 (075.8) ББК 32.973-01ISBN 978-9967-05-686-2 © КРСУ, 2010

Page 3: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

3

СОДЕРЖАНИЕ

Предисловие ..................................................................................................5Введение .........................................................................................................61. Среда разработки и основные элементы управления .............................7

1.1. Описание среды разработки в Visual Basic .....................................71.2. Форма ...............................................................................................241.3. Элементы управления .....................................................................311.4. Pointer ...............................................................................................311.5. Элементы управления PictureBox, Image ......................................311.6. Элемент управления Label (Надпись) ...........................................321.7. Элемент управления TextBox (Текстовое поле) ...........................341.8. Элемент управления CommanDButton (Кнопка) ..........................351.9.Элемент управления ScrollBar (Полосы прокрутки) ....................361.10. Элемент управления Frame (Рамка) .............................................371.11. Элемент управления CheckBox (Флажок) ...................................381.12. Элемент управления OptionButton (Переключатель) .................391.13. Лабораторные работы для раздела 1 ...........................................39

2. Основы программирования на Visual Basic ...........................................502.1.Переменные ......................................................................................502.2. Оператор присвоения. Выражения и операции ............................532.3. Диалоговые окна .............................................................................592.4. Операторы передачи управления ...................................................642.5. Циклы ..............................................................................................692.6. Работа с мышью – события и процедуры их обработки ..............712.7. Событие клавиатуры и процедуры их обработки ........................742.8. Лабораторные задания для раздела 2 ............................................76

3. Организация данных в Visual Basic ........................................................823.1. Массивы ...........................................................................................82

Page 4: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

4

3.2. Использование графики ..................................................................863.3. Управляющий элемент FlexGrid (Сетка) .......................................913.4. Элемент управления ListBox (Список) .........................................953.5. Элемент управления ComboBox (Поле со списком) ....................973.6. Элемент управления Таймер ..........................................................993.7. Лабораторные работы для раздела 3 ...........................................101

4. Разработка MDI-приложений. Работа с файлами. Работа с базами данных .............................................................................106

4.1. Создание MDI-приложений ..........................................................1064.2. Работа с файлами ...........................................................................1104.3. Работа с базами данных в Vusual Basic .......................................1164.4. Лабораторные работы для раздела 4 ...........................................119

Литература ..................................................................................................123Приложение 1. Варианты заданий для лабораторной работы 2.1 .........124Приложение 2. Варианты заданий для лабораторной работы 2.2 .........127Приложение 3. Варианты заданий для лабораторной работы 3.1 .........131Приложение 4. Варианты заданий для лабораторной работы 3.2 .........135Приложение 5. Варианты заданий для лабораторной работы 3.4 .........138Приложение 6. Варианты заданий для лабораторной работы 4.1 .........142Приложение 7. Варианты заданий для лабораторной работы 4.2 .........144

Page 5: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

5

ПРЕДИСЛОВИЕ

Цель данной книги ознакомить читателя с основными принци-пами работы и разработки программных приложений в среде Visual Basic 6.0. Книга рассчитана на студентов заочной формы обучения, но будет полезна и всем тем, кто решил начать самостоятельное из-учение языка. Учебное пособие начинается со знакомства читателя с визуальной средой разработки приложений, элементами окна среды Visual Basic 6.0 и элементами управления.

Книга разбита на четыре раздела, в конце каждого раздела при-ведены лабораторные задания, выполнение которых поможет лучше усвоить материал пособия. Для лучшего усвоения и понимания основ-ных приемов программирования в среде Visual Basic 6.0, лабораторные задания в конце первого раздела приведены с подробным описанием шагов выполнения заданий. После изучения первого раздела читатель ознакомится со средой разработки Visual Basic 6.0 и основными эле-ментами управления, научится разрабатывать интерфейс пользовате-ля и обрабатывать элементарные ошибки ввода данных.

Во втором разделе речь пойдет об основных элементах языка программирования Visual Basic – переменные, типы данных и о кон-струкциях языка – переходы, циклы.

В третьем разделе читатель научится работать со списками и об-рабатывать события, связанные с клавиатурой и мышью.

В четвертом разделе представлена информация по работе с фай-лами и базами данных. Знания, полученные после изучения данной книги, помогут в освоении других дисциплин, например программи-рованние баз данных в среде Acsses.

Учебное пособие написано с использованием опыта работы, на-копленного авторами в процессе преподавания дисциплины, как для студентов, обучаемых по специальности программирование, так и для других технических специальностей.

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

Авторы выражают благодарность к.т.н., доценту кафедры ИВТ Е.З. Гаврилец, за помощь в разработке плана лекций и лабораторных заданий.

Page 6: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

6

ВВЕДЕНИЕ

Многие считают, что слово Basic в названии делает этот язык не-достойным для изучения и применения, поскольку вспоминают кры-латое выражение конца 70-х годов: «Basic – это язак для домохозяек». Но они забывают, что такое «прозвище» он получил в первую очередь за свою простоту.

В настоящее время само название этой среды разработки при-ложений охватывает целое направление. Сейчас программы больше не пишут – нет больше программирования в прежнем смысле этого слова. Приложения проектируются. Собственно и программистов го-раздо уместнее было бы назвать инженерами проектировщиками про-граммных средств. Они являются скорее художниками творцами, чем странными чудаками.

Название Visual Basic говорит само за себя. Если вы уже работали с другими, традиционными системами программирования, то вскоре убедитесь, что Visual Basic представляет совершенно другой стиль программирования. Уже по слову «Visual» можно догадаться, что в Visual Basic реализован визуальный стиль программирования. И вы даже не программируете, а проектируете приложение.

Среда Visual Basic в наши дни стала одним из самых простых и в то же время мощных языков программирования. Она прекрасно подходит для разработки приложений практически любого типа, где можно создавать мощные автономные приложения, игры и служебные утилиты, затратив на это меньше времени, чем для любого другого языка программирования. Технология ActiveX позволяет писать при-ложения с поддержкой Internet, возможности которых неограничены. В сочетании с Windows API Visual Basic превращается в серьезный инструмент, подходящий почти для любых проектов.

При работе в Visual Basic необходимо освоить среду разработки. Эта среда содержит много интегрированных инструментов, упроща-ющих процесс разработки приложений. В совокупности эти инстру-менты образуют интегрированную среду разработки.

После изучения этого пособия студент освоит среду визуального программирования, получит навыки в использовании основных ее ин-струментов и основные приемы разработки программных приложений.

Page 7: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

7

1. СРЕДА РАЗРАБОТКИ И ОСНОВНЫЕ ЭЛЕМЕНТЫ УПРАВЛЕНИЯ

1.1. Описание среды разработки в Visual BasicVisual Basic является визуально-событийным языком програм-

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

При разработке приложений на языке Visual Basic выделяются следующие этапы:

Подготовка интерфейса пользователя (сколько будет окон, какого размера они будут, каково будет их положение на экране, какие ме-ню и какие элементы понадобятся (кнопки, поля ввода, списки), достаточно ли стандартных элементов или часть из них придется дорабатывать).Определение событий, которые будут обрабатываться элементами интерфейса (на одинарный щелчок реагировать, а на двойной нет).Разработка программных кодов (процедур, для обработки опреде- ленных в п.2 событий).В Visual Basic любой проект состоит из следующих файлов:файл формы (расширение frm). Это обычный ASCII текстовый файл, в котором записан весь код, помещённый в форму, а также свойства всех помещённых на форму элементов управления и са-мой формы тоже;файл формы, содержащий бинарную информацию (например, кар- тинку в PictureBox) (расширение frx);файл проекта, содержащий информацию о проекте (расширение vbp);информация о рабочей области проекта (workspace) (расширение vbw).При запуске Visual Basic 6 (рис. 1.1) на экране появляется диа-

логовое окно New Project (Новый проект), используя которое можно выбрать шаблон для нового проекта, запустить мастера создания про-

Page 8: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

8

екта или открыть ранее созданный проект. Это окно содержит три вкладки следующего назначения:

New (Новый) – содержит шаблоны и мастера для создания ново-го проекта.

Existing (Существующий) – позволяет открыть ранее созданный проект или проекты-примеры, поставляемые с Visual Basic 6. Вкладка имеет раскрывающийся список, с помощью которого можно выбрать любую папку на имеющихся ресурсах компьютера.

Recent (Недавно созданный) – содержит список проектов, откры-вавшихся в последнее время.

Для создания нового проекта используется вкладка New. На ней можно выбрать один из следующих типов шаблона проекта:

Standard EXE – стандартное выполняемое приложение; ActiveX EXE – выполняемое приложение ActiveX; ActiveX DLL – динамическая библиотека ActiveX; ActiveX Control – элемент управления ActiveX; VB Application Wizard – мастер приложений;

Рис. 1.1. Окно New Project

Page 9: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

9

VB Wizard Manager – мастер создания пользовательских масте-ров;

Data Project – проект управления базой данных; IIS Application – приложение, размещаемое на сервере Web-узла

(IIS – Internet Information Server); Addin – надстройка, дополнительные утилиты, расширяющие

возможности приложений; ActiveX Document DLL – динамическая библиотека документов

ActiveX; ActiveX Document EXE – выполняемое приложение документов

ActiveX; DHTML Application – приложение, создающее динамические

HTML-страницы. Интегрированная среда разработки (IDE) представляет собой

знакомый нам по другим приложениям Microsoft графический интер-фейс. Ее внешний вид показан на рис. 1.2.

Рис. 1.2. Интегрированная среда проектирования (разработки) Visual Basic 6

Page 10: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

10

В состав среды проектирования включен набор следующих основных элементов:

главное меню; стандартная панель инструментов (Standard); панель элементов управления; окно проводника проекта (Project); конструктор форм; редактор меню (Menu Editor); окно свойств (Properties); окно макета формы (Form Layout); окно просмотра объектов (Object Browser); редактор исходного кода. Главное меню Главное меню, как и во всех приложениях Microsoft, представ-

ляет собой линейку раскрывающихся меню. Оно содержит следую-щие основные команды: File (Файл), Edit (Правка), View (Вид), Project (Проект), Format (Формат), Debug (Отладка), Run (Запуск), Query (За-прос), Diagram (Диаграмма), Tools (Сервис), Add-Ins (Надстройки), Window (Окно), Help (Справка). Вид главного меню показан на рис. 1.3. Наиболее часто используемые команды меню отображены в виде кнопок со значками на стандартной панели инструментов, размещен-ной ниже меню.

Многие команды окажутся знакомыми, поскольку главное меню Visual Basic 6 организовано и работает так же, как и в других прило-жениях Microsoft, – например, в текстовом редакторе Microsoft Word или в электронной таблице Microsoft Excel.

Рассмотрим основные команды главного меню. В меню File (Файл) сгруппированы команды для работы с файлами проекта. Ис-пользуя эти команды, можно выполнять такие действия, как создание нового проекта, открытие проекта для внесения изменений, добавле-ние проекта для параллельной работы над несколькими проектами или копирование форм из проекта в проект и т. п. Все команды этого меню перечислены в табл. 1.1.

Рис. 1.3. Главное меню Visual Basic 6

Page 11: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

11

Таблица 1.1Команды меню File

Команда Назначение New Project (Новый проект) Создает новый проект Open Project (Открыть проект) Открывает существующий проект

Add Project (Добавить проект)

Добавляет проект в группу для парал-лельной работы над несколькими про-ектами, копирования форм из проекта в проект или для его отладки

Remove Project (Исключить проект) Удаляет проект из группы проектов Save Project Group (Сохранить груп-пу проектов) Сохраняет группу проектов

Save Project Group As (Сохранить группу проектов как)

Сохраняет группу проектов под другим именем

Save <имя формы> (Сохранить форму) Сохраняет форму с прежним именем

Save <имя формы> As (Сохранить форму как) Сохраняет форму под другим именем

Print (Печать) Открывает диалоговое окно Print

Print Setup (Настройка печати) Открывает диалоговое окно настройки печати

Make <имя проекта>.ехе (Создать ехе-файл проекта)

Создает выполняемый файл текущего проекта

Make Project Group (Создать группу проектов) Создает группу проектов

Exit (Выход)

Осуществляет выход из Visual Basic 6. В том случае, если в окне программы находятся не сохраненные результаты работы, появятся запросы о необходимо-сти сохранения проектов, форм и других файлов

Меню Edit (Правка) содержит команды, предназначенные для редактирования (табл. 1.2). Часть из них соответствует подобным командам редактирования других приложений Microsoft, например, отменить предыдущую команду, повторить предыдущую команду, вырезать фрагмент текста, скопировать фрагмент в буфер обмена. В составе этого меню целый набор команд для работы с таблицами базы данных: добавлять и удалять поля, назначать первичный ключ в та-блице базы данных.

Page 12: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

12

Таблица 1.2Команды меню Edit

Команда Назначение Undo (Отменить) Отменяет предыдущую команду Redo (Повторить) Восстанавливает предыдущую команду Cut (Вырезать) Вырезает фрагмент текста Сору (Копировать) Копирует фрагмент в буфер обмена Paste (Вставить) Копирует содержимое из буфера обмена Remove (Переместить) Перемещает выделенное Delete (Удалить) Удаляет выделенное Delete Table from Database (Удалить таблицу из базы данных) Удаляет таблицу из базы данных

Select All (Выделить все) Выделяет все Select All Columns (Выделить все колонки) Выделяет все колонки

Table: Set Primary Key (Таблица: Установить первичный ключ) Определяет первичный ключ таблицы

Table: Insert Column (Таблица: Вста-вить поле) Вставляет поле в таблицу

Table: Delete Column (Таблица: Удалить поле) Удаляет поле из таблицы

Find (Найти) Вызывает диалоговое окно поиска

Find Next (Найти следующее) Ищет следующее значение, заданное для поиска

Replace (Заменить) Ищет значение, заданное для поиска, и заменяет его новым значением

Go To Row: First (Перейти на запись: Первая)

Устанавливает указатель на первую за-пись

Go To Row: Last (Перейти на запись: Последняя)

Устанавливает указатель на последнюю запись

Go To Row: Next (Перейти на за-пись: Следующая)

Устанавливает указатель на следующую запись

Go To Row: Previous (Перейти на запись: Предыдущая)

Устанавливаeт указатель на предыдущую запись </FO< font>< d>

Go To Row: Row (Перейти на запись: Запись)

Устанавливает указатель на запись с за-данным номером

Go To Row: New (Перейти на запись: Новая) Вставляет новую запись

В составе меню View (Вид) содержатся команды вызова окон и панелей инструментальной среды Visual Basic 6 (табл. 1.3).

Page 13: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

13

Таблица 1.3Команды меню View

Команда Назначение

Code (Код) Открывает окно редактора программ-ного кода

Object (Объект) Открывает окно конструктора форм Object Browser (Браузер объектов) Открывает окно браузера объектов

Immediate Window (Окно непосред-ственного выполнения)

Открывает окно, предназначенное для ввода и непосредственного выполнения команд

Locals Window (Окно Локальные) Открывает окно, предназначенное для просмотра значений переменных

Watch Window (Окно Наблюдение) Открывает окно просмотра значений выражений

Project Explorer (Проводник проекта) Открывает окно проводника проектов

Properties Window (Окно свойств) Открывает окно свойств объектов Properties

Form Layout Window (Окно макета формы) Открывает окно макета формы

Toolbox (Панель инструментов) Отображает панель элементов управ-ления

Data View Window (Окно просмотра данных) Открывает окно просмотра данных

Color Palette (Цветовая палитра) Отображает цветовую палитру

Toolbars (Панели инструментов)

Открывает меню, предназначенное для отображения в окне программы Visual Basic следующих панелей: Debug (Отладка), Editor (Редактор), Form Edit (Редактор форм), Standard (Стандартная панель инструментов)

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

Page 14: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

14

Меню Format (Формат) содержит большое количество команд форматирования объектов в форме (табл. 1.4).

В меню Debug (Отладка) сгруппированы команды (табл. 1.5), предназначенные для отладки приложения. Используя команды этого меню, можно установить точки останова программы и проверить зна-чения выражения и переменных, выполняя программу по шагам.

Команды меню Run (Запуск) используются для управления за-пуском приложения (табл. 1.6). Используя команды данного меню, можно запустить приложение на выполнение с компиляцией или без компиляции, приостановить или прервать выполнение приложения.

Меню Query (Запрос) содержит команды для создания и выпол-нения запросов к базе данных. При помощи этого меню, например, можно выполнить запрос, преобразовать результаты запроса в та-бличный вид.

В меню Diagram (Диаграмма) сгруппированы команды для по-строения диаграммы, отображающей структуру базы данных.

Команды меню Tools (Сервис) управляют настройками инстру-ментария среды Visual Basic. Они позволяют добавить процедуру и определять ее атрибуты, вызвать окно редактора меню, изменить на-стройки программы в диалоговом окне Options (Параметры), а также управлять хранилищем проектов SourseSafe.

Таблица 1.4Команды меню Format

Команда Назначение

Align (Выровнять) Открывает меню, содержащее коман-ды выравнивания объектов

Make Same Size (Установить подоб-ный размер)

Открывает меню, содержащее коман-ды, управляющие размерами объектов в форме

Horizontal Spacing (Горизонтальный интервал)

Устанавливает интервал между объек-тами в горизонтальном направлении

Vertical Spacing (Вертикальный интер-вал)

Устанавливает интервал между объ-ектами в вертикальном направлении

Center in Form (Центрирование в форме) Центрирует объекты в форме

Order (Порядок) Направляет выбранный объект в ниж-ний или верхний слой формы

Page 15: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

15

Таблица 1.5Команды меню Debug

Команда Назначение

Step Into (Шаг с заходом в процедуры) Осуществляет пошаговое выполнение процедуры, включая также вызывае-мые ею процедуры

Step Over (Шаг без захода в процеду-ры)

Осуществляет пошаговое выполнение процедуры без трассировки вызывае-мых ею процедур

Step Out (Шаг с выходом из процеду-ры)

Выполнение программы осуществля-ется до выхода из текущей процедуры

Add Watch (Добавить окно Watch)

Открывает окно Add Watch (Добавить наблюдение) для ввода выражений, за значениями которых будет вестись наблюдение

Edit Watch (Открыть окно Edit Watch)

Открывает диалоговое окно Edit Watch для редактирования или удаления выражений, за значениями которых ведется наблюдение

Quick Watch (Открыть окно Quick Watch)

Открывает окно Quick Watch для просмотра значения выбранного вы-ражения

Toggle Breakpoint (Установить точку останова) Устанавливает точку останова

Clear All Breakpoints (Отменить все точки останова) Удаляет все точки останова

Set Next Statement (Определить сле-дующий оператор) Устанавливает следующий оператор

Show Next Statement (Показать сле-дующий оператор) Показывает следующий оператор

В меню Add-Ins (Надстройки) содержатся команды вызова до-полнительных утилит, часто называемых надстройками (add-ins).

Меню Window (Окно) содержит стандартные команды управле-ния окнами. При вызове окон приложения меню Window пополняется соответствующими командами активизации окон приложения. При этом команды активизации окон называются по именам открытых окон.

Page 16: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

16

Таблица 1.6Кнопки стандартной панели инструментов

Кнопка Название Назначение 1 2 3

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 (Окно макета форм) Открывает окно макета формы

Page 17: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

17

1 2 3Object Browser (Браузер объ-ектов) Открывает окно браузера объектов

Toolbox (Панель элементов управления)

Открывает панель элементов управления

Data View Window (Окно про-смотра данных) Открывает окно просмотра данных

Visual Component Manager (Менеджер визуальных компо-нентов)

Открывает окно управления ви-зуальными компонентами Visual Component Manager

В меню Help (Справка) сгруппированы команды вызова справоч-ной системы Visual Basic. При помощи этого меню можно вызывать справочную систему с различными вариантами представления ин-формации. Отличие между ними состоит в открывающейся по умол-чанию вкладке.

Стандартная панель инструментов Стандартная панель инструментов расположена под главным ме-

ню. Если эта панель отсутствует в главном окне программы, для ее отображения в меню View (Вид) выберите команду Toolbars (Панели инструментов), а затем значение Standard (Стандартная).

На стандартной панели инструментов расположены кнопки для вызова наиболее часто употребляемых команд меню. Вы можете из-менить расположение стандартной панели инструментов, поместив ее в нижней части главного окна, справа или слева. Для этого с помощью кнопки мыши захватите любую границу панели и переместите ее в любое удобное для вас место.

Рис. 1.4. Стандартная панель инструментов Visual Basic 6

На рис. 1.4 показана панель инструментов в том виде, в каком она настроена при установке Visual Basic 6. В составе панели целый набор кнопок, выполняющих наиболее часто используемые команды. Их на-значение описано в табл. 1.6.

Окончание табл. 1.6

Page 18: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

18

Окно конструктора форм Окно конструктора форм является основным рабочим окном,

в котором выполняется визуальное проектирование приложения (рис. 1.5). Вызвать это окно можно из главного меню командой Object (Объект) меню View (Вид) или командой View Object кон-текстного меню объекта, находящегося в группе Forms в проводнике проекта.

В окне конструктора форм визуально конструируются все фор-мы приложения с использованием инструментария среды разработ-ки. Для точного позиционирования объектов в форме в окне имеется сетка. Размер ячеек сетки можно менять. При необходимости сетку можно отключать, воспользовавшись параметрами диалогового окна Options, открываемого командой Options (Параметры) из меню View (Вид).

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

Рис. 1.5. Окно конструктора форм Visual Basic 6

Page 19: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

19

Панель элементов управления Панель элементов управления – основной рабочий

инструмент при визуальной разработке форм приложе-ния (рис. 1.6). Панель элементов управления вызывается из меню View (Вид) командой Toolbox (Панель элемен-тов управления). Для вызова этой панели можно вос-пользоваться также кнопкой Toolbox на стандартной па-нели инструментов.

В составе панели элементов управления содержатся основные элементы управления форм – метки, текстовые поля, кнопки, списки и другие элементы для быстрого визуального проектирования макета формы. На панели представлены кнопки, назначение которых описано в табл. 1.7.

Рис. 1.6. Панель элементов управления Visual Basic 6

Таблица 1.7Кнопки панели элементов управления

Кнопка Название Назначение 1 2 3

Pointer (Указатель) Используется для позиционирования маркера (указателя) мыши

PictureBox (Графическое окно)

Размещает в форме графическое окно, пред-назначенное для объединения элементов в группы, для вывода в него графических изображений, а также текста, графических элементов и анимации

Label (Метка) Размещает в форме объекты, предназначен-ные для создания текстовой информации, надписей и примечаний

TextBox (Текстовое поле)

Размещает в форме текстовое поле, предна-значенное для ввода текстовой информации, чисел и дат

Frame (Рамка) Создает в форме рамку с заголовком для группировки объектов в логическую группу

Page 20: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

20

1 2 3

CommandButton (Кнопка управления)

Размещает в форме кнопки управления для инициации действий, выполнения команд, запуска программ

CheckBox (Флажок)

Размещает в форме флажок, предназначен-ный для формирования условий выполнения программ или каких-либо настроек, работаю-щий по принципу «да – нет»

OptionBufrton (Пере-ключатель)

Создает в форме переключатели для выбора режима работы или настроек выполнения программы

ComboBox (Поле со списком)

Создает в форме объект, содержащий одно-временно поле ввода и раскрывающийся список

ListBox (Список) Создает в форме список для выбора одного или нескольких значений из предлагаемого списка значений

HScrollBar (Горизон-тальная полоса про-крутки)

Размещает в форме горизонтальную по-лосу прокрутки, используемую в качестве ползунка для выбора значения из заданного диапазона

VScrollBar (Верти-кальная полоса про-крутки)

Размещает в форме вертикальную поло-су прокрутки, используемую в качестве ползунка для выбора значения из заданного диапазона

Timer (Таймер) Размещает в форме таймер

DriveListBox (Список устройств) Создает в форме список устройств

DirListBox (Список папок) Создает в форме древовидный список папок

FileListBox (Список файлов) Создает в форме список файлов

Shape (Очертание)

Создает в форме геометрические фигуры, та-кие как прямоугольник, квадрат, круг, эллипс, прямоугольник и квадрат со скругленными углами

Продолжение табл. 1.7

Page 21: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

21

1 2 3

Line (Линия) Создает линии

Image (Изображение) Создает в форме поля, предназначенные для отображения графических изображений

Data (Данные) Создает элемент управления данными в базе данных для перемещения по записям и ото-бражения результата навигации

Окно редактора меню В окне редактора меню Menu Editor можно создавать или редак-

тировать строку меню для формы. Окно свойств Окно Properties (Свойства) предназначено для отображения и

настройки свойств формы, а также размещенных в ней объектов. В нем, например, содержатся такие свой-ства выбранного объекта, как пози-ция в форме, высота, ширина, цвет (рис. 1.7).

Диалоговое окно Properties вы-зывается командой Properties Window (Окно свойств) из меню View (Вид), кнопкой Properties Window на стан-дартной панели инструментов или командой Properties контекстного меню выбранного объекта.

Поскольку форма и элементы управления каждый сами по себе являются объектами, набор свойств в этом окне меняется в зависимости от выбранного объекта. При помощи вкладок Alphabetic (По алфавиту) и Categorized (По категориям) свой-ства объекта можно просмотреть в алфавитном порядке или по группам (категориям) соответственно.

Окончание табл. 1.7

Рис. 1.7. Окно свойств объектов Properties

Page 22: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

22

В нижней части окна вы всегда найдете подсказку, поясняющую назначение выбранного атрибута объекта. Более подробную инфор-мацию найдете в справочной системе Visual Basic 6, нажав клавишу <Fl>. При этом необходимо предварительно выделить интересующее вас свойство.

Используя диалоговое окно Properties, можно изменить уста-новленные по умолчанию свойства объектов. Часть свойств объекта, например, размеры и расположение объектов, можно задать переме-щением объекта и изменением его размеров с помощью мыши в кон-структоре форм. Свойства, установленные в окне свойств, допускает-ся изменять при выполнении приложения, написав соответствующие коды в процедурах, создаваемых с помощью редактора кода.

Как правило, форма содержит много объектов. Если выбрать сра-зу несколько объектов, то в окне свойств отобразятся общие для этих объектов свойства.

Окно макета формы Окно макета формы Form Layout (Макет формы) (рис. 1.8) вы-

зывается командой Form Layout Window из меню View. В этом окне показывается уменьшенное изображение проектируемой формы в том виде, как эта форма будет выглядеть на экране монитора при выпол-

нении приложения. Размеры формы в окне макета Form Layout пропор-циональны размерам изображения монитора в этом же окне, то есть все реальные пропорции в точности со-блюдены.

Для проверки формы в рабо-тающем приложении откройте окно макета формы и запустите форму командой Start (Старт) из меню Run (Запуск). При этом форма запускает-ся точно в том виде, как она будет вы-глядеть в работающем приложении.

Окно редактора исходного кода Редактор кода – это мощный встроенный редактор с удобными

средствами ввода исходного кода программы. Из меню View (Вид) перейти в редактор кода можно с помощью команды Code (Код).

Для быстрого открытия окна редактора кода достаточно дважды щелкнуть левой кнопкой мыши, установив указатель на форме прило-

Рис. 1.8. Окно макета формы

Page 23: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

23

жения. После начала редактирование кода программы имя открытого окна появляется и в списке команд перехода между окнами Window (Окно) главного меню. Переход между макетом и окном редактора ко-да можно выполнять, используя список меню Window.

Окно проводника проекта Окно проводника проекта

Project (рис. 1.9) очень похоже на аналогичное окно проводника си-стемы Windows и позволяет легко и быстро просматривать состав и свойства выбранного проекта, пе-ремещаться между проектами, ес-ли их открыто сразу несколько, ко-пировать необходимые объекты из окна одною проекта в другой, как это осуществляется в проводнике системы Windows.

Проводник проекта можно вызвать командой Project Explorer (Проводник проекта) меню View (Вид) или комбинацией клавиш <Ctrl>+<R>.

Панель управления окна проводника проекта содержит три кноп-ки, которые имеют следующее назначение:

Таблица 1.8Назначение кнопок окна проводника

Кнопка Назначение Открывает окно редактора с кодом программы, выбранного в прово-днике объекта

Открывает в конструкторе форм выбранный объект

Включает/выключает отображение папок

При нажатии правой кнопки мыши в окне проводника появляется контекстное меню, содержащее команды для добавления, сохранения, удаления форм, элементов управления и других объектов. В контекст-ном меню продублированы действия кнопок окна проводника.

Рис. 1.9. Окно проводника проекта Visual Basic 6

Page 24: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

24

1.2. ФормаСвойства формыОбъекты на панели элементов называются элементами управле-

ния (Controls). Работая с ними, пользователь инициирует определен-ные события и в результате может управлять программой. Каждый объект характеризуется определенными параметрами, которые можно разделить на три категории:

события; методы; свойства. Первый объект, с которым мы познакомимся – форма. Именно

на форме, при разработке проекта, располагаются другие элементы управления.

Свойства любого объекта можно разделить на группы (категории). Свойства формы, определяющие внешний вид объекта В группе Appearance (Оформление) окна Properties содержатся

свойства объекта, которые задают атрибуты его внешнего вида.

Таблица 1.9Свойства группы Appearance

Свойство Назначение Caption Задает текст в строке заголовка объекта BorderStyle Задает стиль рамки объекта Palette Устанавливает цветовую палитру Picture Назначает значок, картинку для объекта. Используя данное

свойство формы, можно задать фоновое графическое изо-бражение

Appearance Внешний вид, 0 – плоская, 1 – 3Dimension (объемная)BackColor Цвет фонаEnabled True – элементы формы реагируют на события

False – элементы формы не реагируют на событияFillColor Цвет заполнения замкнутых фигур (прямоугольников, окруж-

ностей)FillStyle Стиль заполнения (полная закраска, вертикальными линиями,

горизонтальными линиями и т.д.)FontTrunspurent True (по умолчанию)/ False – прозрачность шрифтаForeColor Цвет надписей на форме

Page 25: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

25

BorderStyle – устанавливает возможность изменения разме-ров окна формы и действий с окном Стандартное окно имеет рамку (border). С ее помощью пользователь может изменять размеры окна. Для этого в системном меню имеется соответствующая команда. Вид рамки можно изменить с помощью свойства BorderStyle, которое мо-жет принимать одно из следующих значений (табл. 1.10.)

Таблица 1.10Установка рамки окна

Константа Значение Вид окна

vbBSNone 0

Окно без рамки. Размер окна изменяться не может. Нет строки заголовка. Окно не может перемещаться. Минимизация и максимиза-ция окна также невозможны

vbFixedSingle 1 Фиксированная рамка. Есть заголовок, кнопки минимизации и максимизации, но размер окна изменяться не может

vbSizable 2 Значение по умолчанию. Возможны все из-менения размера окна

vbFixedDialog 3

Окно окаймляется толстой рамкой. Из-менения размера невозможны. Нет кнопок минимизации и максимизации. Минимизи-ровать и максимизировать можно только из системного меню

vbFixedToolWindow 4

Поведение такое же, как vbFixedS ingle(1), но в Windows 95 строка заголовка более узкая и имеет меньший шрифт. Эта форма не отображается на панели задач Windows 95

vbSizableToolWindow 5

Поведение такое же, как vbsizeable(2), но строка заголовка более узкая и имеет мень-ший шрифт. Эта форма также не отобража-ется на панели задач Windows 95

Свойства, определяющие поведение объекта Свойства объектов, отвечающие за их поведение, собраны в груп-

пе Behavior (Поведение).

Page 26: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

26

Таблица 1.11Свойства группы Behavior

Свойство Назначение

AutoRedrawИспользуется при работе с объектами Line, Circle (для автома-тического «перерисовывания» этих объектов после того, как они были скрыты другими объектами), по умолчанию False

Enabled Разрешает или запрещает доступ к объекту DrawMode Определяет, каким образом будут выведены изображенияVisible Устанавливает видимость объекта DrawStyle Стиль линий DrawWidth Ширина линий

Свойства, определяющие шрифт Группа Font (Шрифт) содержит всего одно свойство Font, позво-

ляющее с помощью диалогового окна Выбор шрифта (рис.1.10.) за-дать шрифт текста объекта, размер, начертание.

Рис. 1.10. Окно выбора шрифта

Page 27: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

27

Вспомогательные свойства объекта (категория Misc)Таблица 1.12

Свойства группы Misc

Name Задает имя объекта, по которому объект идентифицируется в форме и в тексте программы

ToolTipText Позволяет задать текст подсказки, который будет появляться при установке курсора на объект

ControlBox

True – выводится значок системного меню, с помощью ко-торого пользователь может выйти из программы ([Alt+F4]). Если же системное меню удаляется, пользователю следует обеспечить другой способ выхода из программы

Icon Выбор значка приложения из стандартного набора

KeyPreview True – реагирует ли форма на нажатия клавиши / False – на нажатия клавиши реагируют только элементы управления

MaxButton – True (можно распахивать окно формы, false – нет)

MinBotton – Ttrue – присутствует, False – отсутствует кнопка сворачивания окна

MousePointer Устанавливает форму курсора при работе программы

Свойства позиционирования Группа Position (Расположение) окна Properties служит для по-

зиционирования объектов в системе координат формы и установки размеров объектов.

Таблица 1.13Свойства группы Position

Свойство Назначение

Left Задает положение объекта по горизонтальной оси от левого края формы или, в общем случае, от объекта-контейнера

Top Задает положение объекта по вертикальной оси от его верхне-го края до верхней стороны формы

Width Задает горизонтальный размер (ширину) объекта Height Задает вертикальный размер (высоту) объекта

MoveAble True – можно, false – нельзя перемещать форму во время работы

StartupPosition Начальное положение формы при запуске

Page 28: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

28

Свойства шкалы размеров объекта Свойства группы Scale (Масштаб) устанавливают шкалу макси-

мальных размеров объектов в системе координат формы. Свойства данной категории определяют масштаб объекта. Используя свойство ScaleMode, можно задать единицы измерения в терминах стандартно-го масштаба в твипах, пунктах, пикселах, символах и т. д. Свойства ScaleLeft и ScaleTop определяют координаты левого верхнего угла объекта, a ScaleWidth и ScaleHeight – единицы измерения на основе текущей ширины и высоты области рисования

Таблица 1.14Свойства группы Scale

Свойство Назначение ScaleLeft Задает максимальное положение объекта по горизонтальной оси ScaleTop Задает максимальное положение объекта по вертикальной оси

ScaleWidth Задает максимальный горизонтальный размер (максимальная ширина)

ScaleHeight Задает максимальный вертикальный размер (максимальная вы-сота)

Кроме перечисленных свойств имеются такие свойства, которые могут быть изменены только программно. Это свойства CurrentX, CurrentY, которые определяют положение курсора формы (с которого начинается вывод текста на форме).

Порядок обхода объектов формы При вводе информации в поля формы переход от одного поля к

другому осуществляется с помощью клавиши <Таb> в соответствии с заданным в форме порядком объектов. Он может отличаться от реаль-ного расположения объектов.

Каждому новому, добавляемому в форму объекту, присваивает-ся номер, не связанный с его реальным расположением в форме и определяющий лишь очередность размещения объекта в форме. Он на единицу больше максимального номера объектов формы. Необхо-димо учитывать, что нумерация объектов в форме начинается с 0.

Для того чтобы посмотреть и изменить порядковый номер объ-екта, откройте окно свойств и выберите свойство Tabindex (Порядок объектов). Для изменения установленного значения введите требуе-мое значение с помощью клавиатуры.

Page 29: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

29

Методы формыЭто стандартные процедуры, привязанные к объекту.Основное различие между методами и свойствами заключается

в том, что со свойствами можно работать как во время разработки проекта, так и во время выполнения приложения, тогда как методы доступны только при выполнении проекта. Следует заметить, что некоторые свойства могут быть также недоступны при разработке приложения, а во время его рабо-ты доступны только для чтения. Все методы объекта можно уви-деть, задав имя объекта и нажав точку. На экране появится список свойств и методов объекта. Перед методами стоит зеленый значок (рис.1.11)

Таблица 1.15Методы формы

Show Показать форму на экранеHide Скрыть формуMove Передвинуть Left, Top, Width, HeightCls – Очистить форму ( закрасить цветом Backcolor )Print – Напечатать на форме текст, начиная с позиции, координаты которой

заданы свойствами CurrentX, CurrentY

События формы Конструирование внешнего вида формы и задание ее свойств в

окне Propety – это только создание интерфейса формы – ее внешнего вида, а надо еще ее оживить. Т.е. надо определить события, на ко-торые форма должна реагировать, и определить, как именно форма должна реагировать на эти события. «Оживление» формы и ее эле-ментов осуществляется с помощью процедур обработки событий. Эти процедуры пишутся в специальном окне кодов, которое может быть вызвано либо через пункт меню View/Code, либо дважды щелкнув по любому месту формы (рис. 1.12).

Рис. 1.11. Просмотр свойств и методов объекта

Page 30: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

30

В левом окне выбирается объект (сама форма или ее элементы), в правом окне выбираются события, на которые может реагировать вы-бранный в левом окне объект. Нижняя часть окна – поле для описания процедур обработки событий. При выборе объекта и соответствую-щего ему события в поле процедур появляется «заготовка» (шаблон) для текста процедуры. Эта заготовка состоит из объявления проце-дуры и ее окончания. Текст процедуры располагается между этими двумя операторами.

Событий, на которые может реагировать форма, много (31).Событие – это процедура, написанная пользователем, кото-

рая выполняется при совершении определенных действий над объектом.

Приведем несколько примеров событий формы:

Рис. 1.12. Окно кода

Page 31: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

31

Таблица 1.16События формы

Событие Возникает

Activate (Активизировать)

Когда форма становится активной, т. е. отобража-ется на экране. Лучше всего подходит для инициа-лизации объектов и переменных, принадлежащих форме

Deactivate (Активизиро-вать)

Когда форма становится неактивной. Например, при активизации на экране другой формы

Initialize (Инициализация) При создании объекта типа форма Load (Загрузка) В момент загрузки формы в память Resize (Изменить размер) При изменении размера формы Terminate (Завершение) В момент удаления формы Unload (Выгрузка) В момент выгрузки формы из памяти Click (Щелчок) При щелчке по формеDblClick(двойной щелчок) При двойном щелчке по форме

1.3. Элементы управленияНа рис. 1.6 приведена стандартная панель управляющих элемен-

тов. В табл. 1.7 приведены описания элементов управления, остано-вимся на каждом из них подробнее.

1.4. PointerУказатель (Pointer) – не является элементом управления. Активи-

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

1.5. Элементы управления PictureBox, ImagePictureBox, Image – элементы, с помощью которых можно поме-

щать на форму различные картинки, фотографии. Элемент PictureBox имеет значительно больше возможностей, и в силу этого потребует значительно больше ресурсов памяти. Для того, чтобы поместить рисунок (*.вmр) на форму, необходимо сначала поместить элемент Image. Затем в свойстве Picture указать файл, из которого будет считан этот рисунок.

Элементы PictureBox, Image имеют свойства: Width – ширина, Heigth – высота, Left – Левый верхний угол, координата Х , Top – Ле-

Page 32: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

32

вый верхний угол, координата Y, которые позволяют устанавливать размеры и положение этих элементов на форме. Понятно, что эти свойства можно устанавливать как в окне свойств, так и программно, например, в процедурах обработки событий. Специфичным для этих объектов свойством является свойство Stretch (вытягивание). Если Stretch = False, то размеры элемента управления изменяются, охваты-вая картинку. Если же Stretch = True, то размеры элемента управления остаются постоянными, а картинка сжимается до размеров элемен-та управления. Рисунок станет невидимым, если его свойство Visible примет значение False.

Элементы управления типа PictureBox u Image могут реагировать на щелчки мыши, т.е. для них существует событие Click и они могут использоваться как командные кнопки.

1.6. Элемент управления Label (Надпись)Надписи используются для вывода текста (ввод в этом элементе

невозможен).Свойства

Таблица 1.17Свойства элемента управления Label

Свойство Описание свойства1 2

Alignment

Задается способ выравнивания введенного текста0 – по левому краю1 – по правому краю2 – по центру

Autosize

True/False определяет размер элемента управления по размеру текста. Если Autosize = True , то увели-чивается не ширина метки, а её высота. При этом если слово не помещается, то оно переносится на другую строку

Caption Определяет текст в меткеBuckColor Цвет фона

BorderStyleУстанавливает способ отображения текста 0 – с рамкой 1– без рамки

ForeColor Опреляет цвет текста

Page 33: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

33

1 2

DragIconУстанавливает рисунок, определяющий форму кур-сора мыши при перетаскивании объекта в процессе работы программ.

DragпMode

Определяет можно ли перемещать элемент по фор-ме или нет0 – manual (элемент перемещаться не будет)1 – automatic (элемент будет перемещаться)

Enabled True/False определяет доступность/недоступность элемента

Index Задается номер элемента в массиве элементов управления

Name Задается имя, которое используется в программе

TabIndexЗадается номер в последовательности перехода фокуса при нажатии клавиши ТАВ (уникальный для каждого элемента управления)

Tag Содержит текст, который хранится как дополни-тельная информация об объекте

ToolTipTextСодержит текст всплывающей подсказки, воз-никающий при подведении курсора к элементу управления

Visible True/False определяет будет виден или не виден элемент на форме

WordWrap True/False Позволяет корректировать размер над-писи и по вертикали

МетодыТаблица 1.18

Методы Label

MOVE Позволяет изменить как положение объекта, так и его разме-ры. Синтаксис метода следующий: ОБЪЕКТ. MOVE LEFT, TOP, WIDTH, HEIGHT

Zorder

Этот метод определяет, каким образом будет расположен элемент управления по отношению к пересекающимся с ним на форме объ-ектам. Синтаксис метода: ОБЪЕКТ. ZORDER 0 – объект будет на переднем плане ;1 – на заднем плане

Окончание табл. 1.17

Page 34: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

34

1.7. Элемент управления TextBox (Текстовое поле)Текстовое поле является основным элементом управления, пред-

назначенным для ввода данных.СвойстваДалее приведем свойства элемента, которые характерны только

текстовому полю.Таблица 1.19

Отличительные свойства TextBox

Locked True/False –определяет наличие/ отсутствие блокировки ввода данных в режиме работы проекта

MaxLength Устанавливает длину текста (максимально 32000 символов)

Multilihe Определяет, может ли данное поле содержать более одной строки текста (true – много строк, false – одна строка)

ScrollBars

Наличие полос прокрутки:0 – обе линейки прокрутки (вертикальная, горизонтальная) отсутствуют1 – только горизонтальная (<= 255 символов в строке)2 – только вертикальная3 – присутствуют обе линейки прокруткиЭто свойство работает только при Multiline = True

TabStop True/False – определяет, можно или нельзя перейти в эле-мент нажатием клавиши ТАВ

CausesValidation True/False – определяет, будет ли возникать событие Validate (проверка правильности данных)

СобытияПри использовании текстового поля представляют интерес не-

сколько событий. Прежде всего, это событие Change, которое вы-зывается при изменении содержимого текстового поля. Это событие происходит каждый раз при вводе, удалении или изменении символа. Например, при вводе в текстовое поле слова «Hello» событие Change вызывается пять раз – по одному разу для каждой буквы.

Для анализа, введенного в поле текста, лучше всего подхо-дит событие Validate – это событие срабатывает, когда свойство CauseValidation = True, и заключается в том, что данные, введенные в текстовое поле, будут проверяться на корректность в соответствии с процедурой обработки данного события.

Page 35: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

35

ПРИМЕР:Private Sub Text1_Validate(Cancel As Boolean)If Not IsNumeric(Text1.Text) ThenMsgBox («Введите число»)Cancel = TrueText1.SelStart = 0Text1.SelLength = Len(Text1)End IfEnd SubЭто событие происходит до события потери фокуса, элементом

управления Параметр Cancel может принимать значения либо true, либо false, если Cancel =true, то фокус от элемента управления передаваться не будет до тех пор, пока этот параметр не примет значение false.

Событие Validate уместно применять для проверки ввода данных в текстовое поле.

1.8. Элемент управления CommanDButton (Кнопка)

Свойства Таблица 1.20

Некоторые свойства кнопки

Appearance Трехмерный эффектBackColor Цвет фонаCancel Кнопка включается нажатием клавиши [Esc]

Caption

Надпись. Если надо выделить горячую клавишу, тогда перед соответствующей буквой ставится знак &. Затем при работе проекта для активизации кнопки достаточно нажать Alt+ горячая клавиша. (Эта буква в названии будет подчер-кнута)

Default Кнопка включается нажатием клавиши [Enter]Draglcon Пиктограмма при перемещении объекта

DragMode Ручной или автоматический режим перетаскивания (D g&D)

Enabled Доступность элементаFont Вид шрифтаHeight Высота объектаHelpContextId Привязка к собственному справочному файлуIndex Индекс элемента управления в массивеLeft Левый верхний угол, координата Х

Page 36: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

36

Mouselcon Изображение указателя мыши на кнопкеMousePointer Форма указателя мыши на кнопкеName Имя элемента управленияTablndex Порядок перемещения фокуса при нажатии клавиши [Tab]

TabStop Возможность перехода к элементу управления с помощью клавиши [Tab](True/False)

Tag Содержит любую необходимую дополнительную информа-цию

Top Левый верхний угол, координата YVisible Видимость (True/False)WhatsThisHelpID Привязка к собственному справочному файлуWidth Ширина объектаPicture Рисунок на кнопке только при Style = 1 (Graphical)

DisabledPicture Рисунок, который изобразится на кнопке, когда она станет недоступной

DownPicture Рисунок, который изобразится на кнопке, при нажатии на нее

Хотелось бы подробнее остановиться на двух свойствах кнопки, связанных с событием Click. Свойство Default определяет, что данная кнопка является кнопкой, активной по умолчанию. Если это свойство равно True, то нажатием клавиши [Enter] автоматически генерируется событие Click этой кнопки независимо от того, какой элемент име-ет фокус. Присваивать значение True этому свойству можно только для одной кнопки на форме. Следует учитывать, что в этом случае нажатие клавиши [Enter] перехватывается и передается этой кнопке. Обычно кнопкой по умолчанию является кнопка ОК.

Свойство Cancel используется подобно Default. Оно обеспечива-ет перехват клавиши [Esc] и вызов события Click для соответствую-щей кнопки. Обычно это свойство имеют кнопки Cancel (Отмена).

СобытияОсновное событие для кнопки это щелчок по кнопке.

1.9.Элемент управления ScrollBar (Полосы прокрутки)

Полосы прокрутки используются как для ввода, так и для ото-бражения информации (когда не нужно точно устанавливать значение какой либо переменной). Вертикальные и горизонтальные линейки

Окончание табл. 1.20

Page 37: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

37

(полосы) прокрутки работают одинаково. Они показывают, где при-мерно находится значение переменной по отношению к границам установленного для переменной диапазона.

Свойства Только 5 свойств этих полос являются специфическими:

Таблица 1.21Свойства ScrollBar

Min Значение типа Integer – устанавливает значение, соответствую-щее крайнему левому положению бегунка – минимальное значение 0

Max Значение типа Integer – устанавливает значение, соответствую-щее крайнему правому положению бегунка – максимальное значение 32767

Value Значение соответствующее текущему положению бегунка

SmallChange Величина, на которую изменяется значение этого элемента (Value) при щелчке по клавише (увеличение) (или (умень-шение)). Обычно это 1

LargeChange Величина, на которую изменяется значение этого элемента (Value) при щелчке в области между бегунком и левым (умень-шение) или правым (увеличение) краем.

СобытияПолосы прокрутки имеют два интересных события:Сhange – возникает после изменения позиции бегунка или после

программного изменения значения свойства value;Scroll – происходящее во время прокрутки (когда пользователь

захватил и передвигает бегунок).

1.10. Элемент управления Frame (Рамка)Рамка (Frame) – это один из элементов-контейнеров. Его на-

значение – объединить в группу несколько элементов управления. Объекты, объединенные с помощью рамки, можно как единое целое перемещать, активизировать и деактивизировать, делать видимыми или невидимыми. Некоторые элементы сами нуждаются в контей-нере – например, все переключатели в форме всегда объединяются в одну группу. Чтобы создать вторую группу опций, нужно требуемые переключатели объединить в элементе-контейнере. Для объединения объектов в группу нужно сначала создать элемент-контейнер, а затем добавить в него нужные элементы управления. Если требуемые эле-

Page 38: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

38

менты управления уже находятся в форме, их достаточно переместить в элемент-контейнер. Чтобы проверить, действительно ли элемент принадлежит контейнеру, достаточно переместить контейнер. Эле-мент управления, принадлежащий контейнеру, будет перемещаться вместе с ним.

СвойстваРамка – это элемент управления, который не имеет особых

свойств, присущих только ей.СобытияСобытия рамки обычно не анализируются, так как чаще всего

проектировщик работает только с элементами управления, принад-лежащими рамке.

1.11. Элемент управления CheckBox (Флажок)Флажки – это элементы управления, которые можно отмечать

(ставить «галочку»), выбирая из ряда опций одну или несколько. CheckBox может иметь два различных состояния – отмеченное и не отмеченное. Собственно, он может иметь и третье состояние. В этом случае элемент управления отображается как отмеченный, но недо-ступный. Установить такое состояние элемента управления можно только программно.

СобытияВажнейшим для флажка, как и для кнопки, является событие

click. СвойстваЕдинственным важным свойством элемента управления CheckBox

является его значение (Value). В зависимости от того, отмечен флажок или нет, Value может принимать значения, указанные в табл. 1.22.

Таблица 1.22Значения флажка

Величина Значение0 Не отмечен1 Отмечен2 Отмечен, но недоступен

Page 39: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

39

1.12. Элемент управления OptionButton (Переключатель)

Этот элемент управления, представляющий собой кружок с точ-кой или без, предназначен для установки только одной опции из груп-пы. Обычно все переключатели формы объединены в одну группу. Ес-ли вы желаете сформировать новую группу переключателей, то нужно поместить их в отдельный элемент-контейнер, например Frame.

СобытияТак же, как и для элемента управления CheckBox, для переключа-

телей важно только одно событие – Click.СвойстваВажнейшим свойством переключателей является свойство Value.

С его помощью можно определить состояние переключателя. Это свойство может принимать значения T/False.

1.13. Лабораторные работы для раздела 1Лабораторная работа 1.1 (1)Знакомство с инструментальной средой Visual Basic. Свойства,

события, методы форм и элементов управления CommandButton, Label,TextBox

Рис. 1.13. Интерфейс лабораторной работы 1.1

Page 40: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

40

Разработать проект с интерфейсом, аналогичным изображенно-му на рис. 1.13, и предназначенный для реализации следующих по-зиций:

при нажатии на командную кнопку (CommandButton) с над- писью «Привет» в окне ввода (TextBox) должен появиться текст при-ветствия (в примере на рис.1.13 текст «Большой привет»);

при нажатии на командную кнопку (CommandButton) с над- писью «Очистка» окно ввода должно очиститься от текста;

при одинарном щелчке мышью по форме (событие формы Click) метка (Label)с текстом «Hello» должна смещаться на неболь-шое расстояние влево и вниз, а текст, напечатанный на форме с при-менением метода Print (в примере Приветствие), должен смещаться на то же расстояние вправо и вниз (при загрузке формы текст должен находиться в правом верхнем углу формы);

при двойном щелчке по форме метка и текст должны вернуться в положение, занимаемое каждым из них в момент открытия формы;

при нажатии на командную кнопку (CommandButton) с над- писью «Выход» проект должен прекратить работу.

Для выполнения лабораторной работы необходимо выполнить следующие действия:

После запуска VB указать тип «Standart EXE» и нажать ОК. На появившуюся форму поместить элемент управления TextBox

и в окне свойств задать ему свойство Name txt1. Затем поместить на форму три элемента управления CommandButton, задав им свойство Name Сmd1, Cmd2 и Cmd3 соответственно. Для Сmd1 задать свой-ство caption Привет, для Cmd2 свойство caption Очистить и для Cmd3 задать свойство caption Выход. В правый угол формы поместить эле-мент управления Label, задав ему свойство Name Lbl1, а свойство Caption Hello.

И далее на событие click по элементу управления Cmd1 пропи-сать процедуру:

Private Sub Command1_Click()Text1.Text = «Большой привет»End Sub в элементе управления TextBox появится текст «Большой

привет».На событие click по элементу управления Cmd2 прописать про-

цедуру.Private Sub Command2_Click()Text1.Text = «»

Page 41: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

41

End Sub элемент управления TextBox будет очищен от сообще-ния.

И затем на событие Click по элементу управления Cmd3 пропи-сать процедуру.

Private Sub Command2_Click()EndEnd Sub Работа приложения будет завершена.Для того чтобы переместить метку из правого угла к центру фор-

мы и текст из левого угла формы к центру при событии щелчка по форме, пропишем следующую процедуру:

Private Sub Form_Click()Lbl1.Top = Lbl1.Top + 100Lbl1.Left = Lbl1.Left - 100Form1.CurrentX = xForm1.CurrentY = yForm1.ForeColor = BackColorPrint «Привет»x = x + 100y = y + 100Form1.CurrentX = xForm1.CurrentY = yForm1.ForeColor = greenPrint «Привет»End Sub При этом в области Declaration данного пркта опишем перемен-

ные x и у, как переменные целого типа:Dim x As Integer, y As Integer И зададим начальные значения этим переменным на событие

activate формы:Private Sub Form_Activate()x = 100 y = 100Form1.CurrentX=xForm1.CurrentY=yPrint «Привет»End SubИ на событие DblClick вернем и метку, и текст в начальное по-

ложение процедурой:

Page 42: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

42

Private Sub Form_DblClick()Lbl1.Top = 120 задается значение свойства Тор элемента управле-

ния Lbl1 из окна свойств;Lbl1.Left =660 задается значение свойства Left элемента управле-

ния Lbl1 из окна свойствForm1.CurrentX = xForm1.CurrentY = yForm1.ForeColor = BackColorPrint «Привет»Form1.CurrentX = xForm1.CurrentY = yForm1.ForeColor = greenPrint «Привет»End Sub

Лабораторная работа 1.2 (2)Обработка события формы Resize и события Validate элемента

управления TextBox

Рис. 1.14. Интерфейс лабораторной работы 1.2

Page 43: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

43

Разработать проект с интерфейсом, аналогичным изображенно-му на рис. 1.14, и предназначенный для реализации следующих по-зиций:

при загрузке формы в каждом из элементов управления TextBox должно быть отображено значение свойства формы, опреде-ляемого надписью на соответствующей этому элементу метке (Left, Top, Width, Height);

при изменении пользователем размеров формы (событие Resize) значения ее свойств Width и Height должны отображаться в элементах TextBox, находящихся справа от меток с соответствующи-ми надписями;

при перемещении пользователем формы и последующем щелчке по ней должно обновляться содержимое элементов TextBox, в которых отображаются значения свойств, определяющих положение формы (Left, Top)

при изменении пользователем значений в элементах TextBox (если имело место событие Change) и последующем нажатии на ко-мандную кнопку с надписью Run размеры и положение формы долж-ны изменяться в соответствии с введенными значениями, рассматри-ваемыми как приращения к текущим значениям. В элементах TextBox должны быть показаны обновленные значения соответствующих свойств формы. В процедурах обработки событий Validate элементов TextBox должна быть реализована защита от ввода некорректных дан-ных (foolproof);

при нажатии на командную кнопку (CommandButton) с над- писью «Exit» проект должен прекратить работу (подчеркнутая буква должна быть реализована как «горячая» клавиша.

Для выполнения лабораторной работы необходимо выполнить следующие действия:

После запуска VB указать тип «Standart EXE» и нажать ОК. На появившуюся форму поместить четыре элемента управления TextBox и задать значения свойству Name соответственно Text1, Text2, Text3 , Text4Затем поместить на форму четыре элемента управления Label и задать для них свойство Name Label1 ,Label2, Label3 и Label4, a свойство Caption Top, Left, Width, HeightНа форму необходимо поместить также два элемента управления CommandButton, задав их свойствам Name значения Command1 и Command2, а свойству Caption значение Run и значение Exit

Page 44: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

44

На событие загрузка формы прописываем следующую процедуру:Private Sub Form_Load()Text1.Text = Form1.TopText2.Text = Form1.LeftText3.Text = Form1.WidthText4.Text = Form1.HeightEnd Sub Это событие используется для отображения соответствующих

свойств формы.На каждый элемент управления TextBox необходимо прописать

процедуру для проверки введенной информации:Private Sub Text1_Validate(Cancel As Boolean)If Not IsNumeric(Text1.Text) ThenMsgBox («Enter the number»): Cancel = TrueEnd IfEnd SubНа событие шелчок по кнопке с надписью Run прописываем про-

цедуру, в которой проверяем, были ли внесены изменения и если бы-ли, то прибавляем введенные значения к предыдущим значениям, а если изменений не было, то ничего не предпринимаем.

Private Sub Command1_Click()If Text1.Text <> Form1.Top Then Form1.Top = Form1.Top + Text1.Text If Text2.Textl <> Form1.Left Then Form1.Left = Form1.Left + Text2.

Text If Text3.Text <> Form1.Width Then Form1.Width = Form1.Width +

Text3.TextIf Text4.Text <> Form1.Height Then Form1.Height = Form1.Height

+ Text4.TextText1.Text = Form1.TopText2.Text = Form1.LeftText3.Text = Form1.WidthText4.Text = Form1.HeightEnd SubНа событие изменение размеров формы отображаем новые значе-

ния размеров формы:Private Sub Form_Resize()Text3.Text = Form1.WidthText4.Text = Form1.HeightEnd Sub

Page 45: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

45

На событие щелчок по форме отображаем новые значения коор-динат верхнего левого угла формы:

Private Sub Form_Click()Text1.Text = Form1.TopText2.Text = Form1.LeftEnd SubПри нажатии по кнопке с надписью Exit прописываем следую-

щую процедуру:Private Sub Command2_Click()EndEnd Sub

Лабораторная работа 1.3 (3) Свойства, события, методы элементов управления Image и

ScrollBar

Рис. 1.15. Интерфейс лабораторной работы 1.3

Page 46: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

46

Разработать проект с интерфейсом, аналогичным изображенно-му на рис. 1.15, и предназначенный для реализации следующих по-зиций:

значение горизонтальной полосы прокрутки (HScrollBar), рассматриваемой как регулятор скорости, должно отображаться в эле-менте TextBox с указанием единиц измерения (например, км /час);

если это значение меньше половины максимального возмож- ного, то должен быть виден один из помещенных на форму элемен-тов Image, в противном случае должен быть виден другой элемент Image;

текст метки (Label) должен определяться видимым рисунком (элементом Image);

размер видимого рисунка должен быть пропорционален зна- чению полосы прокрутки (HScrollBar);

форма курсора мыши при его наведении над рисунком долж- на определяться этим рисунком;

при наведении курсора мыши на видимый рисунок в кон- текстной справке должна появляться информация об этом рисунке;

при нажатии на командную кнопку (CommandButton) с над- писью «Exit» проект должен прекратить работу.

Для выполнения лабораторной работы помещаем на форму элемент управления TextBox и задаем его свойству Name значение Text1.

Далее помещаем на форму элемент управления Label и задаем его свойству Name значение Label1, а свойство Caption этого элемента управления будем задавать программно.

На форму также поместим элемент управления ScrollBar, задав его свойству Name значение HScroll1, свойству Min значение 0, а свойству Max значение 200.

Помещаем на форму два элемента управления Image, задав им значения свойства Name Image1 и Image2 соответственно. Изменив свойство Strech на значение true, вставим в свойство Picture каждого из элементов управления по любому рисунку с расширением bmp и на событие загрузка формы пропишем процедуру, в которой делаем не-видимым второй рисунок и задаем цвет и определяем текст надписи в элементе управления Label:

Private Sub Form_Load()Image2.Visible = FalseLabel1.ForeColor = &HFF0000

Page 47: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

47

Label1.Caption = «Picture№1»End Sub Далее на событие изменения значения (Change) в элементе управ-

ления ScrollBar прописываем процедуру, в которой проверяем изме-ненные значения и в зависимости от этих значений выводим соответ-ствующие заданию элементы управления Image1 или Image2 и соот-ветствующие им надписи, а в элементе управления TextBox выводим значения, установленные на элементе управления ScrollBar:

Private Sub HScroll1_Change()Text1.Text = HScroll1.Value & «км\час»If HScroll1.Value < HScroll1.Max / 2 ThenImage1.Visible = TrueImage2.Visible = FalseImage1.Width = 1005 + HScroll1.Value * 4Image1.Height = 1005 + HScroll1.Value * 4Label1.ForeColor = &HFF0000Label1.Caption = «Picture№1»ElseImage1.Visible = FalseImage2.Visible = TrueImage2.Width = 1005 + HScroll1.Value * 4Image2.Height = 1005 + HScroll1.Value * 4Label1.ForeColor = &HFF&Label1.Caption = «Picture№2»End IfEnd SubНа событие Scroll для элемента управления ScrollBar вызываем

процедуру HScroll1_ChangePrivate Sub HScroll1_Scroll()HScroll1_ChangeEnd Sub

Page 48: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

48

Лабораторная работа 1.4 (4)Свойства, события, методы элементов управления OptionButton,

CheckBox и Frame.

Рис. 1.16. Интерфейс лабораторной работы 1.4

Разработать проект с интерфейсом, аналогичным изображенно-му на рис. 1.16, и предназначенный для реализации следующих по-зиций:

состояние элементов CheckBox, принадлежащих фрэйму «Предметы», должно отображаться в метке (Label), расположенной под этим фрэймом. Информация о выбранном предмете должна рас-полагаться в отдельной строке;

состояние элементов OptionButton, принадлежащих фрэй- му «Курс», и элементов OptionButton, принадлежащих фрэйму «Се-местр», должна отображаться в метке (Label), расположенной под этими фрэймами. В первой строке этой метки должна быть инфор-мация о выбранном курсе, а во второй строке – о номере выбранного семестра (осенний семестр первого курса имеет номер 1, весенний семестр пятого курса имеет номер 10);

при нажатии на командную кнопку (CommandButton) с над- писью «Exit» проект должен прекратить работу.

Page 49: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

49

Для выполнения лабораторной работы необходимо выполнить следующие действия:

После запуска VB указать тип «Standart EXE» и нажать ОК. На появившуюся форму поместить фрейм. В этот фрейм поме- стить три элемента управления CheckBox , задав им соответствен-но свойство Caption математика, физика, информатика.Поместить другой фрейм, задав его свойству Caption значение Се- местр. Поместить в него два элемента OptionButton.Поместить третий фрейм, задав его свойству Caption значение Курс. Поместить в него пять элементов OptionButton со свойства-ми Caption курс 1, курс 2, курс 3, курс 4, курс 5 соответственно.Далее напишем процедуру для формирования информации о вы- бранных предметах.Для этого выбрать пункт меню Tools/AddProcedure и в появив-

шемся окне задать имя процедуры и указать ее тип.Private Sub proc1()Dim s As StringIf Check1.Value = 1 Then s = s + Check1.Caption + vbCrLfIf Check2.Value = 1 Then s = s + Check2.Caption + vbCrLfIf Check3.Value = 1 Then s = s + Check3.Caption + vbCrLfLabel1.Caption = sEnd SubЗатем будем вызывать эту процедуру на событие click по каждому

элементу checkboxPrivate Sub Check1_Click()proc1End SubPrivate Sub Check2_Click()proc1End SubPrivate Sub Check3_Click()proc1End SubЗатем создадим вторую процедуру для вычисления номера семе-

стра и курсаPrivate Sub proc2()Dim k as integer, sem as integerIf Option3.Value=true Then k=1If Option4.Value =true Then k=2

Page 50: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

50

If Option5.Value =true Then k=3If Option6.Value =true Then k=4If Option7.Value =true Then k=5Sem=0If Option1.Value=true Then sem=-1 Label2.Caption = «Курс» & k & + vbcrlf + «Семестр» & 2*k-semEnd SubЗатем будем вызывать эту процедуру на событие click по каждому

элементу OptionButtonPrivate Sub Option1_Click()Proc2End Sub и т.д.

2. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА VISUAL BASIC

Во всех языках высокого уровня программный код состоит из:Переменных1. Выражений 2. Операторов 3. Управляющих структур 4. Функций 5. Опишем каждый тип подробнее.

2.1.ПеременныеПеременная представляет собой зарезервированное место в опе-

ративной памяти для временного хранения данных. Каждая перемен-ная имеет собственное имя. После того как переменной присвоено зна-чение, можно использовать ее в программе вместо самого значения.

Имена переменных Для того чтобы сделать переменные более наглядными и просты-

ми для чтения, рекомендуется давать им имена, имеющие определен-ное смысловое значение. Существует несколько правил задания имен переменных;

имя переменной может содержать не более 255 символов; имя переменной может содержать любые буквы и цифры; первый символ в имени переменной должен быть буквой; в имени переменной должны отсутствовать пробелы; имя должно быть уникальным в пределах области видимости.

Page 51: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

51

Объявление переменных и константТипы данныхВ Visual Basic предусмотрены следующие типы данных:

Таблица 2.1Типы данных

Тип данных Префикс типа

Что он обозна-чает Диапазон значений Занимаемая

память

Byte Byte Однобайтное целое число 0–255 1байт

Boolean Bool Логическое значение

True или False 2 байта

Integer Int Целое число –32768 до 32767 2 байта

Long Lng Длинное целое число

-2 147483648 до 2 147483648 4 байта

Currency Cur Денежная вели-чина

-922337203685477,58922337203685477,58

8 байт (19 разрядов

Single Sng Число с плаваю-щей запятой -3.4*1038 - 1.4*10-45 4 байта

Double Dbl

Число с пла-вающей запятой двойной точ-ности

-1.79*10308 -4.94*10-324

8 байт (16 разр. на мантису)

Date Date Дата/время от 1 января 100г. до31 декабря 9999г 8 байт

String Str Строка пере-менной длины 0 .. ~ 65500 1 байт на

символ

Variant Var Любой тип данных 16 байт

При объявлении переменных может указываться тип данных. Это выполняется с помощью оператора Dim:

Dim Имя_переменной As Тип_данныхВместо Тип данных указывается ключевое слово для данных

соответствующего типа. При этом разрешены типы, приведенные в табл. 2.1.

Если для переменной не указан явный тип данных, то Visual Basic присваивает ей тип Variant:

Dim А, В As Byte

Page 52: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

52

Dim С,D As IntegerПеременным А и С присваивается тип Variant.Оператор DefВ VB предусмотрена возможность задания типа с помощью опе-

ратора Def.Допустим, необходимо, чтобы все переменные, используемые в

программе, были целочисленные. Тогда до объявления переменных оператором Dim, используется оператор Def:

DefInt A-ZDim A, A1, .. , Z5В таком комплекте эти операторы обеспечивают целочисленность

всех переменных, объявленных в операторе Dim.Синтаксис оператора Def следующий: Defтип диапазон буквДиапазон букв может быть задан интервалом (А-К) и/или спи-

ском (А, В, Т). В этом случае интервалы отделяются друг от друга запятыми.

Пример.DefInt A-I, O-RВ таблице описания типов (табл. 2.1) вторая часть оператора Def

записана в столбце Префикс типа.Для объявления констант (данных, значения которых не могут

быть изменены) используется операторConst t = 15Тип константы определяется автоматически, причем, если есть

возможность выбора, например, обычное целое или длинное, то вы-бирается тип соответствующий Min объему требуемой памяти. Одна-ко можно задать min константы и с помощью суффикса (см. таблицу описания типов).

Если надо определить текстовую константу, то она заключа-ется в кавычки. Константа типа Date заключается в # (например, #01/01/99#).

Option ExplicitVisual Basic не требует обязательного явного объявления пере-

менных. При неявном объявлении, переменные просто используются в программе, при явном, они предварительно должны быть определе-ны (например, посредством оператора Dim).

Чтобы переменные всегда объявлялись явно, используется опция Explicit. В этом случае Visual Basic будет требовать явного объявле-

Page 53: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

53

ния переменных, что устраняет возможные ошибки при написании программы.

Область определенияВесьма важной характеристикой переменных является область

их определения. В Visual Basic есть три вида областей определения, характеризующих доступность переменной:

локальная: переменная доступна только в текущей процедуре; уровня формы: переменная доступна только в текущей форме, мо- дуле или классе;глобальная: переменная доступна во всем проекте. Локальные переменныеЛокальными являются переменные, определяемые внутри проце-

дуры или функции. Они доступны только внутри этой процедуры. Переменные уровня формыПеременные уровня формы определяются в секции (General

Declarations) и доступны только внутри соответствующего контейне-ра, т.е. формы, модуля или класса.

Глобальные переменныеГлобальные переменные определяются в секции (General)

(Declarations) модуля. При этом вместо оператора Dim используется зарезервированное слово Public. Глобальные переменные доступны во всех модулях и процедурах проекта.

Статические переменныеVisual Basic дает возможность объявлять переменные как ста-

тические. При выходе из процедуры содержимое статической пере-менной сохраняется. При новом вызове этой процедуры переменной присваивается значение, которое она имела при последнем выходе из этой процедуры. Содержимое переменной сохраняется в течение все-го времени, пока существует в памяти форма или модуль.

Для объявления переменной как статической нужно просто вме-сто оператора Dim использовать слово Static:

Static Имя_переменной As [Тип_переменной]

2.2. Оператор присвоения. Выражения и операцииОператор присвоения – состоит из имени переменной, за которой

стоит знак присвоения (= ) и какое-нибудь выражение.Выражение – последовательность операций, которые надо произ-

вести над данными.

Page 54: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

54

ОперацииТипы операций:арифметические операции операции отношения логические операции функциональные операции строковые операции Арифметические операцииСуществуют следующие арифметические операции (в порядке

установления приоритета выполнения):^ – возведение в степень;*, / – умножение, деление;\ – целочисленное деление (аналог Div в Pascal);mod – остаток от деления;+, - – сложение и вычитание.Порядок выполнения операций меняется с помощью скобок.Тип выражения определяется типом составляющих его операн-

дов. Если выражения имеют два операнда, объединенные знаком какой-либо из арифметических операций, то VB определяет тип ре-зультата на основе типа обоих операндов. (Результат сложения двух целых чисел – целое число.)

Если операнды оказываются разного типа, то результату присваи-вается наиболее высокий из типов (т.е. требующий большего объема памяти). Поэтому, когда возможен вариант выхода за границы исходно-го типа (например, при перемножении целых чисел типа Integer), то можно у константы поставить идентификатор более высокого типа.

Dim c As Integer c = 123451 Print 1000&*c В этом случае ошибки переполнения не будет.Операции отношения Эти операции используются для сравнения арифметических вы-

ражений:= , > , < , < > , > = , < =Результатом операции отношения является либо True (-1), либо

False (0). Поэтому этот результат можно присваивать переменной ти-па Boolean.

Приме: Dim b as boolean, s as integerb = s > 1

Page 55: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

55

Операции сравнения для действительных чисел нужно прово-дить, понимая, что представление этих чисел осуществляется с опре-деленной точностью (числа типа Single – 7 разрядов на мантису, запи-сываются как 0,75 Е +01, числа типа Double – 16 разрядов на мантису, записываются как 0,75 D +01). Поэтому, чтобы избежать ошибок при сравнении действительных чисел используют некоторую зону, допу-скающую неточность:

Пример: If abs (a-b) < 0.001 then …Логические операцииОперандами в логических операциях являются булевые величи-

ны (принимающие значения только True или False ). Результат опера-ций тоже величина булевая.

Существуют следующие логические операции (в порядке убыва-ния их приоритета):

Not – логическое отрицание «не»,And – логическое «и»,Or – логическое «или»,Xor – исключающее «или».В табл. 2.2 приведены результаты выполнения логических опе-

раций.

Таблица 2.2Логические операции над данными

A B Not And Or XorT – F – – –F – T – – –F F – F F FF T – F T TT F – F T TT T – T T F

Операции отношения имеют приоритет выше, чем у логических операций.

Функциональные операцииСуществуют два вида функций:1) встроенные (стандартные);2) определенные пользователем.В свою очередь встроенные функции разделяются по группам:функции проверки типов,

Page 56: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

56

функции определения типа переменной, функции преобразования типов данных, функции обработки дат, функции обработки строковых данных, функции обработки чисел.

Таблица 2.3Функциональные операции

Функции проверки типовIsArray (имя переменной) Является ли переменная массивомIsData (имя переменной) Является ли переменная датойIsEmpty (имя переменной) Была ли переменная объявленаIsError (имя переменной) Является ли переменная кодом ошибкиIsNull (имя переменной) Является ли переменная пустым значениемIsNumeric (имя переменной) Является ли переменная числом

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

TypeName (имя переменной) Возвращает строковое выражение, являющееся типом переменной

VarType ( имя переменной) Возвращает константу, соответствующую типу переменной

Функции преобразования типовVal (string) Возвращает число из строкиStr (number) Преобразует число в строку

СBool (выражение числовое) Преобразует число к типу Boolean (0 – False; ≠ 0 –True)

CByte (выражение числовое) Преобразует число к типу Byte (если в интерва-ле от 0 до 255)

CCur (выражение числовое ) Преобразует в число типа Currency

CData (выражение любое ) Преобразует подходящее (строковое или число-вое) выражение в число типа дата

CDbl (выражение числовое) Преобразует в действительное с двойной точно-стью

CInt (выражение числовое) Преобразует число в Integer с округлением до ближайшего целого

CLng (выражение числовое) Преобразует в Long с округлением до ближай-шего целого

CSng (выражение числовое) Преобразует в действительное с одинарной точностью

CStr (выражение любое) Преобразует любое выражение в строку

Page 57: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

57

Функции даты и времени

Timer Возвращает количество секунд от полуночи до текущего времени

DateAdd(интервал, число, дата)

Прибавляет (или отнимает) заданное число интервалов к датеИнтервал: уууу – год; q – квартал; m – месяц; d – день; ww – неделя; h – час; n – минута; s – секунда;Число > 0 – прибавляет, число <0 – отнимает

Date Возвращает текущую датуTime Возвращает текущее времяNow Возвращает текущую дату

WeekDay Возвращает день недели для аргумента функции (номер дня в неделе)

DateDiff (интервал, дата1, дата2)

Возвращает количество временных интервалов между двумя датами (дата1 – дата2)

Day (Hour, Minute)Возвращает значение для (часа, минуты) в аргу-менте функции.D = #01/12/98# --- Day (d) = 12

Month (Year)Возвращает значение месяца (года) в аргументе функции.Month (d) = 1

Функции обработки строкChr (код) Выводит символ, соответствующий кодуAsc (символ) Выводит ASCII код символаUcase (string)LCase (string)

Преобразует все символы символьного выраже-ния в верхний или нижний регистр

Len (string) Длина строки в символах

Left (string, n) Возвращает подстроку из первых n символов (слева)

Right (string, n) Возвращает подстроку из последних n символов (справа)

Mid(string, n1,n2) Возвращает фрагмент строки начиная с символа с номером n1, длиной n2

Trim/LTrim/RTrim Уничтожает пробелы слева и справа /только слева/только справа

Space (number) Возвращает строку из N пробелов

Page 58: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

58

Split (string, разделитель)

Преобразует строку в одномерный массив, нуме-руемый с 0.Разделитель – в качестве разделителя в строке могут быть пробел или запятая

Join (Array, разделитель) Преобразует массив в строку

String (n) Формирует строку, содержащую n одинаковых символов

InStr (string, string1)Ищет в строке string, подстроку string1и воз-вращает номер позиции, с которой начинается подстрока string1

Replase (string, string1, string2)

Находит и заменяет в строке одну подстроку на другую

StrComp (string1, string2) Возвращает результат сравнения строк-1 1<2; 0 - 1=2; 1 1>2

StrReverse(string) Переписывает строку в обратном порядкеФункции выбора

IIf (условие, вырИст, выр-Лож)

Если (условие) истинно, то возвращается выра-жение или значение (вырИст), иначе выражение или значение (вырЛож)

Choose(N, выр1, выр2, … вырN)

Если N=1 возвращается выр1, N=2 возвращается выр2 и т.д.

Switch (выр1, знач1, выр2, знач2…) Если выр1 истинно то возвращается знач1 и т.д.

Функции обработки чиселABS(x) Модуль числаSin(x) Синус ХCos(x) Косинус ХSqr(x) Квадратный корень Х

Int(x) Возвращает целую часть числа (ближайшее целое, не превосходящее х)

Fix(x) Ближайшее целое, большее хCint(x) Округление до ближайшего целогоTan(x) Тангенс Х

RND(x) Генерирует случайное число в интервале 0-1

Ubound(A) Возвращает номер последнего элемента массива А (нумерация начинается с 0)

Lbound(A) Возвращает номер первого элемента массива А (нумерация начинается с 0)

Page 59: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

59

2.3. Диалоговые окнаВ Visual Basic 6 существует специальный вид окон – диалоговые.

В распоряжении разработчика имеется хорошо развитый инструмен-тарий для их создания. Диалоговые окна бывают двух типов – модаль-ные и немодальные.

Модальное диалоговое окно – это окно, из которого нельзя перей-ти в другое окно, не закрыв текущее. Данный вид диалоговых окон используется для выдачи сообщений о ходе работы приложения, его настройки или ввода каких-либо данных, необходимых для работы. Примером такого диалогового окна в программе Visual Basic являет-ся окно About. Модальное диалоговое окно вынуждает пользователя совершать некоторые действия или отвечать на запрос приложения вводом информации или выполнением какого-либо действия.

Немодальное диалоговое окно – это окно, позволяющее переме-щать фокус на другое окно или форму без закрытия текущего окна. Данный тип диалоговых окон используется редко. Примером немо-дального диалогового окна в Visual Basic является окно Find (Поиск), дающее возможность осуществлять поиск нужной информации.

Простейшие из диалоговых окон – это окна сообщений и окна, предназначенные для ввода информации. В дополнение к ним в Visual Basic 6 существует набор более сложных стандартных диалоговых окон для приложений:

Open (Открыть) – диалоговое окно для поиска в файловой струк-туре нужного файла; Save As (Сохранить как) – для поиска места хранения файла и вво-да его имени; Font (Шрифт) – для выбора и установки шрифта; Color (Цвет) – для выбора цветовой палитры; Print (Печать) – для настройки режима печати; Help (Справка) – для работы со справочной системой приложения. Окно сообщения (MsgBox) Диалоговое окно сообщения (рис. 2.1) не требует проектирова-

ния и вызывается из программы командой MsgBox или с помощью аналогичной функции MsgBox , имеющей следующий синтаксис:

MsgBox (prompt[, buttons] [, title] [, helpfi le, context]), гдеprompt – текст сообщения в диалоговом окне. Максимальная длина текста 1024 символа. В этот текст можно вставить в качестве раз-

Page 60: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

60

делителей строк перевод каретки Chr(13), перевод строки Chr(lO) или их комбинацию; buttons – числовое выражение, которое задает параметры для кно- пок управления и значков в диалоговом окне и составлено из кон-стант, указанных в табл. 2.4 и 2.5 Если значение не указано, то по умолчанию присваивается значение 0; title – текст заголовка диалогового окна; helpfi le – ссылка на файл справочной системы; context – ссылка на содержание в файле справочной системы.

Необходимо иметь в виду, что для задания нескольких параме-тров кнопок и значков одновремен-но следует просто сложить соот-ветствующие константы.

Пример: MsgBox «При-ветствуем Вас!», vbYesNo + vbExclamation,» Окно сообщений»

В ответ получите диалоговое окно, показанное на рис. 2.1.

Таблица 2.4Константы параметров для значков диалогового окна сообщения

Значок Константа Значение Тип сообщения

vbExclamation 48 Предупреждение

vbQuestion 32 Запрос

vbInformation 64 Информация

vbCritical 16 Ошибка

В диалоговых окнах сообщения можно управлять отображаемы-ми в окне сообщениями кнопками и установкой фокуса на одной из кнопок при открытии окна. Для этого можно использовать константы, приведенные в табл. 2.5.

Рис. 2.1. Диалоговое окно сообщения

Page 61: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

61

Таблица 2.5Константы параметров наличия кнопок в окне сообщения

и установки фокуса на кнопку

Константа Значение Набор кнопок в диалоговом окне vbOkOnly 0 OK vbOkCancel 1 OK, Отмена vbAbortRetryIgnore 2 Стоп, Повтор, Пропустить vbYesNoCancel 3 Да, Нет, Отмена vbYesNo 4 Да,Нет vbRetryCancel 5 Повтор, Отмена vbDefaultButton1 0 Устанавливает фокус на первой кнопке vbDefaultButton2 256 Устанавливает фокус на второй кнопке

vbDefaultButton3 512 Устанавливает фокус на третьей кнопке

vbDefaultButton4 768 Устанавливает фокус на четвертой кнопке

vbApplicationModal 0

Назначает модальность приложения. Диалоговое окно будет модальным, то есть требующим обязательного закры-тия для перехода в другие окна

vbSystemModal 4096

Назначает модальность системы. Диалоговое окно будет модальным на уровне системы, то есть пока диалого-вое окно не закрыто, в любое другое приложение перейти нельзя

vbMsgBoxHelpButton 16384 Добавляет в диалоговое окно кнопку Справка

VbMsgBoxSetForeground 65536 Объявляет диалоговое окно фоновым окном

vbMsgBoxRight 524288 Выравнивает текст в диалоговом окне по правому краю

vbMsgBoxRtIReading 1 048 576 Переворачивает текст для чтения справа налево

В зависимости от выбора кнопки диалоговое окно MsgBox воз-вращает одно из значений, заданных системными константами. Это необходимо для анализа нажатой кнопки и выполнения соответствую-щих действий в программе. В исходном коде для этого можно исполь-зовать константы, указанные в табл. 2.6.

Page 62: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

62

Таблица 2.6Значения констант, возвращаемые кнопками окна сообщения

Кнопка Константа Значение при нажатии на кнопку

ОК vb0k 1 Отмена vbCancel 2 Стоп vbAbort 3 Повтор vbRetry 4 Пропустить vblgnore 5 Да vbYes 6 Нет vbNo 7

Диалоговое окно ввода информации (InputBox) Достаточно часто в диалоговом окне необходимо не только на-

жать кнопки выбора действия, но и ввести определенную инфор-мацию, которая затем анализируется программой. Для выполнения такого рода действий в Visual Basic можно использовать диалоговое окно ввода информации InputBox (рис. 2.2). Функция InputBox имеет следующий синтаксис:

InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfi le, context]), где

prompt – текст сообщения в диалоговом окне. Максимальная длина текста 1024 символа. В этот текст можно вставить в качестве раз-делителей строк перевод каретки Chr(13), перевод строки Chr(lO) или их комбинацию; title – текст заголовка диалогового окна; default – значение текстового поля ввода по умолчанию. Если пара- метр отсутствует, строка остается пустой; xpos – позиция по горизонтали левого верхнего угла диалогово- го окна относительно левого верхнего угла экрана. По умолчанию присваивается значение, соответствующее середине экрана; ypos – позиция по вертикали левого верхнего угла диалогового окна относительно левого верхнего угла экрана. По умолчанию присваивается значение, соответствующее середине экрана; helpfi le – ссылка на файл справочной системы; context – ссылка на содержание в файле справочной системы. Для примера введите в командном окне среды проектирования

Immediate следующую команду:

Page 63: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

63

strUserTest = InputBox («Введите пароль», «Запуск приложения», «****»)

В результате получите диалоговое окно, показанное на рис. 2.2. В отличие от диалогового окна MsgBox, в окне InputBox всег-

да имеются только две кнопки управления: ОК и Cancel. Кнопка ОК подтверждает ввод данных, кнопка Cancel – закрывает диалоговое окно без ввода данных.

Использование элемента управления CommonDialog для созда-ния диалоговых окон

Все диалоговые окна, перечисленные в начале раздела «Диа-логовые окна», можно создать с помощью элемента управления commonDialog. Прежде чем его использовать, необходимо подклю-чить к проекту библиотеку Microsoft Common Dialog Control 6.0 через диалоговое окно Components (Компоненты) среды проектирования.

Для вызова диалоговых окон необходимо использовать соот-ветствующие каждому из этих окон методы элемента управления commonDialog, указанные в табл. 2.7.

Таблица 2.7Методы элемента управления CommonDialoq

Метод Описание

ShowOpen Вызывает диалоговое окно, используемое для открытия файла

ShowSave Вызывает диалоговое окно, используемое для сохранения файла

ShowColor Вызывает диалоговое окно настройки цветовой палитры ShowFont Вызывает диалоговое окно настройки шрифтов текста

ShowPrinter Вызывает диалоговое окно настройки печати и диалого-вое окно печати

ShowHelp Подключает справочную систему в стиле Windows

Рис. 2.2. Диалоговое окно ввода

Page 64: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

64

Диалоговое окно открытия файла Диалоговое окно открытия файла предназначено для поиска фай-

лов, используемых в программе. Имя выбранного файла или списка файлов возвращается в свойстве FileName объекта CommonDialog. Для вызова диалогового окна открытия файла (рис. 2.3) необходимо в событии click кнопки cbControl приложения MySmallProject ввести следующий код:

Private Sub cbControl_Click() cdlMyDialog.ShowOpen End Sub

2.4. Операторы передачи управленияПри разработке программ часто приходится изменять порядок

следования операторов. Только в очень простых программах опера-торы выполняются в той последовательности, в какой они записаны в программе. Для того чтобы изменить порядок выполнения операто-ров применяют безусловные и условные операторы.

Рис. 2.3. Диалоговое окно открытия файла

Page 65: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

65

Безусловный переход GOTO меткаПри этом в качестве метки используется:либо число (любая комбинация цифр, уникальная внутри проце- дуры);либо любая комбинация символов, которая начинается с буквы, обязательно заканчивается двоеточием и стоит одна в строке. Метка всегда начинается с первой позиции.Условные операторыOn … GoTo …Синтаксис оператора следующийOn числовое_выражение GoTo список_меток

присущее интервалу [0, 255] список меток, отделенныхесли результат не целое число, друг от друга запятымито оно округляется

Числовое выражение округляет порядковый номер метки в спи-ске, которой будет передано управление.

Если числовое выражение равно 0 или больше количества меток в списке, выполняется оператор, следующий за On … GoTo. Если чис-ловое выражение < 0 или > 255, диагностируется ошибка.

On … GoSub …оператор аналогичен предыдущему.On числовое_выражение GoSub список_имен_подпрограмм

(включенных в тело процедуры)On Error …Перехват ошибок периода выполнения следует предусмотреть на

этапе разработки приложения. Для этого создаются специальные про-цедуры – обработчики ошибок (error handlers). Все ошибки периода выполнения можно разделить на две группы: ожидаемые, обработка которых предусмотрена разработчиком, и неожиданные, появление которых не всегда могут предвидеть даже опытные программисты.

Ожидаемые ошибки времени выполненияОбработка ошибок производится в три этапа: подготовка перехвата; проверка и устранение ошибки; продолжение выполнения программы.

Page 66: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

66

Подготовка перехватаПервым шагом является расстановка «ловушек». В Visual Basic

для этого предназначен оператор On Error.Этот оператор имеет три модификации:

On Error Resume Next – если возникает ошибка выполнения про-граммы, то действие передается оператору, следующему за тем в котором произошла ошибка.On Error GoTo метка – в этом случае при обнаружении ошибки управление передается оператору с указанной меткой.On Error GoTo 0 – отключает любой активизированный обработ-чик в текущей процедуре.Выполнение оператора On Error активизирует режим обработки

ошибок. Это означает, что при возникновении ошибки периода вы-полнения, после ввода в программу этой строки, выполняется преду-смотренная в программе процедура обработки ошибки. Выполнение программы не прерывается и стандартное сообщение об ошибке не выводится.

Проверка и устранение ошибкиОператор On Error не выполняет непосредственно никакой об-

работки ошибок, а лишь передает управление ответственному за об-работку ошибок фрагменту программы. Для обеспечения перехвата всех ошибок в процедуре оператор On Error, по возможности, должен находиться в самом ее начале.

Обработка ошибки должна выполняться сразу после ее обнару-жения. Сначала следует установить тип ошибки. Для этого в Visual Basic существует объект Err, свойство которого Number содержит код последней возникшей ошибки.

Список кодов ошибок, которые можно перехватывать и обраба-тывать, вы найдете в системе справок Visual Basic. После определения типа ошибки, по ее коду (свойство Number объекта Err) следует попы-таться устранить ошибку или обработать ее так, чтобы она не мешала выполнению программы.

При этом конструкция процедуры должна быть следующаяSub имя процедурыOn error goto Met1…………………………Met2:Exit subMet1:

Page 67: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

67

Resume met2End subВнутри процедуры обработки ошибок обычно организуется вы-

вод сообщения. При этом можно воспользоваться стандартным со-общением, которое хранится в свойстве Description объекта ( Err.description)

Для определения кода ошибки можно воспользоваться свойством Number объекта Err (Err. Number), но можно сформировать собствен-ное сообщение об ошибке.

Пример:Met1: T=” Вы допустили ошибку” +vbcrlfT=t+ Err.description+ vbcrlfT=t & Err.numberMsgbox tResume met2Продолжение выполнения программыЗавершив обработку ошибки, следует продолжить нормальное

выполнение программы. Ключевое слово Resume позволяет вернуть-ся в строку, вызвавшую ошибку, для ее повторного выполнения, а опе-ратор Resume Next возвращает в следующую за строкой с ошибкой строку.

Оператор If … then …В свою очередь, управляющие операторы if бывают двух видов:

If...Then If...Then...Else Конструкция If... Then Конструкция If.. .Then применяется в том случае, когда необхо-

димо выполнить один или группу операторов при соблюдении опре-деленного условия, то есть когда значение заданного условия равно True. Существует две разновидности данного оператора: одностроч-ный и многострочный. Однострочный оператор имеет следующий синтаксис:

IF условие Then конструкция В этом операторе условие и выполняемые при соблюдении усло-

вий действия располагаются в одной строке. В том случае, если при выполнении условия требуется выполне-

ние блока операторов, используется многострочный оператор, имею-щий следующий синтаксис:

Page 68: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

68

IF условие Then конструкции End If Конструкция If... Then... Else Конструкция if.. .Then.. .Else аналогична конструкции if...Then,

но позволяет задать действия, исполняемые как при выполнении условий, так и в случае их невыполнения.

Конструкция имеет следующий синтаксис: IF условие Then Конструкции для обработки истинного условия Else Конструкции для обработки ложного условия End If Ключевые слова IF и End if имеют тот же смысл, что и в конструк-

ции If...Then. Если заданное в конструкции условие не выполняется (результат проверки равен False), и конструкция содержит ключевое слово Else, Visual Basic выполнит последовательность конструкций, расположенных следом за Else. После чего управление перейдет к конструкции, следующей после End If.

Команда if может проверить только одно условие. Если вам потре-буется осуществить переход управления в зависимости от результатов проверки нескольких условий, то такая возможность существует. До-полнительное условие можно задать с помощью оператора Elseif. Оно будет анализироваться только в том случае, если предыдущее условие ложно. Например:

If x > 0 Then Label1.Caption = «Значение положительное» Else lf x = 0 Then Label1.Caption = «Значение равно 0» Else Labell.Caption = «Значение отрицательное» End If Конструкция Select Case Конструкция Select case позволяет обрабатывать в программе

несколько условий, и аналогична блоку конструкций if.. .Then.. .Else. Эта конструкция состоит из анализируемого выражения и набора операторов case на каждое возможное значение выражения. Работает эта конструкция следующим образом. Сначала Visual Basic вычисля-ет значение заданного в конструкции выражения. Затем полученное

Page 69: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

69

значение сравнивается со значениями, задаваемыми в операторах case конструкции. Если найдено искомое значение, выполняются команды, приписанные данному оператору case. После завершения выполнения конструкций управление будет передано конструкции, следующей за ключевым словом End Select.

Синтаксис конструкции Select Case следующий: Select Case сравниваемоеЗначение CASE значение1 конструкция1 CASE значение2 конструкция2 . . . End Select Замечание Обратите внимание, что Select Case может выполнить не более

одной из содержащихся в ней последовательностей конструкций. По-сле того как одно из условий оказалось равно True, и была выполнена соответствующая последовательность конструкций, Select Case завер-шит свою работу. Остальные условия проверяться не будут.

2.5. Циклы В программах Visual Basic для выполнения повторяющихся дей-

ствий используются циклы. Они бывают следующих типов: For...Next Do. . . Loop Цикл с использованием конструкции For...Next Конструкция For...Next выполняет последовательность команд

определенное число раз. Такую конструкцию называют циклом, а вы-полняемые ею программные коды – телом цикла.

Синтаксис конструкции For.. .Next следующий: For счетчик = начЗначение То конЗначение [Step шаг] конструкции Next[счетчик] счетчик – определяет имя переменной, которая будет «считать»

количество выполнений цикла.начЗначение – указывает числовое значение, которое присваива-

ется переменной-счетчику перед первым проходом цикла. Цикл выполняется до тех пор, пока значение счетчика не превы-

сит конечного значения, указанного после ключевого слова то. После

Page 70: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

70

каждого прохода цикла значение счетчика изменяется на величину шаг, указанную за ключевым словом step.

Ключевое слово Next обозначает конец тела цикла и является обязательным.

Перед каждым проходом цикла Visual Basic сравнивает значения счетчика и аргумента конЗначение. Если значение счетчика не превы-шает установленного значения конЗначение, выполняются конструк-ции тела цикла. В противном случае управление переходит к следую-щей за Next конструкции.

Шаг изменения счетчика может быть отрицательным. В этом слу-чае цикл будет выполняться до тех пор, пока конЗначение больше 1. Если значение шага цикла отрицательно, то начальное значение счет-чика должно быть больше конечного.

Ключевое слово step можно опустить. В этом случае значение шага по умолчанию принимается равным 1.

Операторы For … Next могут быть вожены друг в друга.For I = 1 To NFor J = 1 To Mконструкции Next JNext IСначала закрываются внутренние циклы, затем внешние.Если между операторами Next нет других операторов, то можно

писать Next J , I.Цикл с использованием конструкции Do...Loop Цикл, задаваемый конструкцией Do... Loop, является наиболее

общим оператором. Оператор используется в двух формах, каждая из которых имеет две модификации.

1. Цикл с предусловиемDo While условие конструкции Loop Аргумент конструкции условие является логическим выражени-

ем, значение которого проверяется перед каждым проходом цикла. Если это значение равно True, то выполняется последовательность команд, которые расположены между Do while и ключевым словом Loop. Эти конструкции образуют тело цикла. Если при очередном проходе цикла условие равно False, то происходит выход из цикла и управление передается конструкции, следующей за Loop.

Page 71: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

71

Do Until условие конструкции Loop Цикл повторяется до тех пор, пока логическое условие, указанное

за ключевым словом Until не станет равным True (т.е. пока условие не выполняется).

Возможна ситуация, при которой операторы цикла не выполня-ются ни разу. Она возникает в том случае, если при первой проверке условия оно оказывается ложным.

2. Цикл с постусловиемОн отличается от рассмотренного ранее местом расположения

условия. Если в предыдущей конструкции условие, по которому вы-полняется цикл, расположено в заголовке, то в этой конструкции условие располагается в конце цикла:

Do конструкции Loop While условие и Do конструкции Loop Until условие При использовании этой формы оператора тело цикла выполня-

ется хотя бы один раз, после чего осуществляется проверка заданного условия.

2.6. Работа с мышью – события и процедуры их обработки

При работе с мышью необходимо распознавать и обрабатывать события, которые возникают при нажатии клавиши мыши, при пере-мещении, при щелчках по клавишам мыши, а также при работе с мы-шью в том случае, когда при этом оказываются нажатыми клавиши клавиатуры.

Событие: нажатие клавиши мышиPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X

As Single, Y As Single)Параметр Button определяет, какая из кнопок мыши нажата:1 – левая 2 – правая4 – средняя

Page 72: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

72

Параметр Shift, какая изклавиш Shift, Ctrl или Alt нажата ( при нажатии на ту или иную клавишу мыши)

0 – ни одна из перечисленных клавиш не нажата1 – Shift2 – Ctrl 4 – Alt,

если нажато несколько клавиш, то параметр Shift определяется как сумма чисел соответствующих этим клавишам;

Х, У – координаты курсора мыши на форме (в единицах, опреде-ленных свойством ScaleMode).

Пример: допустим, необходимо реализовать «прыжок» некоторо-го элемента на форме (например, img1 – картинки) в то место, где на-ходится курсор, тогда на нажатие правой клавиши мыши необходимо написать следующую процудуру:

Private Sub Form_MouseDown (Button as Integer, Shift as Integer, X as Single, Y as Single )

If Button = 2 ThenImg1.Move X , YEnd IfEnd SubСобытие: «отжатие» (отпускание) клавиши мышиPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer,

X As Single, Y As Single)Параметры Button, Shift,x,y имеют те же значения, что и в про-

цедуре MouseDownСобытие перемещение мышиPrivate Sub Form_MouseMove(Button As Integer, Shift As

Integer, X As Single, Y As Single) Параметр Button в этой процедуре может принимать не только

значения 0,1,2,4 (как в процедурах Mouse Up и Mouse Down), но и значения, определяемые комбинациями этих клавиш, (3 – нажаты ле-вая и правая).

Событие: перемещение объектов DragDrop, DragOver и метод Drag

Событие DragDrop (тащи и брось) генерируется при перетягива-нии и бросании объекта мышью.

Синтаксис описания процедуры следующий:Private Sub Form_DragDrop(Source As Control, X As Single, Y

As Single),

Page 73: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

73

где Source – имя элемента управления, который перетаскивается и бросается на объект;

X, Y – координаты курсора в момент бросания элемента управ-ления.

Если необходимо, чтобы элемент управления перетаскивался автоматически, то свойству DragMode элемента задать значение 1 – Automatic (по умолчанию 0 – Manual).

Если ограничиться только этим, то рамка объекта будет переме-щаться, а при «отпускании» клавиши мыши, объект не переместится в новое место.

Пример:Для перетаскивания объекта по формеPrivate Sub Form_DragDrop(Source As Control, X As Single, Y As

Single) Source.Move X,YTxt1.text = Source.tagEnd SubКурсор мыши, при бросании объекта, будет находиться в центре

рисунка, если написать так:Source.Move X– Source.Width/2 , Y– Source.Hight/2Событие: перемещение объектов на формеСобытие DragOver ( как для формы, так и для другого объекта

формы) срабатывает в том случае, когда через объект «перетягивают» другой объект.

В частности, для события «протаскивания» по форме срабатыва-ет процедура

Private Sub Form_DragOver(Source As Control, X As Single, Y As Single, State As Integer)

Пример: Предположим, что на форме имеется окно вывода (textBox – txtwyw), в котором должен идти текст комментария: какой объект перетаскивается и можно ли его бросать в месте положения курсора. Для этого на событие DargOver формы напишем процедуру:

Private Sub Form_DragOver( Source, X,Y, State)Dim tinfo as string, tt as stringif State = 1 then tt=”Нельзя” else tt=”Можно”tinfo=”Перетаскиваем”+ Source.Tag(Предварительно в свойстве Tag в окне свойств ввести нужный

текст)

Page 74: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

74

tinfo=tinfo+”через форму”+”Бросать” + tttxtwyw.Text=tinfoend Sub 0, если с другого объекта (для формы – на свободное место)

State = 1, если с объекта на другой (и шага внутри другого объекта) 2, если движение внутри объекта (для формы с пустого ме-

ста, на пустое)

2.7. Событие клавиатуры и процедуры их обработкиРазличают три события, связанные с работой клавиатуры:

KeyDown – нажатие клавиши KeyUp – отпускание клавиши KeyPress – нажать и отпустить клавишу с символом, для которого существуют ASCII –кодДля того, чтобы эти события отслеживались постоянно необходи-

мо свойству формы KeyPreview присвоить значение True.Событие KeyDownПроцедура обработки этого события имеет вид:Sub Form_KeyDown( KeyCode as Integer, Shift as Integer)Параметр KeyCode – код нажатой клавиши, причем, только для

латинских прописных букв A-Z, и цифр 0-9 этот код совпадает с ASCII -кодом

Совсем необязательно знать эти коды для клавиш. В VB имеют-ся специальные константы, наименование которых формируется по очень простому алгоритму. Константа начинается с VbKey.... наиме-нование клавиши

Пример: раздел KeyCode ConstantsVbKeyTab VbKeyF1 – VbKeyF16VbKeyBack VbKey0– VbKey9, VbKeyA – VbKeyZVbKeyShift VbKeyNumpat0 – VbKeyNumpat9VbKeySpace VbKeyAdd Sepurator (Enter)Параметр Shift определяет, какие из клавиш Shift, Ctrl, Alt были

нажаты в дополнение к клавише KeyCodeShift = 1 – 0-й разрядCtrl = 2 – 1 -й разрядAlt = 4 – 2-ой разряд Все возможные сочетания этих клавиш описываются значениями

0–7

Page 75: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

75

Событие KeyUpПроцедура обработки этого события имеет вид, аналогичный

процедуре обработки события KeyDownSub Form_KeyUp( KeyCode as Integer, Shift as Integer)Значения параметров KeyCode и Shift точно такие же, как и в про-

цедуре обработки события KeyDown.Событие KeyPress Срабатывает только тогда, когда нажата и отпущена клавиша,

символ которой имеет ASCII-код.Процедура обработки этого события имеет вид:Sub Form_KeyPress (KeyAscii as Integer)Эта процедура имеет единственный аргумент KeyAscii - Ascii код

нажатой клавиши.Если символ, соответствующей клавиши, не имеет ASCII кода,

событие не проходит.Нажатие клавиши можно имитировать. Для этого используется

оператор SendKeys. Синтаксис оператора следующий: SendKeys string[, wait]Здесь string – последовательность символов, соответствующая

нажатию клавиш для активного в данный момент приложения.Wait =True – последовательность клавиш обрабатывается активным

приложением, затем управление передается программе-передатчику.Wait = False – управление передается программе-передатчику

сразу же после посылки нажатой клавиши.Таблица 3.6

Соответствие символов клавишам

Клавиша СимволShiftCtrlAlt

+ ^ %

BackspaceBreakDelete↑ ↓ TabF1...F16← →

⎨BS⎬ ⎨Break⎬ ⎨Del⎬ ⎨Up⎬ ⎨Down⎬ ⎨Tab⎬ ⎨F1⎬ ... ⎨F16⎬ ⎨Right⎬ ⎨Left⎬

Page 76: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

76

Приведем пример реализации передачи строки из одного прило-жения в другое (лабораторная работа №9).

Для запуска приложения из существующего проекта воспользуй-тесь функцией Shell. Синтаксис вызова функции следующий:

Shell(Path, Тип окна), где Path – путь к вызываемому приложению,Тип окна – константа, определяющая тип окна, в котором загру-

жается вызываемое приложение.Для передачи фокуса приложению, в которое передаётся строка,

следует воспользоваться командой:AppActivate <заголовок формы, вызываемого приложения>,

<ожидание>Тогда для передачи данных можно написать следующий код:ID=Shell(«D:\ VB\Priem.exe», VBNormalFocus)AppActivate «priemnik», TrueSendKeys «^+{home}»SendKeys «{delete}»SendKeys «stroke»В результате в вызванный проект-Priem.exe , будет передано сло-

во «stroke», предварительно предыдущие данные будут удалены.

2.8. Лабораторные задания для раздела 2Лабораторная работа 2.1 (5)Программирование алгоритмов разветвленной структурыВарианты заданий, каждое из которых состоит из двух задач, при-

ведены в Приложении 1.Для решений обеих задач следует разработать единый проект,

удовлетворяющий следующим требованиям:в проекте должна быть одна форма, на которой в двух фрэй-

мах должны быть расположены элементы, относящиеся к каждой за-даче соответственно;

условия задач должны быть выведены в метках (элементах Label);

ввод данных должен осуществляться с использованием эле- ментов TextBox;

обязательна проверка введенных данных на некорректность (в процедурах обработки событий Validate элементов TextBox);

Page 77: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

77

при нажатии на командную кнопку (CommandButton) с над- писью «Выполнить» должно осуществляться решение соответствую-щей задачи;

при нажатии на командную кнопку (CommandButton) с над- писью «Выход» проект должен прекратить работу.

Лабораторная работа 2.2 (6)Программирование алгоритмов циклической структурыВарианты заданий, каждое из которых состоит из двух задач, при-

ведены в Приложении 2. Для решений обеих задач следует разработать единый проект,

удовлетворяющий следующим требованиям:в проекте должны быть три формы: по одной форме для каждой задачи и форма-диспетчер, предназначенная для вызова остальных форм;условия задач должны быть выведены в метках (элементах Label) соответствующих форм;

Рис. 2.4. Пример интерфейса лабораторной работы 2.1

Page 78: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

78

Рис. 2.5a. Пример интерфейса формы-диспетчера лабораторной работы 2.2

Рис. 2.5b. Пример интерфейса задачи 1 лабораторной работы 2.2

Page 79: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

79

для первых задач задания необходимо предусмотреть ввод числа, определяющего количество знаков после запятой при выводе ре-зультата решения;для вторых задач задания необходимо предусмотреть возможность выбора способа задания последовательности чисел: ручной ввод или генерирование случайным образом при заданных пользовате-лем границах интервала допустимых значений (вне зависимости от способа задания элементов последовательности, они должны быть выведены на форме);проверка введенных данных на некорректность – должна осущест- вляться с помощью обработчика ошибок (оператор On Error …); обязательным является использование функции MsgBox; не допускается использование функций обработки строковых дан- ных и массивов данных;результат решения должен выводиться при нажатии на командную кнопку (CommandButton) с надписью «Run»;при нажатии на командную кнопку (CommandButton) с надписью «Exit» проект должен прекратить работу.

Рис. 2.5с. Пример интерфейса задачи 2 лабораторной работы 2.2

Page 80: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

80

Лабораторная работа 2.3 (7)Перемещение объектов по формеРазработать проект, являющийся развитием проекта лаборатор-

ной работы 1.3, и предназначенный для реализации следующих до-полнительных позиций:

при щелчке правой клавишей мыши, по пустому месту фор- мы видимый рисунок должен переместиться таким образом, чтобы курсор мыши оказался в середине рисунка;

при перемещении видимого рисунка левой клавишей мыши в элементе TextBox должна выводиться информация о том, какой ри-сунок перемещается (содержимое свойства Tag рисунка), а также ин-формация о том, можно или нельзя отпускать клавишу мыши (бросать рисунок) при текущем положении перемещаемого рисунка. Отпускать клавишу можно только в том случае, когда курсор мыши находится над пустым местом формы.

Рис. 2.6. Пример интерфейса лабораторной работы 2.3

Лабораторная работа 2.4 (8)Графический редакторРазработать проект с интерфейсом, аналогичным изображенному

на рис. 2.7, и предназначенный для реализации следующих функций графического редактора:

Page 81: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

81

цвет линии должен определяться цветом фона метки (элемент управления Label), по которой был произведен щелчок левой клави-шей мыши;

метки для задания цвета должны составлять массив элемен- тов управления;

ширина линии должна задаваться значением полосы прокрут- ки (элемент управления ScrollBar);

одна из меток должна иметь цвет фона для реализации функ- ции «ластика»;

предусмотреть возможность формирования цвета, не пред- ставленного в заданной палитре (либо с использованием элементов управления ScrollBar, определяющими интенсивности каждого из трех основных цветов, либо с использованием элемента управления Common Dialog).

Рис. 2.7. Пример интерфейса лабораторной работы 2.4

Page 82: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

82

3. ОРГАНИЗАЦИЯ ДАННЫХ В VISUAL BASIC

3.1. МассивыМассив – это набор элементов определенного типа, каждый из

которых имеет свой порядковый номер, называемый индексом. Раз-личают статические и динамические массивы.

Границы статического массива устанавливаются на этапе разра-ботки и могут изменяться только в новой версии программы.

Динамические массивы изменяют свои границы в ходе выполне-ния программы. С их помощью можно динамически задавать размер массива в соответствии с конкретными условиями. Однако следует учесть, что работа с динамическими массивами требует дополнитель-ных затрат на программирование.

Для объявления массива используется оператор Dim с указанием в круглых скобках после имени массива его максимального индекса;

Dim Name(150) As StringDim Name (10, 25) As StringИндексирование с нуляПри использовании массивов не следует забывать, что в Visual

Basic индексирование всегда начинается с нуля, т.е. индекс 0 обозна-чает первый элемент массива, индекс 1 – второй и т.д.

Option BaseОператор Option Base позволяет задать индексацию массива с 1:‘General Declarations Option Base 1Этот оператор должен находиться в секции (General Declarations)

формы, модуля, класса. Допустимыми значениями для Option Base яв-ляются только 0 и 1.

Этот оператор служит для того, чтобы обеспечить совместимость Visual Basic с другими диалектами Basic, индексация в которых на-чинается с 1.

Динамические массивыИногда при объявлении массива его размер не известен. В этом

случае следует объявлять динамический массив, что позволяет изме-нять его размер или размерность во время выполнения приложения. Динамический массив создается в два этапа. Сначала массив опреде-ляют в секции (General Declarations) формы без указания размера:

(General Declarations)

Page 83: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

83

Dim aArray( ) As VariantЗатем с помощью оператора ReDim устанавливают фактический

размер массива:ReDim aArray(23,65)В отличие от обычного описания переменных оператором Dim,

оператор ReDim используется только в процедурах. При этом тип дан-ных указывать не обязательно, особенно если он уже определен опе-ратором Dim. Вы можете использовать оператор ReDim для измене-ния числа элементов или размерности массива. Однако вы не можете объявить массив с данными одного типа, а затем использовать ReDim для приведения массива к другому типу, за исключением случая, если массив содержит переменные типа Variant. В этом случае приведение массива к явному типу данных допустимо.

Таким образом, размерность массива можно при необходимости изменить. Но тогда возникает опасность потерять его содержимое, так как после изменения размерности элементам массива присваиваются значения по умолчанию.

Однако Visual Basic предоставляет возможность изменять раз-мерность массива без потери содержимого. Для этого следует исполь-зовать ReDim вместе с ключевым словом Preserve:

(General Declaration)Dim aArray () As Variant Private Sub Comroandl_Click( )ReDim Preserve aArray (50, 15)‘КодEnd SubИспользование с оператором ReDim зарезервированного слова

preserve позволяет сохранить содержимое массива при изменении его размера или размерности. Но следует учитывать, что для многомер-ных массивов можно изменять только последнее измерение.

Для определения нижней границы индекса используется функ-ция LBound (имя_массива, номер индекса).

Для определения верхней границы индекса используется функ-ция UBound (имя_массива, номер индекса).

В процессе работы программы может увеличиваться занимаемая массивом память. Если массив является динамическим, то его можно удалить из памяти, используя оператор Erase.

Если же массив не был динамическим, то команда Erase не удаля-ет массив из памяти, а обнуляет его элементы.

Page 84: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

84

Массивы элементов управленияСоздание и удаление массивов элементов управления в окне

формыПри выполнении лабораторных работ каждый сталкивался с та-

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

TxtVvod(0)TxtVvod(1)Т.е. был организован массив элементов управления. Число в скоб-

ках – номер элемента управления в массиве (причем, нумерация про-изводится не с 1, а с 0) – хранится в свойстве Index. Если это свойство пустое, то элемент не принадлежит массиву.

Если теперь (после организации массива управляющих элемен-тов) зайти в окно кода, то в выпадающем списке объектов будет при-сутствовать только название массива, и когда выбирается какое-либо событие для этого элемента управления, то заготовка (или шаблон) для процедуры обработки соответствующего события выглядит сле-дующим образом:

Private Sub txtVvod_Change(Index as Integer)End SubТ.е. эта процедура уже имеет параметр – номер элемента в мас-

сиве управляющих элементов. Причем, этот индекс определяется ав-томатически – по тому, с каким из элементов массива работает поль-зователь.

Private Sub txtVvod_Change(Index as Integer)Dim s as string , s1 as stringIf index = 0 then s1 = «0» else s1 = «1»S = «корректируется содержимым элемента»MsgBox (s+s1)End SubЕсли необходимо сделать так, чтобы элемент управления, вхо-

дящий в массив, оказался не принадлежащим этому массиву, то это делается в два этапа:

изменяется его имя (свойство Name), свойство индекса принимает значение пустой строки.

Page 85: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

85

Действия с массивами элементов управления в программахЕсли массив элементов управления создан, то программно можно

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

Для создания нового элемента массива используется оператор Load имя_объекта.

Для удаления элемента массива используется оператор UnLoad имя_объекта.

Вновь создаваемый элемент массива копирует все свойства эле-ментов этого массива, кроме Index u TabIndex (номер перехода фокуса при нафатии клавиши Tab).

По умолчанию свойство Visible вновь создаваемого элемента равно False. Поэтому для того чтобы он был виден, свойству Visible следует присвоить значение True. Поскольку все остальные свойства копируются, то вновь создаваемые элементы будут помещатся в одно и то же место и виден будет только последний (если не предприни-мать против этого никаких мер). Для того чтобы элементы смещались друг относительно друга, используется метод Move, который имеет 1 обязательный и 3 не обязательных параметра:

Move left[,top [, width[,height]]]Left, top – координаты элемента управления на форме (в едини-

цах, определенных в ScaleMode), Width, Height – размеры элемента управления.

Пример: создание таблицы чисел от 1 до n2.1 2 34 5 67 8 9

Для этого создадим TextBox с именем TXT(0) и свойствами:Height=500Width=500BackStyle=1 – фиксированная границаДалее опишем переменные:DefStr TDefInt I-NOption ExplicitЗатем на событие загрузки формы пропишем процедуру:

Page 86: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

86

Private Sub Form_Load()Dim tz,tv,ts,I,N, i_n, j_n, zw, zh, kTz=” ”Ts= «»Tv= inputBox(ts, tz)N=Val(Trim(tv))Zw=txt(0).WidthZh=txt(0).HeightWindowstate=2I_n=ScaleWidth/2-(n/2)*zwJ_n= ScaleHeight/2-(n/2)*zhK=-1For I=1 to NFor J=1 to N K=K+1 If K<>0 then Load txt(K) Txt(k)= «» Txt(k).Move j_n+zw*(j-1), i_n+zh*(i-1) Txt(k).visible=TrueNext J, IEnd Sub

3.2. Использование графикиВ Visual Basic существует возможность прорисовки графических

элементов: линий окружностей, квадратов и точек. Но прорисовка этих элементов возможна только на форме и на управляющем элемен-те PictureBox. Существуют два способа прорисовки – с помощью гра-фических методов и с помощью элементов управления Line и Shape.

Гафические элементы управленияНа панели элементов управления имеются кнопки, позволяющие

создавать в форме простые элементы графики: Таблица 3.1

Графические элементы управления

Кнопка Название Назначение Line (Линия) Создает в форме линию

Shape (Контур) Создает в форме контуры

Графические элементы управления могут помещаться как на фор-ме, так и в графическом окне.

Page 87: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

87

Элемент управления LineТаблица 3.2

Свойства элемента управления LineСвойство Описание

BorderColor Цвет линии

BorderStyle

0 прозрачная1 сплошная2 штриховка3 пунктирная4 штрихпунктирная5 штрихпунктирная с двумя точками

BorderWidth Ширина линии в пикселях

DrawMode Определяет, каким образом будет накладываться изображе-ние линии поверх фона ( или другого рисунка) при 13 цвет линии определяется свойством BorderStyle

Х1,Х2 Координаты по горизонтали концов линииY1,Y2 Координаты по вертикали концов линии

Элемент управления ShapeTaблица 3.3

Свойства элемента ShapeСвойство Описание

Shape

0 прямоугольник (по умолчанию)1 квадрат2 овал3 окружность4 прямоугольник с закругленными углами5 квадрат с закругленными углами

BackColor Цвет фона

BackStyle 0 Transparant – прзрачный цвет фона формы или PictureBox1 opaque [oup ik] ( цвета непрозрачные)

FillColor Цвет узора заливки

FillStyle

Номер узора заливки0 сплошное заполнение1 нет заполнения2 горизонтальные линии3 вертикальные линии4 по диагонали слева на право5 по диагонали справо на лево6 горизонтально-вертикальная7 штриховка по диагонали в обоих направлениях

Page 88: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

88

Гафические методыДля прорисовки какой-либо фигуры можно применить соответ-

ствующий метод.Точка Метод Pset(x,y)[,c]где:(x,y) координаты точки в заданной в Scale системе координат.С – цвет ( если не указывать, то точка будет окрашена цветом объ-

ект.ForeColorМетод Point (x,y) – определяет цвет, в который окрашена точка с

координатой (х,y).Линия и прямоугольникМетод Line – используется для вычерчивания линий и прямоу-

гольников.Толщина линий задается значением свойства DrawWidth объекта.Тип линии задается значением свойства DrawStyle.Свойство DrawMode определяет, каким образом будет вычерчи-

ваться линия на фоне (особенно важно при анимации).Синтаксис метода Line следующий: объект.Line[(x1,y1)] – (x2,y2)

[,цвет][,B] ([BF]).(x1,y1) – координаты начала линий (если не заданы, то текущие

координаты курсора).(x2,y2) – координаты конца линии (обязательный параметр).Цвет – если не задан, то определяется свойством ForeColor объ-

екта.В – вместо линии будет нарисована рамка прямоугольника с коор-

динатами пртивоположных вершин (x1,y1) и (x2,y2).BF– закрашенный прямоугольник, «внутренность» которого бу-

дет иметь цвет фона, определяемый свойством FillColor, и рисунок заполнения, определяемый свойством FillStyle.

Окружность Метод Circle – применяется для вычерчивания окружностей, эл-

липсов, их дуг и секторов.Синтаксис оператора Circle следущий:Circle (x,y),[радиус], [цвет ], [начало дуги],[конец дуги], (,аспект)Обязательными параметрами являются(x,y) –координаты ценра окружности,радиус – радиус окружности,

Page 89: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

89

цвет – если не задан явно, то определяется свойством объекта ForeColor,

начало – начальный угол (в радианах) по умолчанию 0,конец – конечный угол (в радианах) по умолчанию 2π (направле-

ние от начала к концу – против часовой стрелки).Если и «начало» и «конец» заданы со знаком минус, то рисуется

не дуга, а сектор. Если рисуется замкнутая линия (окружность, эллисп или сектор),

то её «внутренность» будет заполнена в соответствии со значением свойства FillColor – цвет заполнения и

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

Необязательный параметр <аспект> используется для вычерчи-вания эллипсов и их частей: дуг или секторов. По умолчанию аспект имеет значение 1, что соответствует окружности (равенству полуосей эллипса).

Если аспект >1, то Ry=радиус эллипс вытянут по оси Y.Если аспект <1, то эллипс вытянут по оси X.Толщина линии и ее тип определяются соответственно свойства-

ми DrwaWidth и DrawStyle. При работе с графическими изображениями следует помнить о

свойстве AutoRedraw, которое позволяет восстановить изображение при сворачивании формы в панель задач и последующем ее восста-новлении. Если значение этого свойства изменить программно, то те графические элементы, которые были построены при значении AutoRedraw=False, при восстановлении изображения пропадут. Вос-становятся только те объекты, которые были сделаны при значении AutoRedraw=True.

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

SavePicture объект.Image, «полное имя файла».Здесь «полное имя файла» – либо текстовая константа, либо стро-

ковая переменная. Расширение файла можно задать либо .bmp, либо .jpg.

Построение графиков функцийУстановление размеров окна (Масштабы рисунков)В разделе 1 уже упоминалось, что и у формы, и у любого объекта

на форме есть координаты, определяющие его положение – Left, Top, и размеры – Width и High (для формы свойства Left и Top определяют

Page 90: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

90

её положение на экране). Но кроме этих свойств у формы и графи-ческого окна есть свойства, которые позволяют задавать собстенную систему координат внутри объекта.

Это свойстваScaleLeft, ScaleTop, ScaleWidth и ScaleHeightЕдиницы, в которых эти параметры измеряются, задаются значе-

ниями свойства ScaleMode соответствующего объекта:1 твипсы (в 1 дюйме 1440 твипсов),2 точки (72 на дюйм),3 пиксели (число определяется автоматически),4 символы (12 точек в высоту и 20 точек в ширину),5 дюймы,6 миллиметры,7 сантиметры.

Координата любой точки внутри окна (или формы) определяется следующим образом:

х‘= ScaleLeft+xy’ = ScaleTop+yЗадавая значения перечисленным свойствам, можно задать соб-

ственную систему координат. Но можно задать систему координат, ис-пользуя свой метод Scale объекта. Синтаксис этого метода следующий:

Объект. Scale[(left, top) – (right, Bottom)] координаты координаты в новой системе в новой системе верхнего левого правого нижнего угла окна угла окнаЕсли параметры в новой системе координат метода Scale не ука-

зывать, то восстанавливается система координат принятая в VB по умолчанию:

ScaleLeft=0; ScaleTop=0ScaleWidth=4425; (для 14 дюймового монитора)Scale Height=7485

ScaleLeft ScaleWidth

ScaleTop ху

ScaleHeight

Page 91: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

91

При этом начало координат находится в левом вехнем углу объ-екта.

Если новая система координат имеет другое направление (напри-мер, левый нижний угол), то Scale Height в этом случае отрицательно.

При вводе графических изображений часто возникает необходи-мость сопровождать их надписями, но для этого надо уметь позицио-нировать курсор. Это делается с использованием свойства CurrentY и Current X объекта. Значения этим свойствам задаются в новой систе-ме координат.

При работе с текстом внутри графического окна используются встроенные функции, которые позволяют определить высоту текста и его ширину (но в единицах, заданных в ScaleMode). Это функции

TextWidth (t) высота строки текста tTextHeight (t) ширина строки текста tПри переходе к новой системе координат эти парамтры необходи-

мо пересчитать в новых единицах измерения.

Рис. 3.3. График функции в новых координатах

3.3. Управляющий элемент FlexGrid (Сетка)Используется для работы с данными табличного вида. Если этого

элемента нет на панели элементов управления, то его следует доба-вить туда: Progect/Companents.

y = 1/x step 0,1

(-5, 20) (5, 20)

(-5, -20) (5, -20)

Page 92: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

92

Этот элемент управления представляет собой таблицу (рис. 3.4), состоящую из строк и столбцов, на пересечении ко-торых находятся ячейки (cell). В таблице можно зафикси-ровать несколько строк и не-сколько столбцов, формируя, таким образом, заголовок и бо-ковую часть таблицы.

Предусмотрена возможность выделения элементов, формиро-вания цвета для фиксированных строк и столбцов, для выделенных строк и столбцов. Формирования размера шрифта и его цвета. Но са-мое главное, для чего служит таблица – это ввод данных и их вывод в форме таблицы.

Свойства FlexGridБольшинство свойств этого элемента управления аналогично

свойствам других элементов управления, с которыми вы уже познако-мились: left , top , height , widht , enabled.

Но есть свойства, которые могут быть определены только про-граммным путем.

Однако этот элемент имеет много специфических свойств, о ко-торых мы будем говорить. Причем, эти свойства можно определять двумя способами:

Рис. 3.4. Элемент FlexGrid

Рис. 3.5. Окно свойств, вызвынное через позицию Custom

Page 93: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

93

в окне Propeties, находя строку, соответствующую определенному свойству.в окне Propeties выбрать позицию Custom (рис. 3.5). В этом случае появится окно свойств с закладками:

General (общие), Style (стиль), Font (шрифты), Color (цвета), Picture (рисунки).

Таблица 3.4Свойства элемента управления FlexGrid

Rows Количество строк таблицыCols Количество столбцов таблицы

FixedRows Количество зафиксированных строк таблицы (число строк в заголовке таблицы)

FixedCols Количество зафиксированных столбцов таблицы (число строк в «боковике» таблицы)

ScrollBars Будут добавлены (в случае необходимости) полосы прокрутки

AllowBigSelection True/false допускается выделение целиком строк (столбцов) при щелчке по заголовку строки (столбца)

FillStile

Если необходимо, чтобы выделенная область была за-полнена одним и тем же содержимым (т.е. выделяется область, в одну из ее ячеек вводится некоторый текст и этот текст дублируется во всех ячейках области), то FillStile = 1 (Repeat)

AllowUserRezing Разрешает изменение размеров ячеек пользователем

HightLight0 – выделенная ячейка не отличается от других 1 – всегда отличается2 – при получении фокуса

FocusRect Вид ячейки, имеющий фокус, вся помечена цветом или только границы

GridLines Вид линий в рабочих ячейкахGridLinesFixed Вид линий в заголовке таблицы и «боковике»TextStyle Вид текста в рабочих ячейках

TextStyleFixed Вид текста в фиксированных ячейках (заголовок, боковик)

Нумерация строк и столбцов начинается с нуля.

Page 94: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

94

Свойства элемента FlexGrid, определяемые программно при-ведены в табл. 3.5.

Таблица 3.5Свойства элемента FlexGridопределяемые программно

Col Номер столбца текущей ячейкиRow Номер строки текущей ячейкиMouseRow MouseCol Текущие координаты курсора мышиColWidht(i) Ширина колонки с заданным номеромRowHeight (i) Высота строки с заданным номеромText Устанавливает (или возвращает) текст в текущей ячейке

TextMatrix(I,j) Устанавливает (или возвращает) текст ячейки с коорди-натами (I,j)

ColAligment Выравнивание в нефиксированных столбцахFixedAligment Выравнивание в фиксированных столбцахCellAligment Выравнивание в текущей ячейкеColSel, ColRow Для программного выделения ячеек внутри таблицы

Пользователь не может ввести текст в ячейку в процессе работы программы. Поэтому для того, чтобы можно было избежать это огра-ничение, применяют следующий прием:

рядом с сеткой организуют дополнительное поле ввода (например, TxtW, которому в окне свойств присваивают пустую строку). Да-лее на событие Click (или DblClick) сетки (т.е. на щелчок) пишут процедуру:

Private Sub grd1_Click ( )TxtW . Text = «»TxtW . SetFocus ‘ передается фокус полю вводаEnd Sub А на событие изменения содержимого поля ввода пишут проце-

дуру:Private Sub txtW_Change ( )Grd1 . Text = txtW . TextTxtW . Text = «»End Sub В результате, как только будет выбрана ячейка для ввода данных,

фокус будет передан полю ввода TxtW, и по мере ввода данных в это поле эти данные будут попадать в выбранную ячейку сетки.

Сортировка – одна из наиболее мощных возможностей элемента FlexGrid, позволяет сортировать строки по выбранным колонкам. Для

Page 95: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

95

этого необходимо указать номер колонки, по которой бодет проходить сортировка (grd1 . Col =2 – сортировка будет проходить по колонке с номером 2).

Предусмотренна возможность нескольких способов сортировки.Имя_сетки . Sort = числоВ зависимости от того, чему будет равно значение числа справа

от знака равенства:0 – нет сортировки1 – в порядке возрастания2 – в порядке убывания3 – по возрастанию, строки превращаются в числа4 – по убыванию, строки превращаются в числа5 – по возрастанию без учета регистра6 – по убыванию без учета регистра7 – по возрастанию с учетом регистра8 – по убыванию с учетом регистра

3.4. Элемент управления ListBox (Список)Списки используются тогда, когда пользователь должен выбрать

из фиксированного набора значений. Причём, все позиции списка ли-бо сразу видны на экране, либо становятся доступными с помощью полос прокрутки.

Свойства элемента управления ListBoxТаблица 3.6

Свойства ListBox

Sorted

Если Sorted = True , то элементы списка представляются сорти-рованными в соответствии с ASCII кодами. Если Sorted = False, то элементы списка представлены в том порядке, в котором они были введены

List Строковый массив, который содержит все элементы списка

Style

В зависимости от того, какое значение имеет свойство Style этого элемента, изменяется его внешний вид:StandardCheckBox

ItemData

Массив «ассоциированных» данных ( по умолчанию все элементы равны 0). Количество элементов равно количеству элементов спи-ска. Тип данных LongInteger (длинные целые). Например, в List – фамилии сотрудников, а в ItemData – их телефонные номера, кото-рые обрабатываются программно (в лабораторных в List () – имя самолета, в ItemData – бортовой номер)

Page 96: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

96

Columns

Управляет шагом колонок в списке. Если значение этого свойства равно 0, то все элементы выводятся в одну колонку (столбец). В противном случае будет выводиться заданное число колонок (появится полоса горизонтальной прокрутки)

MultiSelect Имеет 3 возможных значения (только для списков!!!) см. табл. 3.7

ListCount Количество элементов в списке (программно-управляемое свой-ство)

ListIndexСодержит номер выбранного элемента (если выбраны не-сколько элементов, то номер последнего из них) (программно-управляемое свойство)

NewIndex Номер последнего элемента, добавленного в список программноSelCount Количество выделенных элементов

Selected ( )Массив (доступно при MultiSelect ≠0)Selected (i) = True, если i-й элемент списка выделенSelected (i) = False, в противном случае

Text Определяется и в окне свойств, и программно – возвращает значе-ние выделенного элемента (символьное)

Список можно формировать в окне свойств (если выбрать свой-ство List в окне свойств, то открывается диалоговое окно, в котором можно вводить элементы списка по одному в каждой строке. Для перехода на новую строку надо нажать CTRL+Enter) и программно. Для этого существует метод AddItem. Синтаксис этого метода сле-дующий:

имяОбъекта.AddItem Значение (либо переменная символьного типа, либо текст в кавычках) [,номер ] (нумерация с 0.)

Таблица 3.7Значения свойства MultiSelect

Значение Тип выделения Описание

0 None Множественный выбор запрещен (можно выбрать только один)

1 SimpleПростое множественное выделение (щелчком мыши выделяются элементы списка или клави-шей пробел)

2 Extended

Расширенное выделениеА)выделить первый, щелкнуть по последнему при нажатой клавише Shift – Выделение связанной группыБ)^ + щелчок мыши – вразброс

Page 97: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

97

Нумерация в списке начинается с 0, поэтому номер последнего элемента списка (объект ListCount-1).

Если ни один элемент не выбран, то ListIndex-1События элемент управления ListBox Все события элемента «Список» такие же, как и у рассмотренных

ранее элементов: Click, DblClick, GotFocus и т.д.Событие ItemCheck (при Style =1) имеет место ранее, чем Click.Методы элемента ListBoxAddItem – добавление элемента в списокСинтаксис: ОБЪЕКТ. AddItem значение[, номер]Значение – либо переменная символьного типа, либо текстовая

константа (текст в кавычках).Например: LstStation.AddItem « Владивосток»Номер – нужен только в том случае, когда список не сортирован

(Sorted = False)RemoveItem удалить элемент из спискасинтаксис: ИмяОбъекта.RemoveItem Номер номер – номер удаляемого элемента в спискеПример: lstStation.RemoveItem 5 (будет удален элемент, находя-

щийся в списке под номером 5).Clear очищение спискаСинтаксис: ИмяОбъекта.ClearПример: LstStation.ClearДля того чтобы удалить элемент из списка в окне свойств, этот

элемент (элементы) выделяются и затем нажимается Del.

3.5. Элемент управления ComboBox (Поле со списком)Элемент управления ComboBox применяется для хранения спи-

ска значений. Он сочетает в себе функциональные возможности спи-ска ListBox и текстового поля TextBox. В отличиеот ListBox

в ComboBox отображается только один элемент списка. Кро-ме того у него отсутствует режим выделения нескольких элементов списка, но в него можно вводить значения, как в элемент управления TextBox .

Свойства элемента управления ComboBoxСвойства элемента управления ComboBox совпадают со свой-

ствами элемента управления ListBox, но есть специфическое свойство Style, которое может принимать три разных значения (табл. 3.8).

Page 98: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

98

Таблица 3.8Значения свойства Style

Значение свойства Описание

0 – Dropdown Combo

Стиль, используемый по умолчанию. Данный список показан на рис. 3.6 слева. Пользователь может ввести значение в тексто-вое поле, расположенное в верхней части списка, либо открыть список, нажав кнопку с направленной вниз стрелкой с правой стороны поля, и выбрать требуемое значение. Выбранное зна-чение переносится в текстовое поле

1 – Simple Combo

Вид данного списка показан на рис. 3.6 в центре. При данном значении список отображается в форме в открытом состоянии. Если все элементы в нем не помещаются, появляется верти-кальная полоса прокрутки. Пользователь может ввести значе-ние в текстовое поле, располагающееся в верхней части списка, либо выбрать требуемое значение, которое будет перенесено в текстовое поле

2 – Dropdown List Вид данного списка показан на рис. 3.6 справа

Рис. 3.6. Стили оформления списка типа ComboBox

Свойства элемента ComboBox доступные только программно:ListCount – количество элементов в списке;ListIndex – номер выбранного элемента (нумерация с 0);NewIndex – номер, под которым элемент, программно, добавля-

ется в список.

Page 99: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

99

События элемента управления ComboBoxТаблица 3.9

События ComboBox

Change Возникает при вводе данных с клавиатуры и при программном из-менении текста (т.е. значение свойства Style должно быть 0 или 1)

DropDownИмеет место, когда пользователь нажмет на (при Style =0 или 2), процедура, обрабатывающая это событие, используется для обновления списка значений перед тем, как он будет выведен

Click Одинарный щелчок левой клавишей мышиDblClick Двойной щелчок

Scroll Возникает при прокручивании списка (если есть полосы прокрут-ки, при Style = 1)

Методы элемента управления ComboBoxМетоды AddItem, RemoveItem , Clear, Move, SetFocus, Zorder – ра-

ботают для полей со списком так же, как и для списка.Доступ к элементам списка Для получения доступа к выбранному элементу списка типа

comboBox можно использовать свойство Text. Значением этого свой-ства является введенное в текстовое поле списка или выбранное из списка значение.

Чтобы получить доступ к элементам списка, используйте свой-ство List. Значения этого свойства являются массивом, размерность которого равна значению свойства ListCount, то есть количеству эле-ментов в списке. Например, значение первого элемента списка будет равно combol. List (0), второго – Combo1.List (1) и т.д.

Для определения положения элемента в списке типа ComboBox можно использовать свойство Listindex. Например, при выборе перво-го элемента списка значение свойства Listindex будет равно 0.

Значение свойства Listindex равно -1, если из списка не выбран элемент, а также если элемент в текстовое поле списка введен пользо-вателем вручную.

Для получения индекса последнего добавленного в список эле-мента можно использовать свойство Newindex (Новый индекс).

3.6. Элемент управления ТаймерТаймер используется для вызова периодически повторяющегося

события. Наиболее простой пример связан с созданием в форме часов, выводящих текущее время, причем это время должно обновляться,

Page 100: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

100

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

Таблица 3.10Свойства элемента управления Таймер

Enabled True – таймер включен, False – таймер выключен.

Interval

Определяет, сколько времени будет проходить между срабатыва-ниями таймера. Интервал измеряется в миллисекундах и лежит в интервале от 1 до 65.535 миллисекунд. Но реально меньше 56 миллисекунд ставить бессмысленно, т.к. предельная точность таймера 1/18 секунды (18 «тиков» в секунду). Следует устанавли-вать = 1000, для отсчета через секунду

Событие TimerTimer – единственное событие элемента Timer – срабатывает че-

рез промежутки времени, определенные в свойстве Interval .Пример: допустим, что надо поместить на форму часы, которые

бы «обновляли» показания каждую секунду.Для этого помещаем на формуэлемент Timer (tmr1) (со свойством Interval, равным 1000 мсек = 1 сек),метку lblClock, в которой будет выводиться текущее время. Для того чтобы время обновлялось при каждом срабатывании

таймера, необходимо написать процедуру:Private Sub tmr1_Timer ()LblClock . Caption = «Текущее время» + Format (Now, «Long

time»)End SubNow – текущая дата, текущее время«Long time» –определяет вывод в формате часы(чч): минуты(мм)

: секунды(сс)Private Sub lblDate_Click()lblDate.Caption = «Текущая дата» + vbCrLf + Format(Now, «short

date»)End Sub

Page 101: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

101

Форматы для вывода даты и времени:General Date равносильно Now 09:04:2007Long Date 9 апреля 2007Medium Date 09-апр- 07Short Date 09:04:07Long Time 11:12:45Medium Time 9:15Short Time 21:15

3.7. Лабораторные работы для раздела 3Лабораторная работа 3.1(9)Обработка событий клавиатуры

Рис 3.7. Интерфейс лабораторной работы 3.1

Разработать два проекта, условно называемые «Приемник» и «Передатчик» с возможностью передачи данных из проекта «Пере-датчик» в проект «Приемник».

Интерфейс обоих проектов изображен на рис. 3.7. Проект «Приемник» должен быть реализован в виде .exe файла.

Page 102: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

102

Проект «Передатчик» должен удовлетворять следующим требо-ваниям:

в метках под надписями KeyDown и KeyUp должны отобра- жаться коды (Unicode) нажатой и отжатой клавиш соответственно, в метке под надписью KeyPress должен отображаться ASCII код нажа-той клавиши (если клавиша имеет ASCII код);

при нажатии на кнопку «Передатчик» результат обработки текста (TextBox под надписью «Ввод») отображается в окне выво-да передатчика (TextBox под надписью «Вывод») с предварительной очисткой содержимого этого окна;

при нажатии на кнопку «Приемник» результат обработки тек- ста (TextBox под надписью «Ввод») отображается в окне вывода при-емника с предварительной очисткой содержимого этого окна. Пред-усмотреть возможность повторной загрузки проекта «Приемник» в случае, если перед передачей данных он был закрыт пользователем;

при завершении работы проекта «Передатчик» проект «При- емник» также должен завершить работу.

Варианты заданий приведены в Приложении 3.

Лабораторная работа 3.2 (10)Массивы элементов управления. Массивы данных

Рис 3.8. Интерфейс лабораторной работы 3.2

Page 103: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

103

Разработать проект, который должен удовлетворять следующим требованиям:

ввод размерности матрицы должен осуществляться с исполь- зованием функции InputBox, предусмотреть возможность повторных расчетов с изменением размерности матрицы;

обеспечить возможность ввода значений элементов матрицы с использованием массива элементов TextBox, образующих таблицу в центре формы;

предусмотреть возможность выбора способа заполнения та- блицы: ручной ввод или генерирование случайным образом при за-данных пользователем границах;

выполнение задания должно осуществляться при нажатии на командную кнопку (CommandButton) «Выполнить».

Варианты заданий приведены в Приложении 4.

Лабораторная работа 3.3 (11)Элементы управления ListBox, ComboBox, Timer

Рис 3.9. Интерфейс лабораторной работы 3.3

Разработать проект, удовлетворяющий следующим требованиям:

Page 104: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

104

в ListBox под надписью «Типы самолетов» должна быть пред- усмотрена возможность множественного выбора;

результат выбора типов самолетов с указанием бортовых но- меров, хранящихся в массиве ItemData, должен быть отображен в мет-ке под надписью «Типы / Бортовые номера»;

элементы TextBox, предназначенные для ввода информации о типе добавляемого самолета (строка) и его бортовом номере (длинное целое), должны быть видимы только в том случае, когда CheckBox с надписью «Добавить», выполненный в виде командной кнопки, на-ходится в нажатом состоянии;

добавление информации о новом самолете должно осущест- вляться при отжатии CheckBox с надписью «Добавить», но только при условии, что бортовой номер числовой и не совпадает ни с одним из уже имеющихся в списке;

при нажатии на командную кнопку с надписью Удалить все выделенные в ListBox наименования должны быть удалены;

элементы управления ComboBox, расположенные под надпи- сями «Направление», «Расположение кресла» и «Вид питания», долж-ны иметь значения свойства Style соответственно 0, 1 и 2. Результат выбора в этих элементах должен быть отображен в метке под надпи-сью «Данные о рейсе»;

при вводе данных о направлении, отличающемся от имею- щихся в списке, это направление должно быть включено в список;

должна быть представлена информация о текущей дате и те- кущем времени, электронные часы (обновление информации о теку-щем времени) должны быть реализованы с использованием элемента Timer;

должна быть предусмотрена возможность выбора формата представления текущего времени;

включение и отключение электронных часов должно осу- ществляться при щелчке по соответствующей метке.

Пример интерфейса приведен на рис. 3.9.

Page 105: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

105

Лабораторная работа 3.4 (12)Построение графиков функций

Рис. 3.10. Интерфейс лабораторной работы 3.4

Разработать проект, удовлетворяющий следующим требованиям:графики функций должны строиться в элементе управления

PictureBox;должна быть предусмотрена возможность построения графи-

ков двух функций, одна из которых задана в декартовой системе коор-динат, а другая в полярной;

исходными данными при построении графика функции, за- данной в декартовых координатах, должны являться определяемые пользователем границы интервала изменения аргумента функции и величина шага дискретизации этого интервала;

исходными данными при построении графика функции, задан- ной в полярных координатах, должны являться фиксированные грани-цы интервала изменения аргумента функции ([0;2*π]) и определяемая пользователем величина шага дискретизации этого интервала;

Page 106: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

106

график функции должен быть вписан в границы элемента управления PictureBox;

в метке над элементом управления PictureBox должно быть указано выражение для соответствующей функции;

при перемещении курсора мыши над элементом управления PictureBox в окне контекстной справки (ToolTipText) должны отобра-жаться координаты точки, находящейся под курсором.

Пример интерфейса приведен на рис. 3.10Варианты заданий приведены в Приложении 5.

4. РАЗРАБОТКА MDI-ПРИЛОЖЕНИЙ. РАБОТА С ФАЙЛАМИ. РАБОТА С БАЗАМИ ДАННЫХ

4.1. Создание MDI-приложенийMDI-приложение включает, как минимум, два типа окон: глав-

ную и дочерние формы.В первую очередь необходима главная форма. Для ее создания

следует выбрать в меню Project команду Add MDI Form.Затем следует сделать из обычной формы дочернюю MDIKформу.

Для этого необходимо установить значение свойства MDichild формы, равным True.

Так как в каждом проекте Visual Basic может присутствовать только одна главная форма, все формы, свойство MDichild = True, яв-ляются дочерними формами главной MDI-формы. Команда меню Add MDI Form, позволяющая добавить в проект главную форму, после вы-полнения блокируется. Поэтому создать по ошибке вторую главную форму невозможно. В дальнейшем можно добавлять и независимые формы, т.е. не являющиеся дочерними для главной формы.

Различные типы формы (главная, дочерняя, независимая) можно легко определять по разным пиктограммам в окне проекта.

Создание менюB Visual Basic предусмотрено создание в формах полосы меню,

причем каждый из этих пунктов этого может являться верхним узлом в иерархии подменю.

Page 107: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

107

Например, необходимо создать в форме меню из двух позиций: цвет и размер, которые определяют соответственно цвет фона формы и ее размер.

Для создания меню используется окно конструктора меню, ко-торое вызывается либо Tools/ Menu Editor (^ E) , либо пентограмма (третья слева) на панели инструментов.

Окно конструктора меню имеет вид, представленный на рис. 4.1.Элементы окна конструктора меню:Caption – текст пункта меню (допускает использование & для за-

дания горячей клавиши);Name – наименование элемента меню (каждая позиция меню

должна иметь свое наименование, так же, как и любой элемент управ-ления на форме);

Клавиша Ok – нажатие клавиши соответствует организации (за-полнения) меню;

Клавиша Cancel – все действия по созданию меню отменяются;Index – используется для создания «иерархированного» меню

(когда в процессе выполнения программы создаются новые элементы меню);

ShortCut – позволяет установить горячие клавиши, нажатие ко-торых позволяет вызвать соответствующий пункт меню без необходи-мости открывать все предшествующие ему подменю. Для установле-

Рис. 4.1. Окно конструктора

Page 108: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

108

ния таких клавиш необходимо открыть выпадающий список из пред-логаемых сочетаний клавиш: ^A … ^Z, ^F1 … ^F12 и т.д.;

WindowList – используется при работе с многодокументным ин-терфейсом (при наличии нескольких форм в одном проекте);

HelpContext – для работы с файлом проектно зависимой помощи;NegotiatePosition – соглашение о расположении меню при вызо-

ве других объектов0 – не показывать 1 – left2 – middle3 – right;Checked – показывать выбранную позицию (ставится слева от

текста позиции);Enabled – допущен (true) или недопущен пункт при работе (это

свойство может меняться программно, так же, как и остальные); Visible – виден (true) или не виден (false) пункт меню при работе.Клавиши:

Смещает (уменьшает) уровень вложенности на одну у выбран-ного пункта меню;

Увеличивает уровень вложенности на одну у выбранного пункта меню;

Перемещает выбранную позицию меню на одну позицию вверх (не изменяя уровня вложенности);

Перемещает выбранную позицию меню на одну позицию вниз (не изменяя уровня вложенности);

Next – переход к следующей позиции меню в иерархическом дере-ве меню, изображенном в нижней части окна конструктора меню, ис-пользуется также для организации новой (после всех) позиции меню;

Insert – вставляет новую позицию перед отмеченной;Delete – удаляет отмеченную позицию из меню.Создание контекстных менюКонтекстные меню создаются так же, как и обычные меню – в

конструкторе меню (Menu editor). Однако поскольку в обычном состоянии это меню

должно быть скрыто (оно должно появляться только при нажатии на правую клавишу мыши), то у верхнего уровня этого меню свойство Visible должно быть равно false. Лучше сделать этот пункт меню неви-димым программно, иначе потом в конструктор невозможно будет зайти (если этот пункт первый в иерархии). Синтаксис обращения к методу:

Page 109: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

109

Объект.PopUpMenu имя пункта меню, fl ags,x,y, boldcommendВ качестве объекта выбирается форма.Flags – определяется как сумма двух констант (по одной из каж-

дой группы) относительно курсора мыши или координат х, у.Таблица 4.1

Группа 1 – положение меню

VbPopUpMenuLeftAlign 0 Курсор слеваVbPopUpMenuCenterAlign 4 Курсор в центреVbPopUpMenuRightAlign 8 Курсор справа

Группа 1 определяет положение меню относительно точки, за-данной координатами х, у (если х, у не заданы, то это координаты курсора мыши)

Таблица 4.2Группа 2 – определяет поведение мыши

VbPopUpMenuLeftButton 0 Отменяет правую клавишу мыши

VbPopUpMenuRightButton 2 Можно использовать и левую и правую клавиши мыши

Это важно для TextBox, так как там есть собственное кон-тектсное меню. Чтобы его отменить, нужно выбрать константу VbPopUpMenuLeftButton.

Boldcommend – имя продпункта меню, активное по умолчаниюПример:Private Sub Form_mouseDown ( Button, …)If button=2 thenMe.PopUpMenu mn1,,,, ma1End ifEnd subРабота с окнами в MDI-проектахVB позволяет реализовать возможность расположения окон как

в приложении WORD: вертикально, горизонтально и каскадом. Для этого, прежде, всего надо в редакторе меню материнской формы вве-сти новую позицию «окно» и установить флажок WindowList , для этой позиции. Затем в редакторе меню следует ввести соответствую-щие позиции:

Вертикально, горозонтально, каскадом. Далее на события выбора каждого из этих пунктов навесим про-

цедуры, использующие метод Arrange MDI – формы. Этот метод имеет

Page 110: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

110

параметр, который устанавливает порядок расположения окон дочер-них форм в окне материнской формы. Этот параметр устанавливается заданием в поименованной константе

А) Private Sub mnu Cascade_Click( ) FrmVB2. Arrange vbCascade End SubБ) Private Sub mnu Horizont_Click( ) FrmVB2. Arrange vbTileHorizontal End SubВ) Private Sub mnu Vertical_Click( ) FrmVB2. Arrange vbTileVerticalEnd Sub

4.2. Работа с файламиКоманды и функции VB для работы с файламиVisual Basic содержит 6 команд, которые имитируют обычные ко-

манды операционной системы, для работы с файлами.Таблица 4.3

Команды для работы с файлами

№ п/п Команда Назначение

1ChDrive («Текстовая констан-та или строковая переменная, определяющая текущий диск»)

Смена текущего диска

2ChDir («Текстовая константа или строковая переменная, опреде-ляющая текущий каталог»)

Смена текущего каталога,пример: ChDir(«c:\VisBas»)

3

MkDir («Текстовая константа или строковая переменная, определяющая имя создаваемого каталога»)

Создание каталога, пример: MkDir(«C:\NewCatalog»)

4 RmDir («имя каталога») Удаление каталога

5 Name «старое имя» as «новое имя»

Переименование каталога и файла,примерName «c:\Prom\ttt.txt2 as «c:\prom1\yyy.txt»

6 Kill («имя удаляемого файла») Удаление файла

7 FileCopy источник, копия Копирование файла,пример: FileCopy («ttt.txt», «yyy.dat»)

Page 111: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

111

Таблица 4.4Функции для работы с файлами

№ п/п Функция Назначение

1 DIR$

Поиск файлов t= DIR$( имя файла) – можно с шаблоном.Если файл существует, то DIR$ возвращает имя файла без указания пути, если файл не существует, то DIR$ возвращает пустую строку

2 CurDir

Функция определения текущего каталога – возвращает символьную строку, содержащую наименование текуще-го каталога, пример: Dim t as stringt= CurDir (t=”c:\VisBas)Если надо выделить только текущий диск, то t=Left(CurDir,2)

3 Shell

Функция запуска из программы приложений Windows id=Shell(PathName, WindowState)PathName – текстовая константа, символьная перемен-ная , содержащая имя запускаемого приложения (без расширения).!!! Если путь не указан, то ищется в текущем каталогеWindowState – константа VB, определяющая тип окна приложения (см табл. 4.5) Для того чтобы передать фокус приложению: AppAcivate idгде, id – имя приложения

4 FileDateTime («имя файла»)

Функция определения даты и времени создания или по-следнего обновления файла: t=Format(t,«LongDate»)

5

GetAttr (имя файла или имя каталога) as Integer

Функция определения атрибутов файла

6 SetAttr имя файла, значе-ние

Установка аттрибутов файла – программно

7 FileLen( имя файла) Функция определения размера файла (в байтах)

Page 112: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

112

Таблица 4.5Константы, определяющие тип окна приложения

Константа Значение Тип окнаVbHide 0 Окно сркытьVbNormalFocus 1 Обычное, имеет фокусVbMinimized 2 Свернуть, с фокусомVbMaximidedFocus 3 Развернуть, с фокусомVbNormalNoFocus 4 Обычное, без фокусаVbMinimizedNoFocus 6 Свернуть, без фокуса

Таблица 4.6Константы, определяющие атрибуты файла

Атрибут Константа ЗначениеОбычный VbNormal 0Только для чтения VbReadOnly 1Скрытый VbНidden 2 Системный VbSyste 4Каталог VbDirectory 16Архивный VbArchive 32

Если файл (каталог) имеет совокупность свойств, то значение GetAttr возвращает сумму соответствующих значений.

Элементы управления для работы с файламиСуществуют три специальных элемента управления для работы

с файлами:DriveListBox – список дисковых устройств.DirectoryListBox – список директорий.FileListBox – список файлов.Из свойств этих элементов следует отметить программноуправ-

ляемое свойство: Path – определяет путь к каталогу или файлу.

Таблица 4.7Свойства элементов DriveListBox, DirectoryListBox, FileListBox

Свойство Назначение Drive Возвращает буквенное обозначение устройства Path Возвращает путь устройства, папки, файла

Page 113: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

113

Среди методов следует выделить метод Refresh, который обнов-ляет список устройств, папок, файлов, после его изменения.

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

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

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

Открыть файл последовательного доступа можно в одном из сле-дующих режимов:

для ввода данных (для чтения), для вывода данных (для записи с начала файла), для добавления в конец файла. Открытие файлаДля создания файла последовательного доступа файл необходи-

мо открыть для вывода:синтаксис оператора открытия файла для вывода следующий:Open «имя файла» For Output as номер файлаИмя файла – текстовая константа или переменная (полный путь

файла). Если только имя, то откроется в текущем каталоге.Если номер свободного файла известен заранее, то оператор вы-

глядит следующим образом:Open «имя файла» for Output as #1Если же заранее не известен номер первого «свободного» файла,

то для определения этого номера используется функция FreeFile, кото-рая возвращает целое число, определяющее свободный номер файла.

N=FreeFileOpen «имя файла» for Output as NДля добавления данных в конец файла он открывается следую-

щим образом:

Page 114: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

114

N=FreeFileOpen «имя файла» for Append as NДля чтения из файла его следует открыть так:N=FreeFileOpen «имя файла» for Input as NПорсле работы с файлом в любом из режимов файл должен быть

закрыт оператором Close #NДаже если затем файл будет снова открыт, но уже в другом режиме.Запись данных в файлВ файл можно записывать двумя способами:С использованием оператора Print. При этом в файл записывает-

ся только одна строковая переменнаяN=FreeFile Open «имя файла» for Output as NPrint #N, «текст» – строковая константа или переменная.С использованием оператора WriteВ этом случае элементы строки записываются через запятуюWrite #N, t1, kЧтение данных из файлаЕсли данные записывались с помощью оператора Print (т.е. как

строки текста) и значит в них могут быть запятые, то считывать надо только оператором LineInput, который каждую строку воспринимает как одну текстовую переменную

LineInput #N, t где t – string.Если же данные записывались с использованием оператора Write,

то данные считываются оператором Input #N, переменная1, переменная2.Если заранее известно, сколько строк в файле, то считывание

можно организовать с помощью цикла ForFor i=1 to kInput #N, переменная1, переменная2nextЕсли же заранее количество строк в файле не известно, то считы-

вание организуется с использованием цикла Do Loop и функции Eof (end of fi le).

Do Input #N, переменная1, переменная2Loop until EoF(n)

Page 115: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

115

Файлы прямого доступаФайл прямого доступа – это специальный файл, упорядоченый по

записям. Это позволяет обратиться к любой записи файла (как для чте-ния, так и для записи) без предварительной обработки предыдущих записей. Кроме того, в открытом файле можно возвращаться к нему как для записи, так и для чтения. Все записи имеют одинаковую длину, заданную при описании файла. Каждая записсь – совокупность более мелких единиц – полей. Если привести аналогию с таблицей, то мож-но сказать, что запись – это строка таблицы, а поле – её – столбец.

Фамилия Возраст Оклад1 Иванов 35 35002 Петров 40 70003 Сидоров 20 15000

Причем поля в записи могут быть разного типа. Но структура за-писей одинакова.

Открытие файла прямиого доступа осуществляется командой

Open «имя файла» For Random as номер файла Len = jИмя файла – текстовая константа или переменная,номер файла – если число, то с предшествуюшим ему знаком #

(#1), если переменная, то можно опустить знак #,Len – длина записи в символах (данные любого типа при записи в

файл преобразуются в строковые).Запись в файл прямого доступа Запись в файл прямого доступа осуществляется командой Put имя файла, номер записи, имя переменнойимя файла – текстовая константа или переменная, номер записи – число или переменная целого типа (Int или Long), имя переменной – имя переменной пользовательского типа, в кото- рой описана структура записи.Чтение из файла прямого доступа Чтение из файла прямого доступа осуществляется командойGet имя файла, номер записи, имя переменнойПараметры соответсвуют аналогичным при записи файла

Page 116: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

116

4.3. Работа с базами данных в Vusual BasicVusual Basic предоставляет возможность работы с базами дан-

ных, созданными с использованием СУБД ACCESS, Dibaze, Microsoft Foxpro, Paradox.

Элемент управления DataДля того чтобы связать проект VB с базой данных, существует

специальный элемент управления, входящий в состав встроенных элементов управления – Data

Свойства элемента управления DATAВ табл. 4.8 приведены специфические свойства элемента управ-

ления Data.Таблица 4.8

Свойства элемента управления Data

Свойство ОписаниеConnect Тип файла данных ACCESS, Dbaze, FoxproDataBaseName Полный путь файла данныхRecordSource Имя таблицы или имя запроса БД

Exclusive T\F (по умолчанию). При True – БД открыта в эксклюзивном режиме, т.е. является недоступной для других пользователей

ReadOnly При True, никакие изменения в БД не могут быть внесены

RecordSetType Тип набора записей (обычно Dynaset) – динамический набор записей или запрос

Options

Устанавливает свойства динамического набора данных:1 – не допускаются изменения в наборе другим пользователем, пока набор открыт в проекте,2 – другие пользователи могут только читать,4 – набор используется только для чтения (изменять нельзя),8 – можно только добавлять записи,16 – допускает изменения в любом поле (даже некорректные),32 – допускает только корректные изменения,64 – при работе с SQLЮ256 – движение по записям только вперед,512 – отображает сообщение об ошибке, если другой пользова-тель изменяет данные в процессе вашей работы

BofAction Действия при обнаружении начала файла:0 – Move First становится на 1 запись,1 – BOF остается в начале файла

Page 117: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

117

EofAction

Действия при обнаружении конца файла:0 Move Last стать на последнюю запись,1 EOF стать на последнюю запись,2 Add New добавить новую запись

Align

0 – None размер и положение элемента определяется свойства-ми Left, Top, height, Width.1 – Align Top – Элемент располагается вверху на всю ширину формы.2 – Align Botoom. Элемент располагается внизу на всю ширину формы.3 – Align Left Элемент располагается слева во всю высоту формы.4 – Align Right Элемент располагается справа во всю высоту формы

NegoTiate Определяет, будет или нет показан этот элемент поверх меню или панелей инструментов

События Элемента управления DataСпецифическими для этого элемента событиями являются:Reposition – происходит при переходе к новой записи динамиче-

ского набора данных;Error – возникает когда при перемещении по данным с помощью

этого элемента обнаруживается ошибка;Validate – происходит прерд переходом к следующей записи (т.е.

находится еще на текущей записи).Процедура обработки этого события имеет два параметра:Private Sub Data1_Validate(Action As Integer, Save As Integer)Action – возможные значения этого параметра0 – vbDataActionCancel – не допускает выход из процедуры,1 – vbDataActionMoveFirst – переход на первую запись после чего

осуществляется выход из процедуры,2 – vbDataActionMovePrevious – переход на предыдущую запись,3 – vbDataActionMoveNext – переход на следующюю запись,4 – vbDataActionMovelast – переход на последнюю запись,5 – vbDataActionAddNew – добавить новую,6 – vbDataActionUpdate – фиксируем изменение,7 – vbDataActionDelete – удаление записи,8 – vbDataActionFind – поиск (при поиске нужно задать крите-

рий),

Page 118: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

118

9 – vbDataBookMark – установить закладку,10 – vbDataClose – закрыть динамический набор записей,11 – vbDataUnload – выгрузить из памяти активную форму.Save – параметр, значение которого равно 0 или -10 – данные в текущей записи не изменились,1 – было изменение данных в текущей записи.Методы элемента управления DataRefresh – этот метод применяется в тех случаях, когда изменяются

свойства элемента управления Data.UpdateControls – используется при обновлении связанных с эле-

ментом Data элементов управления.UpdateRecord – сохранение изменений в записи.Связанные элементы управления Для того чтобы в VB можно было просматривать и изменять дан-

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

Для того чтобы связать элемент управления с соответсвующим ему полем БД, необходимо воспользоваться следующими свойствами элемента управления:

DataSource – имя элемента Data (dt1),DataField – имя поля этой БД.Добавление и удаление записейДля добавления и удаления записей следует воспользоваться ме-

тодом объекта RecordSet.Добавление записейPrivate Sub cmdAdd_Click()dt1.Recordset.AddNew – на нажатие кнопки Добавить.End SubДля сохранения новой записи надо либо перейти к любой другой

записи, либо сохранить эту запись.Private Sub cmdSave_Click()dt1.UpdateRecord – метод элемента dataEnd SubУдаление записи Private Sub cmdDel_Click()If Not dt1.Recordset.EOF Thendt1.Recordset.DeleteIf Not dt1.Recordset.EOF Then

Page 119: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

119

dt1.Recordset.MoveNextElsedt1.Recordset.MoveLastEnd IfElseMsgBox «записей нет»End IfEnd Sub

4.4. Лабораторные работы для раздела 4Лабораторная работа 4.1 (13)Работа с файлами

Рис. 4.2. Интерфейс лабораторной работы 4.1

Разработать проект, удовлетворяющий следующим требованиям:на форму должен быть помещен элемент управления TextBox,

предназначенный для ввода данных исходного файла;при нажатии на командную кнопку с надписью «Запись»

данные из элемента управления TextBox должны быть записаны на диск в виде отдельного файла, директория и имя которого должны определяться в диалоговом окне записи файла элемента управления CommonDialog;

Page 120: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

120

при нажатии на командную кнопку с надписью «Обработка» данные исходного файла должны быть прочитаны, обработаны в соот-ветствии с заданием, а результаты обработки должны быть записаны в выходные файлы, находящиеся в одной директории с исходным и имеющие имена, определяемые именем исходного файла (например, исходный файл – fi le1.txt, выходные файлы fi le2.txt, fi le3.txt). Дирек-тория и имя исходного файла для чтения должны определяться в диа-логовом окне открытия файла элемента управления CommonDialog;

выбор выходных файлов для просмотра должен быть реали- зован с использованием элементов управления для работы с файла-ми (DriveListBox – для выбора диска, DirectoryListBox – для выбора директории, FileListBox – для выбора имени файла). Элемент управ-ления ListBox, находящийся под надписью «Тип файлов», должен использоваться для формирования фильтра при показе содержимого выбранной директории;

при нажатии на командную кнопку с надписью «Просмотр» содержимое выбранного файла должно быть выведено в элементе управления TextBox.

Варианты заданий приведены в Приложении 6.

Лабораторная работа 4.2 (14)MDI-project

Рис. 4.3. Интерфейс лабораторной работы 4.2 (MDI-форма)

Page 121: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

121

Рис. 4.4. Интерфейс лабораторной работы 4.1 (Форма для решения задачи 1)

Рис. 4.5. Интерфейс лабораторной работы 4.1 (Форма для решения задачи 2)

Page 122: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

122

Рис. 4.6. Интерфейс лабораторной работы 4.1 (Форма для просмотра данных задачи 2)

Разработать проект, удовлетворяющий следующим требованиям:в проекте должна быть реализована возможность решения

двух задач, одна из которых связана с обработкой числовых матриц, а вторая – с работой с базами данных;

для решения задачи обработки числовых матриц необходимо использовать элемент управления MSFlexGrid, а для решения задачи, связанной с базами данных, – элемент управления Data;

проект должен содержать MDI-форму (рис. 4.3) и 2 дочерние формы – по одной для каждой из решаемых задач (рис. 4.4, 4.5);

меню MDI-формы должно содержать позиции «Задачи», «Окно» и «Выход», предназначенные соответственно для открытия и закрытия форм каждой из задач, реализации различных способов расположения окон и завершения работы проекта;

для первой из задач необходимо предусмотреть возможность изменения размерности матрицы, а также возможность выбора спо-соба ввода данных матрицы: ручной ввод или генерирование случай-ным образом при заданных пользователем границах интервала допу-стимых значений. Реализация ручного ввода данных матрицы долж-на быть осуществлена либо с использованием элемента управления TextBox (на рис. 4.4 справа от надписи «Элемент матрицы»), либо с помощью обработки событий клавиатуры;

Page 123: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

123

для второй задачи в СУБД ACCESS должна быть предвари- тельно создана база данных, содержащая одну таблицу, связь с кото-рой в форме 2 проекта должна быть осуществлена с использованием элемента управления Data. В проекте должна быть реализована воз-можность корректировки, добавления, удаления записей, а также про-смотра данных таблицы (рис. 4.5). Для просмотра данных таблицы следует разработать дополнительный проект, который должен вызы-ваться при нажатии командной кнопки с надписью «Просмотр дан-ных» и состоять из одной формы (рис. 4.6), на которой элемент управ-ления MSFlexGrid через элемент управления Data должен быть связан с указанной таблицей.

Варианты заданий приведены в Приложении 7.

ЛИТЕРАТУРА

Основная Visual Basic 6.0 / Пер. с англ. – СПб.: БХВ – Санкт-Петербург, 1. 2000. – 992 с. Microsoft Visual Basic 6.0 для профессионалов. Шаг за шагом: 2. Практ. пособ. / Пер. с англ. – М.: Изд-во ЭКОМ, 2001. – 720 с. 3. Сайлер Б., Споттс Д. Использование Visual Basic 6. Специальное издание / Пер.с англ. – М.;СПб.; К.: Издательский дом «Вильямс», 2002. – 832 с. 4. Глушаков С.В., Сурядный А.С. Программирование на Visual Basic 6.0. –М.: АСТ, 2005– 268 с.Дополнительная 5. Гарнаев А.Ю. Visual Basic 6.0: разработка приложений. – СПб.: БХВ – Санкт-Петербург, 2000. – 448 с. 6. Гарнаев А.Ю. Самоучитель VBA. – СПб.: БХВ – Санкт-Петербург, 2001. – 512 с. 7. Гаврилец Е.З. Турчанова Т.Г. Алгоритмические языки и програм-мирование (Visual Basic). Задания для лабораторных работ. – Биш-кек, 2006. 8. Росс Нелсон. Running Visual Basic for Windows / Пер. с англ. – М.: Издательский отдел «Русская Редакция», ТОО «Channel Trading Ltd», 2005. 9. Корнелл Г. Программирование в среде Visual Basic 5 / Пер. с англ. – Мн.: ООО «Попурри», 1998.

Page 124: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

124

Приложение 1

Варианты заданий для лабораторной работы 2.1

Вариант 11. Дано натуральное число N (N<=99). Определить, верно ли, что

квадрат этого числа равен кубу суммы его цифр.2. Дано действительное число x. Вычислить F(x), где F(x) – пе-

риодическая функция с периодом 1.5, совпадающая на отрезке [0,1.5] c функцией F(x)=x***********************************************************

Вариант 21. Даны целые числа K и L. Если числа не равны, то заменить

меньшее из них остатком от деления большего на меньшее, а если равны, то заменить оба числа нулями.

2. Даны 3 положительных вещественных числа x, y, z. Опреде-лить, существует ли треугольник с такими длинами сторон. Если су-ществует, то является ли он остроугольным, прямоугольным или ту-поугольным.***********************************************************

Вариант 31. Дано натуральное число N (N<=100). Определить возраст че-

ловека в годах. Напечатать это число с соответствующим ему словом: «год», «года» или «лет».

2. Даны 3 положительных вещественных числа x, y, z. Если нель-зя построить треугольник с такими сторонами, напечатать 0, в про-тивном случае напечатать 3, 2 или 1 в зависимости от того, равносто-ронний это треугольник, равнобедренный или какой-либо другой.***********************************************************

Вариант 41. Даны натуральные K и L. Определить, делится ли K нацело на

L. Если делится, то заменить эти числа их квадратами, в противном случае заменить эти числа их кубами.

2. Даны действительные положительные числа a, b, c, d. Опре-делить, можно ли прямоугольник со сторонами a, b уместить внутри прямоугольника со сторонами c, d так, чтобы каждая из сторон одно-го прямоугольника была параллельна или перпендикулярна сторонам другого прямоугольника.***********************************************************

Page 125: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

125

Вариант 51. Найти произведение цифр заданного четырехзначного числа.2. Дано число х. напечатать в порядке возрастанияtg(x), 1+¦x¦, (1+x)

***********************************************************Вариант 61. Определить число, полученное выписыванием в обратном по-

рядке цифр заданного трехзначного числа.2. Даны действительные числа a,b,c (a<>0). Определить, имеет ли

уравнениеах2 + bx + c = 0

действительные корни. Если действительные корни имеются, то най-ти их. В противном случае напечатать соответствующее сообщение.***********************************************************

Вариант 71. Дано положительное вещественное число Х. Определить пер-

вую цифру из его дробной части.2. Даны действительные числа a,b,c,d. Если a>b>c>d, то первые

два числа заменить наибольшим из них, а вторые два – наименьшим. Если a<b<c<d, то числа оставить без изменения. Во всех остальных случаях числа заменить их квадратами.***********************************************************

Вариант 81. Даны натуральные K и L. Поменять местами значения этих

переменных, не используя дополнительные переменные.2. Даны действительные положительные числа a, b, c, x, y. Опре-

делить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отвер-стие со сторонами x, y. Просовывать кирпич разрешается только так, чтобы каждое из ребер было параллельно или перпендикулярно каж-дой из сторон отверстия.***********************************************************

Вариант 9 1. Дано натуральное число N (N>99). Определить число сотен в

нем.2. Дано действительное число x. Вычислить F(x), где F(x) – пе-

риодическая функция с периодом 2, совпадающая на отрезке [-1, 1] c функцией F(x)=-x2+1***********************************************************

Page 126: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

126

Вариант 10 1. Дано натуральное число N (N<=9999). Определить, является ли

это число палиндромом.2. Даны действительные числа x и y. Если числа равны, оставить

их без изменения, в противном случае меньшее из этих чисел заме-нить их полусуммой, а большее – их удвоенным произведением. ***********************************************************

Вариант 111. Дано натуральное число N (N<=9999). Определить максималь-

ное количество одинаковых цифр в нем.2. Даны действительные числа Х1, Х2, Х3, Y1, Y2, Y3. Определить

принадлежит ли начало координат треугольнику с вершинами в точ-ках

(Х1, Y1), (Х2, Y2), (Х3Y3).***********************************************************

Вариант 121. Дано натуральное число N (N<=9999) и цифра K. Определить,

сколько цифр K в составе цифр числа N.2. Даны действительные числа Х0,Х1, Х2, Х3, Y0,Y1, Y2, Y3. Опреде-

лить принадлежит ли точка с координатами (Х0, Y0) треугольнику с вершинами в точках (Х1, Y1), (Х2, Y2), (Х3Y3).

Page 127: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

127

Приложение 2

Варианты заданий для лабораторной работы 2.2

Вариант 11. Дано натуральное число N . Вычислить cos1 cos2 cosN ----- * ------ * … * ____sin1 sin2 sinN2. Даны целое число N и последовательность целых чисел A1,А2,…

АN.Вычислить сумму тех чисел последовательности, которые нечет-

ны и отрицательны.***********************************************************

Вариант 21. Даны целое число N и действительное число А. Вычислить

)(*....*)2(*)(* 2NANANAA −−−2. Даны целое число N и последовательность целых чисел A1,А2,…

АN.Получить удвоенную сумму положительных элементов последо-

вательности и утроенное количество отрицательных элементов по-следовательности.***********************************************************

Вариант 31. Дано целое число N. Вычислить (1+sin0.1*N)(1+sin0.2*N)...

(1+sinN).2. Дана последовательность целых чисел A1,А2,…АN. Определить

max(A1,A3, … A2N-1) + min(A2,A4, … A2N)***********************************************************

Вариант 41. Даны действительное Х и натуральное N. Вычислить(X-2)(X-4)...(X-2N)----------------------------(X-1)(X-3)...(X-2N-1)2. Даны целое число N и последовательность действительных чи-

сел A1,А2,…АN. Вычислить min(-A1,А2,-А3,А4,,...,(-1)N* АN).***********************************************************

Page 128: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

128

Вариант 51. Дано натуральное число N. Вычислить 1 1 1------ + -------- +...+ --------------sin1 sin1+sin2 sin1+...+sinN2. Даны целое число N и последовательность действительных

чисел A1,А2,…АN. Определить в этой последовательности число со-седств двух чисел разного знака.***********************************************************

Вариант 61. Дано натуральное число N и действительное число А. Вычис-

лить ряд:

2. Дана непустая последовательность натуральных чисел, за ко-торой следует 0.

Определить порядковый номер наименьшего из них.***********************************************************

Вариант 71. Даны натуральное число N и действительное число Х. Вычис-

лить:

2. Даны натуральное число N и целые числа A1,А2,…АN. Опре-делить количество удвоенных нечетных элементов среди элементов, предшествующих первому отрицательному.***********************************************************

Вариант 81. Даны действительное число A и натуральное N. Вычислить:

1231...11

−+++ NААА2. Даны натуральное число N и действительные числа A1,А2,…

АN. Все элементы AI, следующие за первым отрицательным, увели-чить на заданное число P.***********************************************************

Page 129: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

129

Вариант 91. Дано натуральное N. Вычислить:

1 1 11 ...2 3 N

+ + + + .

2. Даны натуральное число N и последовательность действитель-ных чисел A1,А2,…АN. Получить среднее арифметическое этой после-довательности.***********************************************************

Вариант 101. Дано натуральное число N и действительные числа A:

NN

sin...1sincos...1cos*...*

2sin1sin2cos1cos*

1sin1cos

++++

++

.2. Даны натуральное число N и последовательность действитель-

ных чисел A1,А2,…АN. Получить среднее геометрическое этой после-довательности.***********************************************************

Вариант 111. Дано натуральное число N. Вычислить:y = 2 * 4 * 6 * 8* ... *2N2. Даны натуральное число N и последовательность действитель-

ных чисел A1,А2,…АN. Подсчитать количество пар соседних элементов с одинаковыми

значениями.***********************************************************

Вариант 121. Даны действительное число A и натуральное N. Вычислить

3 2 1

1 1 1... NА А А −+ + + .

2. Даны натуральное число N и последовательность действитель-ных чисел A1,А2,…АN. Найти количество пар соседних элементов, которые имеют одинаковые абсолютные значения, но противополож-ные знаки.***********************************************************

Page 130: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

130

Вариант 13Числа Фибоначчи определяются формулами:

00 =F , 11 =F 21 −− += NNN FFF при N=2,3,… Определить число Фибоначчи с заданным номером N.

2. Даны натуральное число N и последовательность действитель-ных чисел A1,А2,…АN. Определить среднюю длину непрерывных участков положительных чисел.***********************************************************

Вариант 141. Числа Фибоначчи определяются формулами: 00 =F , 11 =F

21 −− += NNN FFF при N=2,3,… Определить первое число Фибоначчи, большее M (M>1).

2. Даны натуральное число N и последовательность действитель-ных чисел A1,А2,…АN.

Подсчитать количество пар соседних элементов, которые имеют противоположные знаки.

Page 131: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

131

Приложение 3

Варианты заданий для лабораторной работы 3.1

Вариант 1Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Оставить в этой последовательности только слова, у которых первая буква совпадает с последней, располо-жив каждое из этих слов на отдельной строке.

В строке, следующей за последним из слов, указать их количе-ство.***********************************************************

Вариант 2Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Оставить в этой последовательности слова с нечетными порядковыми номерами, расположив каждое из этих слов на отдельной строке.

В строке, следующей за последним из слов, указать их количе-ство.***********************************************************

Вариант 3Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Удалить из этой последовательности слова с четными порядковыми номерами, расположив каждое из оставшихся слов на отдельной строке. В строке, следующей за по-следним из слов, указать их количество.***********************************************************

Вариант 4Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Преобразовать эту последователь-ность, заменив в ней порядок следования слов на обратный, располо-жив каждое из этих слов на отдельной строке. В строке, следующей за последним из слов, указать их количество.***********************************************************

Вариант 5Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Оставить в этой строке только слова-палиндромы, расположив каждое из слов на отдельной строке. В стро-ке, следующей за последним из слов, указать их количество.

Page 132: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

132

Вариант 6Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Напечатать эти слова по алфавиту так, чтобы каждое слово было в отдельной строке. В строке, следующей за последним из слов, указать их количество.***********************************************************

Вариант 7Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами или запятыми. Преобразовать эту стро-ку, поменяв местами первое и последнее слово. Расположить каждое из слов на отдельной строке. В строке, следующей за последним из слов, указать их количество.***********************************************************

Вариант 8Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами или запятыми. Преобразовать эту стро-ку, заменив у всех слов с четными порядковыми номерами порядок следования символов на обратный. Расположить каждое из слов на отдельной строке. В строке, следующей за последним из слов, указать количество таких слов.***********************************************************

Вариант 9Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами или запятыми. Преобразовать эту стро-ку, удалив из нее все слова, в которых имеются хотя бы две одина-ковые буквы. Расположить каждое из оставшихся слов на отдельной строке. В строке, следующей за последним из слов, указать количе-ство таких слов.***********************************************************

Вариант 10Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Оставить в ней только те слова, длина которых не превышает заданную. Расположить каждое из этих слов на отдельной строке. В строке, следующей за последним из слов, ука-зать их количество.***********************************************************

Page 133: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

133

Вариант 11 Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Удалить из этой последовательности слова, у которых первая буква совпадает с последней, расположив каждое из оставшихся слов на отдельной строке. В строке, следую-щей за последним из слов, указать их количество.***********************************************************

Вариант 12Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Удалить из этой последовательности слова с нечетными порядковыми номерами, расположив каждое из оставшихся слов на отдельной строке. В строке, следующей за по-следним из слов, указать их количество таких слов.***********************************************************

Вариант 13Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Удалить из этой последовательности каждое третье слово, расположив каждое из оставшихся слов на от-дельной строке. В строке, следующей за последним из слов, указать их количество.***********************************************************

Вариант 14Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Преобразовать эту последователь-ность, заменив в ней порядок следования слов и символов в словах на обратный. Расположить каждое из преобразованных слов на от-дельной строке. В строке, следующей за последним из слов, указать количество таких слов.***********************************************************

Вариант 15Задана последовательность символов, состоящая из отдель-

ных слов, разделенных пробелами. Удалить из этой строки слова-палиндромы, расположив каждое из оставшихся слов на отдельной строке. В строке, следующей за последним из слов, указать их коли-чество.***********************************************************

Page 134: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

134

Вариант 16Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Напечатать эти слова по алфавиту в по-рядке убывания так, чтобы каждое слово было в отдельной строке. В строке, следующей за последним из слов, указать их количество.***********************************************************

Вариант 17Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами или запятыми. Преобразовать эту стро-ку, поменяв местами первое и последнее слово и изменив в этих сло-вах порядок символов на обратный. Расположить каждое из слов на отдельной строке. ***********************************************************

Вариант 18Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами или запятыми. Преобразовать эту стро-ку, поменяв местами первую и последнюю букву у всех слов с не-четными порядковыми номерами. Расположить каждое из слов на от-дельной строке. В строке, следующей за последним из слов, указать их количество.***********************************************************

Вариант 19Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами или запятыми. Преобразовать эту стро-ку, оставив в ней только слова, в которых имеются хотя бы две одина-ковые буквы. Расположить каждое из этих слов на отдельной строке. В строке, следующей за последним из слов, указать количество таких слов.***********************************************************

Вариант 20Задана последовательность символов, состоящая из отдельных

слов, разделенных пробелами. Удалить из нее слова, длина которых не превышает заданную. Расположить каждое из оставшихся слов на отдельной строке. В строке, следующей за последним из слов, указать количество таких слов.***********************************************************

Page 135: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

135

Приложение 4

Варианты заданий для лабораторной работы 3.2

Вариант 1Дано натуральное N и квадратная матрица целых чисел размером

N×N. Определить, является ли эта матрица симметричной относи-тельно главной диагонали и вычислить разность сумм наддиагональ-ных и поддиагональных элементов матрицы.. ***********************************************************

Вариант 2Дано натуральное N и квадратная матрица размером N×N. Вы-

числить разность максимального из наддиагональных элементов и минимального из поддиагональных элементов. ***********************************************************

Вариант 3Дано натуральное N и квадратная матрица размером N×N. Вы-

числить суммы элементов по столбцам и поменять местами столбцы с максимальным и минимальным значением указанных сумм.***********************************************************

Вариант 4Даны натуральные M, N и матрица действительных чисел разме-

ром M×N. Найти сумму наибольших значений её строк.***********************************************************

Вариант 5Даны натуральные M, N и матрица действительных чисел разме-

ром M×N. Определить разности наибольших и наименьших значений элементов для каждой из строк этой матрицы.***********************************************************

Вариант 6Даны натуральные M, N и матрица действительных чисел разме-

ром M×N. Определить количество положительных элементов во всех строках с первым отрицательным элементом.***********************************************************

Вариант 7Даны натуральные M, N и матрица действительных чисел разме-

ром M×N. Получить новую матрицу делением всех элементов данной матрицы на её наибольший по модулю элемент.***********************************************************

Page 136: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

136

Вариант 8 Даны натуральные M, N и матрица действительных чисел разме-

ром M×N. Определить среднее арифметическое каждого из столбцов.***********************************************************

Вариант 9Дано натуральное N и квадратная целочисленная матрица разме-

ром N×N. Вычислить суммы элементов по строкам и поменять ме-стами строки с максимальным и минимальным значением указанных сумм.***********************************************************

Вариант 10Дано натуральное N и квадратная целочисленная матрица разме-

ром N×N.Определить максимальное из чисел, встречающихся в заданной

матрице более одного раза.***********************************************************

Вариант 11Дано натуральное N и квадратная целочисленная матрица разме-

ром N×N.Определить номер строки, в которой находится самая длин-ная серия одинаковых элементов.***********************************************************

Вариант 12Дано натуральное N и квадратная целочисленная матрица разме-

ром N×N.Определить количество элементов, являющихся локальными ми-

нимумами этой матрицы и выделить цветом всех соседей этих эле-ментов (элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей).***********************************************************

Вариант 13Дано натуральное N и квадратная целочисленная матрица разме-

ром N×N.Выделить цветом все локальные максимумы этой матрицы и опре-

делить их количество (элемент матрицы называется локальным макси-мумом, если он строго больше всех имеющихся у него соседей).***********************************************************

Page 137: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

137

Вариант 14Дано натуральное N и квадратная целочисленная матрица разме-

ром N×N.Определить количество строк, среднее арифметическое элемен-

тов которых меньше заданной величины.***********************************************************

Вариант 15Дано натуральное N и квадратная целочисленная матрица разме-

ром N×N.Определить максимальное количество одинаковых элемен-тов в каждой из строк этой матрицы.***********************************************************

Page 138: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

138

Приложение 5

Варианты заданий для лабораторной работы 3.4

Вариант 1Построить графики функций1. В декартовой системе координатy = logхa для а>12. В полярной системе координат

R=10t 0 2≤≤ t π

***********************************************************Вариант 2Построить графики функций1. В декартовой системе координат

3

3 2

84

aуa x

=+

2. В полярной системе координатR=1+cos(t) 0<=t<=2π

***********************************************************Вариант 3Построить графики функций1. В декартовой системе координат

thx=x x

x x

e eуe e

−=

+

2. В полярной системе координатR=3*cost – cos3t 0<=t<=2π

***********************************************************Вариант 4Построить графики функций1. В декартовой системе координат

shx2

x xe eу−−

= =

2. В полярной системе координатR=3*sint – sin3t 0<=t<=2π

Page 139: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

139

Вариант 5Построить графики функций1. В декартовой системе координат

1 4 9у x= − +2. В полярной системе координат: уравнение восьмилепестного

венчика(розы)R=acos4t 0<=t<=2π

***********************************************************Вариант 6Построить графики функций1. В декартовой системе координат

1xу е

−=

2. В полярной системе координат: уравнение улиткиR=2cost+5 0<=t<=2π

***********************************************************Вариант 7Построить графики функций1. В декартовой системе координат

21xу е

−=

2. В полярной системе координат:

R= tt

a 2coscos 0<=t<=2π

***********************************************************Вариант 8Построить графики функций1. В декартовой системе координат

chx2

x xe eу−+

= =

2. В полярной системе координат: уравнение строфоиды

R= - a cos2cos

tt

0<=t<=2π

***********************************************************

Page 140: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

140

Вариант 9Построить графики функций1. В декартовой системе координатy = e-x2 2. В полярной системе координатR=2cost+3 0<=t<=2π

***********************************************************Вариант 10Построить графики функций1. В декартовой системе координат

42

yx

= −+

2. В полярной системе координат: уравнение четырехлепестко-вого венчика

R= acos2t 0<=t<=2π***********************************************************

Вариант 11Построить графики функций1. В декартовой системе координат

thxx x

x x

e eye e

−= =

+

2. В полярной системе координат: уравнение кохлеоиды

R= a sin tt

0<=t<=2π

***********************************************************Вариант 12Построить графики функций1. В декартовой системе координат

2

1yx

=

2. В полярной системе координатR= 1+cost 0<=t<=2π

***********************************************************

Page 141: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

141

Вариант 13Построить графики функций1. В декартовой системе координат

2 21 /y x a= −2. В полярной системе координатR = 1 + Sin2t 0<=t<=2π

***********************************************************Вариант 14Построить графики функций1. В декартовой системе координат

211 / ( 1)2

y x= −

2. В полярной системе координатR = Sin6t 0<=t<=2π

***********************************************************Вариант 15Построить графики функций1. В декартовой системе координат

2 31 / ( )y x a= +

2. В полярной системе координатR = Cos(t) ^ 3 0<=t<=2π

Page 142: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

142

Приложение 6

Варианты заданий для лабораторной работы 4.1

Вариант 1В файле, компонентами которого являются целые числа, опреде-

лить количество удвоенных нечетных чисел и переписать их в другой файл.***********************************************************

Вариант 2Дан файл, компонентами которого являются целые числа. Орга-

низовать два дополнительных файла, переписав в один из них все чет-ные числа исходного файла, а в другой – все нечетные.***********************************************************

Вариант 3Дан файл F, компонентами которого являются целые числа. Опре-

делить среднее арифметическое этих чисел и все числа, его превос-ходящие, переписать в файл G.***********************************************************

Вариант 4Дан файл F, компонентами которого являются целые числа. Полу-

чить файл G, переписав в него сначала все положительные элементы файла F, а затем все отрицательные.***********************************************************

Вариант 5Дан файл F, компонентами которого являются целые числа. По-

лучить файл G, переписывая в него из файла F вместо каждой группы из N чисел только максимальное число из этой группы.***********************************************************

Вариант 6Дан файл F, компонентами которого являются строки символов.

Переписать в файл G первые слова каждой строки.***********************************************************

Вариант 7Даны два файла, компонентами которых являются действитель-

ные числа, причем количество элементов в файлах одинаковое. Поме-нять в этих файлах соответствующие элементы с четными номерами.***********************************************************

Page 143: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

143

Вариант 8Дан файл F, компонентами которого являются действительные

числа. Поменять в этом файле порядок следования элементов на об-ратный.***********************************************************

Вариант 9 Дан файл, компонентами которого являются строки символов.

Переписать строки этого файла в другой файл, удалив из каждой стро-ки цифры.***********************************************************

Вариант 10Даны два файла, компонентами которых являются строки симво-

лов. Образовать из этих файлов третий, переписывая в него поочеред-но строки из первых двух файлов.***********************************************************

Вариант 11Дан файл, компонентами которого являются строки символов.

Переписать из этого файла в другой файл из каждой строки только латинские символы.***********************************************************

Вариант 12 Записать в файл F все числа Фибоначчи, не превосходящие задан-

ного положительного числа N, последним числом файла должно быть количество таких элементов.***********************************************************

Вариант 13Дан файл, компонентами которого являются строки символов.

Переписать из этого файла в другой файл из каждой строки только цифры.***********************************************************

Вариант 14В файле, компонентами которого являются целые числа, опреде-

лить количество удвоенных нечетных чисел и переписать их в другой файл.***********************************************************

Вариант 15Дан файл, компонентами которого являются целые числа. Орга-

низовать два дополнительных файла, переписав в один из них все чет-ные числа исходного файла, а в другой – все нечетные.

Page 144: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

144

Приложение 7

Варианты заданий для лабораторной работы 4.2

Вариант 11. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N. Заменить элементы главной диагонали суммами элемен-тов, которые лежат на той же строке и том же столбце.

2. В файле содержатся следующие сведения о студентах некото-рой группы: фамилия, оценки за N экзаменов. Напечатать фамилии только тех студентов, которые успешно сдали все экзамены.***********************************************************

Вариант 21. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N. Разделить матрицу на квадраты размером 3×3. В центре каждого квадрата поместить сумму остальных элементов квадрата.

2. В файле содержатся следующие сведения о студентах некото-рой группы: фамилия, оценки за N экзаменов. Напечатать фамилии тех студентов, которые имеют хотя бы одну задолженность.***********************************************************

Вариант 31. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N. Заменить элементы побочной диагонали суммами эле-ментов, которые лежат на той же строке и том же столбце.

2. В файле содержатся следующие сведения о студентах несколь-ких групп: фамилия, N группы, экзаменационный рейтинг. Напеча-тать средний рейтинг студентов группы с заданным номером.***********************************************************

Вариант 41. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N. Определить номер столбца, в котором находится самая длинная серия одинаковых элементов.

2. В файле содержатся следующие сведения о сотрудниках не-которого учреждения: фамилия, возраст, пол, должность. Напечатать сведения о сотрудниках, возраст которых находится в заданных гра-ницах.***********************************************************

Page 145: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

145

Вариант 51. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N. Заменить элементы главной диагонали суммами элемен-тов, которые лежат на диагоналях, перпендикулярных главной.

2. В файле содержатся следующие сведения о сотрудниках не-которого учреждения: фамилия, возраст, пол, должность. Напечатать сведения о сотрудницах, должность которых совпадает с заданной.***********************************************************

Вариант 61. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N.Определить количество строк, среднее арифметическое элементов которых больше заданной величины.

2. В файле содержатся следующие сведения о студентах несколь-ких групп: фамилия, N группы, экзаменационный рейтинг. Напечатать сведения о тех студентах, рейтинг которых не ниже заданного.***********************************************************

Вариант 71. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N.Определить минимальное из чисел, встречающихся в заданной

матрице более одного раза.2. Дан файл, содержащий следующие сведения об экспортируе-

мых товарах: наименование товара, страна, экспортирующая товар, объем экспорта в долларах. Напечатать все страны, которые экспор-тируют товар заданного наименования.***********************************************************

Вариант 81. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N.Заменить элементы побочной диагонали разностью между сум-

мой элементов, которые находятся в той же строке, и суммой элемен-тов, которые находятся в том же столбце.

2.Дан файл, содержащий следующие сведения об импортируе-мых товарах: наименование товара, страна, импортирующая товар, объем импорта в долларах. Напечатать наименования всех товаров, импортируемых в страну с заданным наименованием, а также общий объем импорта в эту страну.***********************************************************

Page 146: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

146

Вариант 91. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N. Определить все седловые точки матрицы. Элемент Аij яв-ляется седловой точкой матрицы А, если он является минимальным элементом в i-й строке и максимальным в j-м столбце.

2. Дан файл, содержащий следующие сведения о студентах: фа-милия, курс, группа, рейтинг, признак, определяющий обучается ли студент по плановому набору или по контрактному. Напечатать сведе-ния о всех студентах, обучающихся по плановому набору.***********************************************************

Вариант 101. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N.Выделить цветом все локальные максимумы этой матрицы и опре-

делить их количество (элемент матрицы называется локальным макси-мумом, если он строго больше всех имеющихся у него соседей).

2. Дан файл, содержащий следующие сведения о студентах: фа-милия, курс, группа, рейтинг, признак, определяющий обучается ли студент по плановому набору или по контрактному. Напечатать сведе-ния о студентах-контрактниках группы с заданным номером.***********************************************************

Вариант 111. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N.Определить максимальное количество одинаковых эле-ментов в каждой из строк этой матрицы.

2.Дан файл, содержащий следующие сведения о товарах, имею-щихся на складе: наименование товара, его цена и количество товара в кг. Напечатать наименования всех товаров, цена которых не превы-шает заданную.***********************************************************

Вариант 12 1. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N.Определить количество строк, среднее арифметическое элемен-

тов которых меньше заданной величины.2. Дан файл, содержащий следующие сведения об осужденных:

фамилия, возраст, пол, номер статьи, срок осуждения. Напечатать све-дения о мужчинах, осужденных не менее, чем на 8 лет.***********************************************************

Page 147: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

147

Вариант 131. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N. Определить номер строки, в которой находится самая длинная серия одинаковых элементов.

2.Дан файл, содержащий следующие сведения об осужденных: фамилия, возраст, пол, номер статьи, срок осуждения. Напечатать све-дения о женщинах, осужденных по статье c заданным номером.***********************************************************

Вариант 141. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N.Среди диагоналей матрицы, параллельных главной, выделить ту,

сумма элементов в которой максимальна.2.В файле содержатся следующие сведения о студентах некото-

рой группы: фамилия, оценки за N экзаменов. Напечатать фамилии только тех студентов, которые успешно сдали все экзамены.***********************************************************

Вариант 151. Дано натуральное N и квадратная целочисленная матрица раз-

мером N×N.Определить количество элементов, являющихся локальными ми-

нимумами этой матрицы и выделить цветом всех соседей этих эле-ментов (элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей).

2. В файле содержатся следующие сведения о студентах некото-рой группы: фамилия, оценки за N экзаменов. Напечатать фамилии тех студентов, которые имеют хотя бы одну задолженность.

Page 148: ПОГРАММИРОВАНИЕ НА VISUAL BASIC 6lib.krsu.edu.kg/uploads/files/public/3327.pdf · В сочетании с Windows API Visual Basic превращается в серьезный

Т.Г. Турчанова, И.В. ХмелёваПОГРАММИРОВАНИЕ НА VISUAL BASIC 6.0

Учебное пособие

Редактор И.С. ВолосковаКомпьютерная верстка М.Р. Фазлыевой

Подписано в печать 01.09.10Формат 60×84 1/16. Офсетная печать.

Объем 9,25 п.л. Заказ 38.Тираж 100 экз.

Издательство Кыргызско-Российского Славянского университета

720000, Бишкек, ул. Киевская, 44

Отпечатано в типографии КРСУ720048, Бишкек, ул. Горького, 2