- •Для начинающих
- •Содержание
- •Глава 2. Работа в среде Visual Basic 32
- •Часть II. Программирование на Visual Basic – первый уровень 40
- •Глава 0. Переменные величины 41
- •Глава 1. Разветвляющиеся программы 58
- •Глава 2. Циклические программы 72
- •2.5. Оглядимся вокруг 81
- •Глава 3. Отладка программы 82
- •Глава 4. Типичные маленькие программы 86
- •Глава 5. Графика 92
- •Глава 6. Процедуры 106
- •Глава 7. Работа с таймером, временем, датами 115
- •Глава 7. Объекты пользователя 193
- •Глава 2. Устройство и работа компьютера 229
- •Глава 0.Предисловие
- •0.1.Кому предназначена эта книга?
- •0.2.Задачи, игры.
- •0.3.Почему Visual Basic?
- •0.4.Какой вам нужен компьютер и какая версия Visual Basic?
- •0.5.Краткое содержание с рекомендациями
- •Часть I. Программирование без программирования.
- •От автора
- •К читателю
- •Часть I. Программирование без программирования
- •Глава 0.Первые шаги
- •0.1.Что такое программа?
- •0.2.Не программа, а проект
- •0.3.Первые шаги - за ручку
- •Глава 1.Проект - "Калькулятор"
- •1.1.Задание на проект
- •1.2.Проектируем
- •1.3.Свойства форм и элементов управления
- •1.4.Имена и надписи
- •1.5.Программируем. Проект готов
- •1.7.Помещаем фото на калькулятор
- •1.8.Музыка в проекте
- •1.9.Система координат
- •1.10.Вывод сообщений - MsgBox
- •1.11.Меню пользователя
- •1.12.Кино в проекте
- •Val(Число1.Text) _
- •Глава 2.Работа в среде Visual Basic
- •Глава 3. - Отладка программы
- •2.1.Что нужно знать и уметь перед тем, как сесть за компьютер
- •2.2.Инсталляция Visual Basic
- •2.3.Порядок работы над проектом в Visual Basic
- •2.4.Загрузка Visual Basic и выход из него
- •2.5.Сохранение проекта на диске. Загрузка проекта с диска
- •2.6.Окна среды Visual Basic
- •2.7.Главное меню Visual Basic
- •2.8.Перенос вашего проекта на другие компьютеры
- •Часть II. Программирование на Visual Basic – первый уровень
- •Глава 0.Переменные величины
- •0.1.Переменные величины. Оператор присваивания
- •0.2.Объявление переменных величин
- •0.3.Еще об именах
- •0.4.Математика. Запись арифметических выражений
- •0.5.Типы данных и точность вычислений
- •Integer и Long - целые числа
- •Три совета
- •0.6.Порядок создания простого вычислительного проекта
- •Задача:
- •Порядок создания проекта:
- •5. Теперь нужно задать компьютеру действия, которые он должен проделать с исходными данными, чтобы получить результат.
- •0.7.Строковые переменные
- •0.8.Как выводить информацию оператором Print
- •0.9.Диалог с компьютером
- •0.10.Как выводить информацию в текстовое поле
- •0.11.Оглядимся вокруг
- •Глава 1.Разветвляющиеся программы
- •1.1.Что такое выбор (ветвление)
- •1.2.Условный оператор If или как компьютер делает выбор
- •1.3.Правила записи однострочного оператора If
- •1.4.Случайные величины
- •1.5.Многострочный If
- •If условие Then операторы ElseIf операторы
- •1.6.Ступенчатая запись программы
- •1.7.Вложенные операторы If. Логические операции и выражения
- •1.8.Оператор варианта Select Case
- •1.9.Улучшаем калькулятор.
- •If IsNumeric("-67,3") Then MsgBox ("Это число") Else MsgBox ("Это не число")
- •1.10.Функция MsgBox
- •Глава 2.Циклические программы
- •2.1.Оператор перехода GoTo. Цикл. Метки
- •2.2.Выход из цикла с помощью If
- •2.3.Операторы цикла Do
- •2.4.Оператор цикла For
- •2.5.Оглядимся вокруг
- •Глава 3.Отладка программы
- •3.1.Типы ошибок. Сообщения об ошибках.
- •3.2.Отладка программы. Окна отладки. Режимы отладки.
- •Глава 4.Типичные маленькие программы
- •4.1.Вычислительная циклическая программа
- •4.2.Роль ошибок
- •4.3.Счетчики
- •4.4.Сумматоры
- •4.5.Вложение циклов в разветвления и наоборот
- •4.6.Вложенные циклы
- •4.7.Поиск максимального из чисел
- •Глава 5.Графика
- •5.1.Объекты. Их свойства, их события, их методы
- •5.2.Три способа рисовать
- •5.3.Первый способ - Загрузка в Visual Basic готовых изображений
- •5.4.Второй способ - Объекты Line и Shape
- •5.5.Взаимное перекрытие объектов. Метод zOrder
- •5.6.Цвет в Visual Basic
- •5.7.3 Способ - Рисуем при помощи графических методов
- •Снеговик Ефрем
- •5.8.Используем в рисовании переменные величины
- •5.9.Использование случайных величин при рисовании
- •Глава 6.Процедуры
- •6.1.Зачем нужны процедуры пользователя
- •6.2.Операторы Stop, End и Exit Sub
- •6.3.Переменные вместо чисел
- •6.4.Константы
- •6.5.Процедуры с параметрами
- •Private Sub Рисуем_мой_значок (Otstup As Integer, Razmer As Integer, Tsvet As Long)
- •Глава 7.Работа с таймером, временем, датами
- •7.1.Тип данных Date
- •7.2.Таймер
- •7.3.Проект "Будильник-секундомер"
- •7.4.Анимация
- •Глава 8.Работа с мышью и клавиатурой
- •8.1.Работа с мышью
- •8.2.Работа с клавиатурой
- •8.3.Проект - Гонки (игра)
- •8.4.Задание на игру “Торпедная атака
- •Часть III. Программирование на Visual Basic - второй уровень
- •Глава 0.Массивы
- •0.1.Переменные с индексами
- •0.2.Одномерные массивы переменных величин
- •0.3.Двумерные массивы
- •0.4.Какие бывают массивы
- •0.5.Использование массивов при программировании игр
- •0.6.Массивы элементов управления
- •Глава 1.Разные звери в одном ковчеге
- •1.2.Пользовательский тип данных
- •1.3.Коллекции
- •1.4.Рамка (Frame)
- •Глава 2.Элементы управления
- •2.1.Флажок (CheckBox)
- •2.2.Переключатель (OptionButton)
- •2.3.Полосы прокрутки (hScrollBar и vScrollBar)
- •2.5.Список (ListBox) и поле со списком (ComboBox)
- •2.6.Знакомство с другими элементами управления
- •Глава 3.Строки, файлы, обработка ошибок
- •3.1.Строки
- •3.2.Файлы
- •3.3.Функция Shell
- •3.4.Обработка ошибок. Оператор On Error
- •Глава 4.Функции. Параметры процедур и функций
- •4.1.Функции. Параметры функций
- •4.2.Локальные переменные
- •4.3.Массивы как параметры
- •4.4.Передача параметров по ссылке и по значению
- •4.5.Индукция. Рекурсия
- •4.6.Сортировка
- •4.7.Объекты, как параметры процедур
- •Глава 5.Проект, который выглядит солидно
- •5.1.Из чего бывает "сделано" приложение Windows
- •5.2.Элемент управления CommonDialog
- •5.3.Панель инструментов Toolbar
- •5.4.Проект - "Графический редактор"
- •Глава 6.Проекты из нескольких форм и модулей
- •6.1.Работа с несколькими формами
- •6.2.Модули кода
- •6.3.Структура проекта. Окно Project Explorer.
- •6.4.Зоны видимости
- •6.5.Затенение
- •6.6.Префиксы имен
- •6.7.К чему все эти сложности?
- •Глава 7.Объекты пользователя
- •7.1.Инкапсуляция - "Объект в футляре"
- •7.2.Игра "Сачок". Постановка задачи
- •7.3.Таймер и общая механика работы проекта
- •7.4.Этап проектирования
- •7.5.Порядок создания объектов
- •7.6.Создаем ловца
- •7.7.Создаем шар. Завершаем проект
- •7.8.Еще об объектах
- •Глава 8.Visual Basic и Интернет
- •8.1.Понятие об Интернет, Web-станицах и языке html
- •8.2.Создание Web-страницы
- •8.3.Сценарий на Web-странице
- •8.4.Доступ к локальному диску
- •8.5.Собственный броузер
- •Глава 9.Visual Basic и базы данных
- •9.1.Понятие о базах данных
- •9.2.Создаем заготовку базы данных при помощи Visual Data Manager
- •9.3.Работа с базами данных. Элементы управления Data и dbGrid. Язык sql.
- •Глава 10.До свидания
- •10.1.Нерассмотренные возможности Visual Basic
- •10.2.Миг между прошлым и будущим
- •Приложение 1. Необходимые сведения о компьютере и программе
- •Глава 0.Первое представление о компьютере и программе
- •0.1.Что такое компьютер. Первое представление о программе.
- •0.2.Как человек общается с компьютером
- •Глава 1.Программа и программирование
- •1.1.Список команд. Командный и программный режимы
- •Последовательность работы человека с роботом
- •1.2.Что важно знать о программе
- •1.3.Понятие о процедуре. Может ли робот поумнеть?
- •1.4.Программа для компьютера на машинном языке
- •1.5.Языки программирования
- •1.6.Пример настоящей программы для компьютера на языке Лого
- •1.7.Последовательность работы программиста на компьютере
- •1.8.Основные приемы программирования
- •Глава 2.Устройство и работа компьютера
- •2.1.Как устроен и работает компьютер
- •Процессор
- •Порядок обмена информацией между устройствами компьютера
- •2.2.Устройство и размеры оперативной памяти
- •2.3.Взаимодействие программ в памяти
- •2.4.Внешние устройства компьютера
- •Устройства ввода
- •1. Клавиатура.
- •2. Мышь.
- •Устройства вывода
- •Внешняя память
- •Связь компьютеров между собой. Модем. Сети
- •2.5.Кодирование информации в компьютере
- •Приложение 2. Работа в Windows. Ввод текста
- •Работа в Windows
- •Файлы и папки
- •Как вводить программу в компьютер или работа с текстом в текстовом редакторе
- •Решение заданий
- •Список литературы
- •Предметный указатель
5.2.Три способа рисовать
В Visual Basic есть три основных способа использовать графику:
Не входя в Visual Basic, в каком-нибудь графическом редакторе вы можете нарисовать то, что вам нужно, или найти на диске готовый файл с подходящим рисунком. Затем, войдя в Visual Basic, придать этот рисунок форме или другому объекту, как это объяснялось в Глава 1.
В Toolbox имеется два элемента управления: Line (Линия), имеющий вид отрезка прямой различного цвета, толщины и стиля, и Shape (Фигура), принимающий вид прямоугольников, окружностей и эллипсов тоже различного цвета, толщины и стиля. Если их на этапе проектирования поместить на форму и придать им нужные размеры и прочее, то можно получить, в общем, любую картинку по принципу "Точка, точка, огуречик, вот и вышел человечек".
Форма, элемент управления PictureBox и некоторые другие объекты обладают методами, работа которых заключается в том, чтобы рисовать на поверхности своего хозяина точки, отрезки, прямоугольники, окружности, эллипсы, дуги и сектора, в общем, все то, что достигалось предыдущим способом. Эти методы будем называть графическими. Основное отличие от предыдущего способа в том, что здесь все надо программировать, а там все делалось вручную. У каждого из этих способов есть и другие преимущества и недостатки, о чем позже.
Есть и другие, более продвинутые, сложные и громоздкие способы, но ими пользуются только тогда, когда цели нельзя достигнуть указанными тремя. Рассмотрим по очереди все три способа.
5.3.Первый способ - Загрузка в Visual Basic готовых изображений
Рассмотрим первый способ использования графики в Visual Basic.
Придать объекту картинку можно, установив его свойство Picture:
в режиме проектирования - вручную,
в режиме работы - использовав функцию LoadPicture. Например,
Form1.Picture = LoadPicture("C:\TEMP\Rockies.bmp")
Здесь в скобках в кавычках пишем адрес файла с картинкой на диске. Вкратце этот процесс описан в Глава 1.
Если у вас в проекте несколько объектов, имеющих свойство Picture, то картинку можно мгновенно "скопировать" с одного объекта на другой так:
Image4.Picture = Form1.Picture
Если вы хотите удалить картинку с объекта:
в режиме проектирования вы должны буквально стереть значение свойства Picture из окна свойств.
в режиме работы вы должны написать оператор такого вида:
Form1.Picture = LoadPicture("")
Типы графических файлов
Visual Basic 6.0 поддерживает (воспринимает и работает с ними) графические файлы следующих типов:
Расширение файла |
Краткое описание |
.BMP, .DIB |
Фотографии и любые другие растровые изображения. |
.ICO |
Значки (пиктограммы, иконки) - очень маленькие |
.CUR |
Значки курсоров - очень маленькие |
.WMF, .EMF |
Метафайлы Windows - векторные изображения |
.GIF |
Растровые изображения, применяются в Интернете |
.JPG, .JPEG |
Растровые изображения (часто пониженного качества, зато экономные), применяются в Интернете |
Где взять все эти файлы? Многие из этих типов вы найдете в папке Graphics, находящейся в папке, посвященной Visual Basic. Многие - в папке Clipart из папки Microsoft Office. В папке Windows вы найдете большую картинку Облака.bmp. Красивые картинки типа JPG находятся по адресу C:\Program Files\Plus!\Themes. Если вы умеете в Windows запускать поиск файлов по расширениям, то поищите, что-нибудь обязательно найдете. Если у вас есть любимая фотография или картинка в журнале, попросите своего знакомого, у которого есть сканер, отсканировать ее и записать на вашу дискету. Дело пяти минут. На дискете при обычном сканировании уместятся 3-4 фотографии, а в формате JPG - 30-40. Ну а если у вас есть Интернет, то тут и говорить не о чем.
Регулировка размеров изображений
Рассмотрим, как размещаются и умещаются ли картинки в объектах нашего проекта.
Сначала испытаем форму. Загрузим в нее любой растровый файл и попробуем изменять размеры формы. Мы видим, что и в режиме проектирования и в режиме работы эти изменения никак не влияют на саму картинку - если форму совсем уменьшить, то мы будем видеть лишь часть картинки, если слишком увеличить - справа и снизу формы останутся пустые места. Сама картинка не увеличится и не уменьшится. А вот если загрузить векторную картинку, то она будет автоматически растягиваться и сжиматься по размерам формы.
А
теперь испытаем элемент управления
PictureBox.
Он специально предназначен для размещения
картинок. Проверьте и убедитесь, что по
отношению к ним он ведет себя так же,
как форма. Зачем он тогда нужен? Для
многого. У него есть, например, свойство
AutoSize,
которое, если установить его в True,
заставляет PictureBox
в режиме работы подстраивать свои
размеры под размеры картинки. (А что
происходит в режиме проектирования,
вряд ли нас должно интересовать, правда?)
Получается вот что:
В этом случае даже векторная графика перестает быть послушной и заставляет PictureBox (в режиме работы, а не проектирования!) подстраиваться под свои размеры.
А
теперь испытаем элемент управления
Image.
Он тоже специально предназначен для
размещения картинок. Проверьте,
установлено ли его свойство Strech
в False,
и убедитесь, что по отношению ко всем
видам графики объект Image
в режиме работы подстраивает свои
размеры под размеры картинки. В чем же
тогда его отличие? Вот в чем. Установите
свойство Strech
в True,
это заставит уже картинку в режиме
работы подстраивать свои размеры под
размеры
Image,
а не наоборот. Любую картинку, в том
числе и растровую.
Получается вот
что:
Выходит, что свойство Strech - переключатель того, что подо что "прогнется" - Image под картинку или картинка под Image.
А теперь самостоятельно испытайте кнопку - CommandButton. Но перед испытанием обязательно придайтете ее свойству Style значение Graphical, иначе никаких картинок на кнопке не будет видно. Кроме свойства Picture у кнопки есть еще, например, такое свойство - DownPicture. Оно определяет другую картинку, а именно ту, которую мы видим, нажав кнопку и не отпуская ее.
Задание 60: Вы профессиональный продавец автомобилей. Вы приезжаете к покупателю, достаете портативный компьютер, на экране - несколько десятков кнопок, на каждой - маленькая фотография одного из продаваемых автомобилей. Покупатель говорит: "Вот этот покажите, пожалуйста". Вы нажимаете кнопку и на экране возникает та же фотография, но увеличенная.
Помощь: Если вы собираетесь в качестве кнопок использовать элементы управления CommandButton, то уменьшенные фото вам придется предварительно сделать в каком-нибудь графическом редакторе и сохранить их в отдельные файлы, постаравшись, чтобы эти маленькие картинки на экране были примерно одинаковых размеров. Но можно и избежать такой потери времени. Ведь кнопками могут служить объекты Image! Потому что у объекта Image тоже есть событие Click! Создайте на форме несколько маленьких Image и один большой и в маленькие впишите фото. По щелчку мыши по маленькому Image большой Image пусть копирует в себя его картинку.
Необязательное усложнение для тех, кто не боится системы координат: Если у вас все получилось, то вы уже обратили внимание на одну проблему. Проблема в том, что размеры и форма исходных фото разные: одни продолговатые, другие квадратные (а если у вас одинаковые, то сделайте разными, а то неинтересно). Бог с ними, с кнопками (хотя с ними та же самая проблема), нам хочется, чтобы хоть большие-то картинки располагались на экране симметрично как по горизонтали, так и по вертикали, и имели максимально возможный размер. Вот этой цели я и хочу, чтобы вы достигли. Для этого вам придется использовать оператор ветвления, а также свойства, задающие размер и местоположение объектов.
Проверьте, чтобы форма была распахнута на весь экран. Как это сделать, я объяснял в 1.6.
После щелчка мыши по кнопке компьютер должен сделать следующее:
Настроить большой Image, чтобы он подстраивался под размеры картинки, установив сами знаете какое свойство.
Пусть большой Image копирует в себя картинку из маленького. На форме появится более-менее большое фото неискаженных пропорций, но не по центру. Все это у вас уже давно готово. Задача - увеличить фото еще больше, и чтобы оно было по центру.
Поделить ширину формы на ее высоту, чтобы узнать ее "продолговатость". (Это надо бы пораньше, да ладно.)
Поделить ширину Image на его высоту, чтобы узнать "продолговатость" картинки.
Если продолговатость картинки больше, чем продолговатость формы, то в идеале при максимальном увеличении картинка должна почти упереться левым и правым краем в края формы, а сверху и снизу должно остаться одинаковое пространство. Для этого нужно выполнить несколько операторов присваивания, увеличивающие размер и изменяющие местоположение Image, да так, чтобы продолговатость Image равнялась продолговатости картинки, а затем заставить картинку принять размеры Image.
Если продолговатость картинки меньше, чем продолговатость формы, то в идеале при максимальном увеличении картинка упрется верхним и нижним краем в края формы, а слева и справа должно остаться одинаковое пространство. Здесь тоже нужно выполнить несколько аналогичных операторов.
Таким образом, при щелчке по кнопке на форме возникает фото и сразу же за этим вместо него - оно же, но увеличенное и по центру. Если вам не нравится такое мелькание, поэкспериментируйте в программе со свойством Visible объекта Image. Гарантирую прекрасные результаты.
Другие полезные сведения
Если вы загружаете картинку в объект в режиме проектирования, то Visual Basic сохраняет ее в одном из файлов, из которых состоит ваш проект. Это резко увеличивает размеры вашего проекта на диске и время загрузки проекта, зато теперь вы можете безнаказанно стереть исходный графический файл с диска. Если вы загружаете картинку в объект в режиме работы, то все наоборот.
Преимущество формы и PictureBox в том, что вы при помощи их методов можете печатать информацию прямо на их картинке и рисовать по ней (например, пририсовать кому-нибудь очки).
