.RU
Карта сайта

Ii. Программирование на Visual Basic – первый уровень 24 - 3

^

Глава .1Проект - "Калькулятор"


В этой главе на примере создания калькулятора я хочу познакомить вас с простыми и приятными возможностями Visual Basic. По сути, калькулятор будет нам проводником по элементарным средствам Visual Basic. Многие из них вы найдете именно в этой главе. По ходу дела нам удастся углубить и расширить наши знания Visual Basic. В то же время глава носит несколько рекламный оттенок. Перед вами распахнется скатерть-самобранка, на которой вы увидите в основном то, что повкуснее и не требует разгрызания. Однако, среди вкусного будет и полезное, и необходимое, поэтому читать главу "по диагонали" никак нельзя, без нее не будет понятно все остальное.
^

1.1.Задание на проект


В Error: Reference source not found мы с вами ничего путного не создали, зато прошли с начала до конца весь путь создания проекта на Visual Basic.
Сейчас мы поставим перед собой задачу сделать реальную вещь - калькулятор. Примерно такой же, какой имеется в Windows. Если вы его забыли, то в Windows (а отнюдь не в Visual Basic), выполните такие действия:

Пуск  Программы  Стандартные  Калькулятор

. Как по вашему - много сил затратила фирма Microsoft на его создание? Калькулятор, который создадим мы, в смысле математики будет попроще, зато он будет красивым, снабжен музыкой, паролем и разными другими "приколами".
Начнем с того, что придумаем нашему калькулятору внешний вид (пока скромный):



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

1.2.Проектируем


Создайте новый проект и разместите на форме три текстовых поля и четыре кнопки. У вас получится вот так:

Чтобы продолжить дальше, нам нужно поближе познакомиться со свойствами форм и элементов управления.
^

1.3.Свойства форм и элементов управления


Чуть раньше мы уже познакомились с такими свойствами объектов, как BackColor, FontSize, Text. Количество свойств у каждого из объектов довольно большое. Многие из них мы можем менять в режиме работы [run] при помощи программы, как мы это уже делали (например, Form1.BackColor = vbRed). Оказывается, многие свойства форм и элементов управления можно менять и в режиме проектирования [design]. Делается это вручную, безо всякого программирования (для того и задумано, что вручную легче!).
Вы сейчас в режиме [design]? Хорошо. Один щелчок по кнопке Command1. При этом на кнопке появляются маркеры. Говорят, что объект

выделен

, стал

активным

. В этом случае его свойства вы можете видеть в

окне свойств объекта

(см. рисунок в Error: Reference source not found). Если это окно кажется вам маловатым, попробуйте растянуть его, ухватившись за края. В окне два столбца: название свойства и его значение. Для вашего удобства свойства могут быть упорядочены по алфавиту (закладка alphabetic) или сгруппированы по категориям (закладка categorized).
Попробуем изменить значение какого-нибудь свойства кнопки Command1. Найдите в окне свойство Width (ширина), а справа - его численное значение. Введите вместо имеющегося там числа другое число, например, 200. Вы видите, что ширина кнопки изменилась. Точно такого же результата вы добились бы в режиме работы [run], выполнив оператор Command1.Width = 200. А теперь поступим наоборот - перетащим немного влево или вправо один из маркеров кнопки. Мы увидим, что соответственно изменилось и число.
Выделим щелчком какой-нибудь другой объект. Теперь в окне свойств - его свойства. Выделим форму, щелкнув по любому свободному месту ее поверхности - теперь мы видим и можем менять ее свойства. И так далее.
С названиями и смыслом разных свойств я буду знакомить вас постепенно.
^

1.4.Имена и надписи


У каждого объекта есть

имя

(Name). У многих есть

надпись

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

по умолчанию

) сам придает значения свойствам, в том числе именам и надписям, причем, недолго думая, имя и надпись он делает одинаковыми. Проверим. Выделим форму. Заглянем в окно свойств и найдем там имя (Name) - оно в алфавите выше всех. Так и есть, имя нашей формы - Form1. Изменим его, скажем, на слово Калькулятор. Изменили. И что же? В заголовке формы ничего не изменилось. Дело, конечно, в том, что в заголовке мы видим не имя, а надпись. Имя остается скрытым (полковник Исаев), а надпись видна всем (Штирлиц). Убедимся в этом. Найдем в окне свойств свойство надпись (Caption). Ну конечно - надпись на нашей форме - тоже Form1. Изменим ее на Личный калькулятор Вовочки - классного программиста. Теперь все в порядке.
Зачем мы изменили надпись, нам понятно. А почему надо было менять имя? Ну, хотя бы потому, что оператор
Калькулятор.Width=6000
как-то понятнее, чем
Form1.Width=6000
Займемся кнопками. Выделим кнопку Command1 и дадим ей имя Кл_сложения.

Внимание! Имя должно состоять только из букв, цифр и знаков подчеркивания, причем начинаться имя должно с буквы. Раз в именах запрещены пробелы, я использовал вместо них знак подчеркивания.


Подробнее об именах см. в 0.3.
Надпись нашей кнопки должна состоять из единственного символа

+

. Найдем

+

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

диалоговое окно

, предлагающее выбрать размер шрифта (Size), стиль (Font Style), сам шрифт (Font) и кое-что другое. Стиль может быть обычным (Regular), курсивом (Italic),

полужирным

(Bold) и

полужирным курсивом

(Bold Italic). Среди самих шрифтов (Font) попадаются любопытные. Выберите размер и прочее по вкусу. С клавишей сложения закончили.

Аналогичным образом придайте имена и надписи трем другим кнопкам. Имена: Кл_вычитания, Кл_умножения, Кл_деления. В качестве надписей для клавиш умножения и деления можете выбрать букву Х и двоеточие.
Теперь займемся текстовыми полями. Придумаем и дадим им имена: Число1, Число2, Результат. А вот свойства Надпись (Caption) у текстовых полей нет. Вместо него есть свойство Text. Поскольку мы хотим, чтобы в начале работы с калькулятором в текстовых полях было пусто, сотрем в окне свойств значения свойства Text для всех трех полей.
А теперь займемся пояснительным текстом в левой части калькулятора (Первое число, Второе число, Результат). Для этого нам понадобится новый элемент управления - Label (метка), который в основном для пояснений и применяется. Найдите Label в окне Toolbox и поместите на форму три метки. Ваш проект выглядит так:


Заглянем в свойства меток. Мы видим, что Visual Basic по обыкновению дал каждой метке совпадающие имя и надпись (Label1, Label2, Label3). Имена менять мы не станем затрудняться, потому что в программе они никак участвовать не будут, а надписи, конечно, переменим на Первое число, Второе число, Результат, да и шрифт, пожалуй, увеличим.
Нам остается поместить на форму горизонтальную линию. Для этого найдем в окне Toolbox элемент управления Line (линия) и проведем линию на форме. Чтобы она была потолще, изменим в окне свойств свойство линии BorderWidth.
Итак, проектирование первой версии калькулятора закончено! Теперь калькулятор выглядит так, как задано. Можно приступать к программированию.
^

1.5.Программируем. Проект готов


Запустим проект. Введем в верхнее текстовое поле число 3, а в среднее введем 2. Щелкнем по кнопке сложения. Ничего не произошло. Естественно. Ведь никакой процедуры мы для кнопки не написали. Завершим работу проекта. Двойным щелчком по кнопке сложения откроем окно кода и попытаемся выдумать, что же там написать. Рассуждать будем так: 3 и 2 - не что иное, как значения свойства Text текстовых полей Число1 и Число2. По-другому, это Число1.Text и Число2.Text. Нам нужно, чтобы Результат.Text равнялся их сумме. Что если написать такой оператор:
Результат.Text = Число1.Text + Число2.Text
Сказано - сделано. Получаем:
Private Sub Кл_сложения_Click()
Результат.Text = Число1.Text + Число2.Text
End Sub
Запускаем проект. Вводим 3 и 2. Щелкаем по кнопке сложения. Результат есть. Но не совсем тот, что мы ожидали. Вместо 5 получилось 32. В чем причина? Дело в том, что Visual Basic привык считать знак

+

по отношению к содержимому текстовых полей не знаком сложения, а знаком "соединения". Проверьте. Вместо 3 и 2 введите Коро и бочка, в результате получится Коробочка. Недаром текстовые поля называются текстовыми, а не числовыми. То, что мы назвали их Число1 и Число2, делу никак не помогло, потому что Visual Basic не обращает внимания на смысл имен, для него имена - просто бессмысленные сочетания символов.
Что делать? Надо приказать Visual Basic обращаться в данном случае с содержимым текстовых полей не как с текстом, а как с числами. Для этого достаточно записывать их не в таком виде - Число1.Text и Число2.Text, а в таком - Val(Число1.Text) и Val(Число2.Text). Здесь

Val

- сокращение от Value - величина, численное значение. Теперь наш оператор будет выглядеть так:
Результат.Text = Val(Число1.Text) + Val(Число2.Text)
Кстати, после ввода открывающей скобки Visual Basic услужливо предложит подсказку на тему о том, что должно быть в скобках. Со временем вы научитесь эту подсказку понимать.
Запускаем проект. Вводим два любых целых числа и убеждаемся, что все складывается правильно.
Аналогично программируем три остальные кнопки. Вот как будет выглядеть после этого окно кода:
Private Sub Кл_сложения_Click()
Результат.Text = Val(Число1.Text) + Val(Число2.Text)
End Sub
__________________________________________________
Private Sub Кл_вычитания_Click()
Результат.Text = Val(Число1.Text) - Val(Число2.Text)
End Sub
__________________________________________________
Private Sub Кл_умножения_Click()
Результат.Text = Val(Число1.Text) * Val(Число2.Text)
End Sub
__________________________________________________
Private Sub Кл_деления_Click()
Результат.Text = Val(Число1.Text) / Val(Число2.Text)
End Sub
Пояснения: В языках программирования умножение обозначается звездочкой

*

, а деление - косой чертой

/

.

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


Итак, калькулятор готов!
Предостережения: Наш калькулятор пока не защищен от ввода вместо чисел всякой ерунды (например, текста КУ-КУ), от ввода слишком больших или слишком маленьких чисел, от деления на ноль. В таких случаях Visual Basic дает неправильный или неудобочитаемый результат или сообщение об ошибке. Защиту вы найдете в 1.9.

Задание 1

Создайте кнопку возведения в квадрат числа из верхнего текстового поля. Указание: Возвести в квадрат - значит умножить само на себя.

Задание 2

На нашем калькуляторе не хватает кнопки СБРОС, которая опустошала бы все три текстовых поля. Создайте ее. Указание: Для этого вам понадобятся операторы типа Число1.Text = "". В программах текстовое содержимое текстовых полей должно указываться в кавычках. В данном случае у нас внутри кавычек пусто, что и требовалось.
^

1.6.Кое-какие другие свойства объектов


Начнем в режиме проектирования украшать и усовершенствовать наш калькулятор. Для этого рассмотрим некоторые другие свойства объектов, из которых он сконструирован. Многие из этих свойств имеются у большинства объектов, некоторые - только у одного-двух. Прочтя материал об очередном свойстве, вам надлежит тут же проверить, как его различные значения влияют на вид и поведение формы, кнопок, текстовых полей и меток в режиме [run].

^ Полезный совет: У объектов очень много не объясненных мной свойств. Природная любознательность толкнет вас "поперед батьки" разобраться, что они значат, придавая им для этого наугад какие-нибудь значения. Нет проблем - ломайте голову на здоровье. Проблема же в том, что кое-кто норовит сохранить проект с измененными значениями неведомых свойств. А потом проект начинает себя вести как-то непонятно. Мораль - "Верни, как было!"


BackColor

(цвет объекта) - знакомое свойство. Щелкнем по нему. В поле значения появилась кнопочка с черной треугольной стрелкой. Щелкнем по ней - перед нами появилось окно с двумя закладками. Выберем Palette (палитра) и понравившийся цвет.

ForeColor

(цвет текста и линий, рисуемых на объекте).

Appearance

(внешний вид) - 3D (трехмерный) или Flat (плоский).

BorderStyle

(стиль границы). Здесь 6 вариантов, и заведуют они не только стилем границы, но и количеством кнопок на форме, и возможностью изменять размеры формы в режиме [run].

ToolTipText

(всплывающая подсказка). Вы, возможно, привыкли к тому, что когда во время работы в приложениях Windows, таких как Word, вы помещаете курсор мыши на значок какого-нибудь инструмента, то рядом со значком появляется подсказка, поясняющая, зачем этот инструмент нужен.
Введите любой текст в качестве значения свойства ToolTipText. Запустите проект. Поместите курсор мыши на объект. Текст всплыл. Очень приятное свойство.

MouseIcon

,

MousePointer

(значок мыши, указатель мыши). Эти свойства позволяют вам менять внешний вид мышиного курсора. Выберите кнопку и задайте для ее свойства MousePointer значение 2 (крест). Запустите проект. Поместите курсор мыши на объект. Курсор приобрел вид креста.
Если вы зададите вид мышиного курсора для объекта Форма, то он будет иметь заданный вид над всей поверхностью формы и теми объектами на форме, для которых он еще не изменен.
Всего у свойства MousePointer 16 скромных значений. MouseIcon позволяет вам задать более живописный значок для курсора. Для этого предварительно установите значение MousePointer в 99. Затем щелкните по троеточию в MouseIcon и в открывшемся окне проводника найдите значки мышиного курсора в папке Windows\Cursors или в папках Cursors и Icons, расположенных в папке Graphics, которая сама расположена в папке, куда установлен ваш Visual Basic.
Поиграли со значками мышиного курсора? А теперь верните все, как было. Не стоит без дела отвыкать от стандартного интерфейса - это рассеивает внимание. Экзотика хороша в экзотических случаях.
Следующие четыре свойства применимы только к форме.

MaxButton

(кнопка максимизации - квадратик в правом верхнем углу формы). Сейчас значение этого свойства - True (Правда). Если установить его в False (Ложь), то квадратик пропадет или станет недоступен.

MinButton

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

Moveable

(можно ли двигать). Установите это свойство в False и вы увидите, что в режиме [run] форму нельзя таскать по экрану за заголовок. Хотя можно перетаскивать ее границы.

WindowState

определяет, в каком виде возникает форма при запуске проекта: 0 - в нормальном, 1 - в минимизированном (то есть вы найдете ее на панели задач Windows) или 2 - максимизированном (во весь экран).

Visible

(видимый). Обычно значение этого свойства - True (Правда). Если установить его в False (Ложь), то элемент управления перестанет быть виден в режиме работы. Но будет слушаться программу.

Enabled

(в рабочем состоянии). Обычно значение этого свойства - True. Если установить его в False, то элемент управления виден будет, но он не будет работать и им нельзя будет пользоваться. Обычно он приобретает при этом бледно-серый оттенок.

Alignment

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

MultiLine

. Если установить это свойство текстового поля в True, то в текстовое поле вы сможете вводить не одну, а много строк. А если вы измените значение его свойства

ScrollBars

, то снабдите текстовое поле одной или двумя полосами прокрутки.
^

1.7.Помещаем фото на калькулятор


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

Picture

. Затем щелкните по троеточию. В открывшемся окне проводника доберитесь до нужного вам графического файла. Щелкните по Open - в результате фото окажется на форме. Можно использовать и другие типы графических изображений (см.5.3). Если у вас установлен Microsoft Office, то вы можете в его папке найти папку Clipart и там поискать файлы векторной графики.
Если вам не хочется занимать под фото все пространство формы, вы можете поместить на форму один из двух новых для вас элементов управления -

PictureBox

или

Image

- и аналогичным образом поместить изображение в них.
Графику можно поместить и на кнопку (предварительно установив свойство Style кнопки в Graphical).
^

1.8.Музыка в проекте


Если у вашего компьютера есть звуковая карта, то вы можете добавлять в ваш проект самые разнообразные музыкальные и звуковые эффекты.
Сделаем так, чтобы при запуске проекта раздавалась музыка (а если вы умеете с микрофона записывать свой голос в файл - то и ваш голос). Звуковой файл с музыкой или вашим голосом уже должен находиться на жестком диске или на компакт-диске. Вы можете прекрасно прослушивать файлы в форматах MID, WAV, а в большинстве случаев и MP3 и некоторых других. Кстати, в Интернете и на компьютерных компакт-дисках подавляющая часть музыки имеет формат MP3. Этот формат становится все более популярным, так как позволяет уместить на диск в десять раз больше музыки, чем, скажем, WAV. Если вы не знаете ни одного звукового файла, то могу подсказать, что несколько десятков их хранятся в вашем компьютере по адресу C:\Windows\Media. Пусть мы хотим воспроизвести один из них - файл Canyon.mid.
Проверьте настройки вашей звуковой карты в программе «Микшер». Для этого в среде Windows нажмите

^ Пуск  Программы  Стандартные  Развлечения  Регулятор громкости

. В возникшем окне снимите флажки (галочки) выключения канала и установите максимальный уровень у каналов Wave (для WAV-файлов и MP3-файлов) и MIDI (для MID-файлов и RMI-файлов). Для работы с микрофоном зайдите в «Свойства», затем в закладку «Запись», установите флажок включения канала и установите максимальный уровень у канала «Микрофон».
Чтобы воспользоваться звуковым файлом, вам нужно расположить на форме элемент управления Microsoft Multimedia Control 6.0. Но его нет в стандартном наборе на панели Toolbox. Сначала его нужно туда поместить. Для этого:

Projects  Components 

вы находите его в длинном списке и ставите против него галочку

OK

. Он появился в Toolbox. Теперь им можно пользоваться обычным образом.
Поместим его на форму. Дадим ему имя (например, Плеер). Вы видите, что у него есть клавиши. Чтобы все нужные вам клавиши были работоспособны в режиме [run], установите соответствующие свойства в окне свойств, но проще так: щелкните по Плееру правой клавишей мыши

 Properties  Controls 

поставьте по две галочки против каждой нужной вам клавиши.
Для того, чтобы музыка зазвучала, Visual Basic должен выполнить следующие операторы:
Плеер.DeviceType = "Sequencer"
Плеер.FileName = "c:\Windows\Media\Canyon.mid"
Плеер.Command = "Open"
Плеер.Command = "Play"
Пояснения: Первая строка выбирает тип устройства (DeviceType) внутри вашей звуковой карты, которое будет проигрывать ваш звуковой файл. Для файлов с расширением mid, rmi используется устройство Sequencer. Для файлов с расширением wav, mp3 используется устройство WaveAudio.
Вторая строка объясняет компьютеру, откуда брать звуковой файл.
Третья строка дает команду (Command) на открытие (Open) файла. Это необходимо для дальнейшей работы с ним.
Четвертая строка дает команду на начало воспроизведения (Play) файла и вы слышите музыку.
Мы привыкли, что все, что ни происходит в проекте, происходит при нажатии кнопок. Потому что все процедуры, которые мы писали до этого, объясняли компьютеру, как реагировать на одно-единственное

событие

- щелчок мышкой по кнопке. Как сделать, чтобы вышеприведенные 4 оператора выполнялись сразу же при запуске проекта без нажатия каких бы то ни было кнопок? Существуют ли какие-либо другие события, не сводящиеся к щелчкам мыши? Да, и их много (например, нажатие клавиши на клавиатуре или факт изменения текста в текстовом поле). Но мы их раньше не замечали, так как Visual Basic на них никак не реагировал. Одно из них - загрузка формы (Form_Load) - наступает автоматически при запуске проекта (конечно, если вы этому специально не воспрепятствуете) и кроме всего прочего имеет следствием появление формы на экране. Оно-то нам и нужно.
Сделаем двойной щелчок по форме. Возникнет заготовка новой процедуры:
Private Sub Form_Load()
End Sub
Ее заголовок можно вольно перевести так: "Что делать, когда загружена форма", а для нас это фактически означает "Что делать, когда запущен проект". Естественно, в эту процедуру мы записываем наши 4 оператора. Музыка готова. Пока не запускайте проект.
Если вы хотите, чтобы ваше музыкальное сопровождение правильно работало, нужно позаботиться, чтобы звуковой файл после окончания воспроизведения своевременно закрывался командой "Close". В нашем случае других звуковых файлов не используется, поэтому закрытие файла можно отложить на самый последний момент - момент завершения работы проекта. С ним связано событие Form_Terminate. Вот ваши следующие три строки:
Private Sub Form_Terminate()
Плеер.Command = "Close"
End Sub
Помните, что событие Form_Terminate наступает только тогда, когда мы завершаем работу проекта, щелкнув по крестику в правом верхнем углу формы, а не кнопкой End на панели инструментов.
Проверьте, как работает наша музыка, запустив проект.

^ Музыка в кнопках


Поставим задачу - сделать так, чтобы при нажатии на калькуляторе каждой из четырех клавиш арифметических действий раздавался какой-нибудь короткий мелодичный звук, причем для каждой клавиши свой. Таких звуков много по адресу C:\Windows\Media. Там они записаны в файлах, имеющих расширение wav. Выберем из них Chime.wav, Notify.wav, Tada.wav и Logoff.wav.
Разместим в проекте еще один элемент Microsoft Multimedia Control 6.0. Дадим ему имя Звук. Его клавиши нам не нужны, нам ни к чему управлять короткими звуками. А раз так, то сделаем объект Звук невидимым. Для этого его свойству

Visible

придадим значение False.
Устройством для воспроизведения Wav-файлов является WaveAudio. Чем раньше мы объясним это компьютеру, тем лучше. Поэтому поместим соответствующий оператор .
Звук.DeviceType = "WaveAudio"
в процедуру, которая выполняется раньше всех - в Form_Load.
В каждую из четырех процедур кнопок поместим четыре новых оператора следующего вида:
Звук.FileName = "c:\Windows\Media\……….wav"
Звук.Command = "Open"
Звук.Command = "Sound"
Звук.Command = "Close"
Пояснения: В нашем случае команда "Sound" имеет то же действие, что и команда "Play", но отличается от нее тем, что задерживает выполнение остальных операторов проекта до тех пор, пока не закончится воспроизведение звукового файла. Вы можете убедиться в этом, когда запустите готовый проект. Пока при помощи команды "Play" воспроизводится длинная мелодия Canyon.mid, вы можете спокойно пользоваться калькулятором, нажимая на кнопки. Когда же при помощи команды "Sound" воспроизводится звук Chimes.wav, весь проект ненадолго "замерзает".
Замечание: Если ваша звуковая карта достаточно хорошего качества, то вы сможете одновременно услышать и Canyon.mid и Wav-файлы.
Вот так будут выглядеть в окне кода ваши процедуры, связанные со звуком:
Private Sub Кл_сложения_Click()
Звук.FileName = "c:\Windows\Media\Chimes.wav"
Звук.Command = "Open"
Звук.Command = "Sound"
Звук.Command = "Close"
Результат.Text = Val(Число1.Text) + Val(Число2.Text)
End Sub
Private Sub Кл_вычитания_Click()
Звук.FileName = "c:\Windows\Media\Notify.wav"
Звук.Command = "Open"
Звук.Command = "Sound"
Звук.Command = "Close"
Результат.Text = Val(Число1.Text) - Val(Число2.Text)
End Sub
………………………………………………
………………………………………………
Private Sub Form_Load()
Звук.DeviceType = "WaveAudio"
Плеер.DeviceType = "Sequencer"
Плеер.FileName = "c:\Windows\Media\Canyon.mid"
Плеер.Command = "Open"
Плеер.Command = "Play"
End Sub
Private Sub Form_Terminate()
Плеер.Command = "Close"
End Sub

^ Проигрывание аудиодисков


Элемент управления Microsoft Multimedia Control 6.0 можно использовать и для проигрывания из вашего проекта самых обычных некомпьютерных аудио-компакт-дисков. Разместите этот элемент управления на форме, придайте ему имя "CDPlayer". Вставьте диск в дисковод CD-ROM вашего компьютера. Теперь вам достаточно выполнить такую цепочку операторов:
CDPlayer.DeviceType = "CDAudio"
CDPlayer.Command = "Open"
CDPlayer.Command = "Play"
Вы скажете - Я могу это делать и безо всякого Visual Basic. Это верно. Но из Visual Basic это делать интереснее. В элементе Microsoft Multimedia Control 6.0 имеются возможности тонкого управления проигрыванием, которые вы не найдете в стандартных проигрывателях.

^ Плеер ваших любимых хитов


Если у вас набралось на диске 5-6 любимых звуковых файлов, то вы уже можете создать проект - плеер, в котором будет соответственно 5-6 кнопок с названиями исполняемых произведений. При нажатии кнопки звучит соответствующее произведение.
Вы можете сделать так, чтобы на форме тут же появлялась и подходящая картинка. Например, если исполняется песня группы "Столбняк", то пусть на форме появляется фотография задумчивых исполнителей этой группы. Для появления картинки подойдет оператор вида
Form1.Picture =

LoadPicture

("C:\Program Files\Microsoft Office\Clipart\Popular\Agree.wmf")
Здесь LoadPicture означает Загрузить картинку. В скобках с кавычками указывается адрес картинки на вашем компьютере. Кстати, в указанной папке вы найдете несколько десятков картинок.
Вы также можете сделать, чтобы при проигрывании мелодии вы видели и текстовое описание мелодии или, скажем, биографию композитора. Для этого поместите на форму большую метку (Label) и в подходящие места программы вставляйте операторы вида
Label1.Caption = "Композитор - Гладков. Впервые исполнена в 1970 году."
При работе со звуковыми файлами возникает вопрос - когда закрывать файлы? Если перед открытием следующего файла не закрыть предыдущий, то нормальной работы не получится. Связка
Плеер.Command = "Play"
Плеер.Command = "Close"
не подойдет, так как музыка закончится, не успев начаться. Здесь подойдет такая связка:
Плеер.Command = "Close"
Плеер.FileName = "c:\Windows\Media\Canyon.mid"
Плеер.Command = "Open"
Плеер.Command = "Play"
Здесь команда "Close" выполняется самой первой и закрывает любой файл, который исполнялся или мог исполняться раньше. После этого команда "Open" спокойно открывает нужный файл.

Задание 3:

Создайте только-что описанный мною "Плеер ваших любимых х

итов".


Задание 4 "Ваш собственный музыкальный компакт-диск":

Сейчас широко распространены в продаже компьютерные компакт-диски такого рода: вы вставляете его в компьютер, он инсталлирует свою программу, затем вы запускаете ее. На экране появляются красочная заставка типа "Ваши любимые песни" и список песен. Вы выбираете одну из них. Песня звучит, возникают подходящие фото и текст. В любой момент вы можете прервать песню и выбрать другую.
Если у вас или у вашего друга есть устройство записи на компакт-диски CD-RW, то вы вполне можете создать свой собственный компакт-диск, который будет делать то же самое. На диске будут находиться как сами файлы песен, так и инсталляционный пакет программы для их воспроизведения. Вам нужно где-то достать файлы песен, а также, перелистав эту книгу вперед, прочесть в 2.8, как переносить свою программу на другие компьютеры. В остальном вам достаточно знания предыдущего материала и советов из предыдущей задачи.
^

1.9.Система координат


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

а экране компьютера применяется такая:
Как видите, ось у направлена вниз. Это не очень привычно. Если вас это раздражает, то Visual Basic может вам предложить исправить ситуацию. Однако, редко кто пользуется этой возможностью, поэтому и вам будет полезно привыкнуть к компьютерной системе.
Как нам управлять положением объектов на экране? Выделите любой объект на форме и загляните в его свойства

Left

и

Top

.

^ Значение свойства Left - это расстояние левого края объекта от левого края формы.


Значение свойства Top - это расстояние верхнего края объекта от верхнего края формы.


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

Единицей измерения расстояния в Visual Basic является

твип

. Это очень маленькая величина и на пространстве экрана ее нельзя однозначно выразить в долях миллиметра. Ее значение зависит от разрешающей способности видеорежима. В твипах выражаются свойства Left, Top,

Width

(ширина объекта) и

Height

(высота объекта). Потаскайте правую и нижнюю границы объекта, следя за значениями Width и Height.
В режиме проектирования мы не можем таскать форму по экрану за заголовок, да это и не нужно. Изменяя свойства Left и Top формы, мы управляем местом ее появления на экране после запуска проекта. Для формы начало компьютерной системы координат находится в левом верхнем углу экрана
В режиме работы положением и размерами объектов мы управляем просто:
Form1.Left = 2000
Похвальное дело снабжения нашего калькулятора различными "приколами" я вывожу в задание для самостоятельной работы:

Задание 5:

Пусть при нажатии на клавишу вычитания эта клавиша прыгает куда-нибудь совсем в другое место калькулятора и на ней вместо минуса появляется текст типа "Я устала вычитать" или "Не трогай меня - я нервная!". Когда это у вас получится, сделайте так, чтобы при нажатии на клавишу СБРОС клавиша вычитания скромно возвращалась на место и принимала свой прежний вид.
^

1.10.Вывод сообщений - MsgBox


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


Для этого подойдет такой новый для нас оператор:

MsgBox

("А теперь считайте в уме!")
Чтобы он выполнился именно при завершении работы, его нужно поместить в процедуру Form_Terminate.
Прочитав сообщение, щелкните ОК.
Более подробно об окнах сообщений написано в 1.10.
Вы не забыли, что все, мною сказанное, нужно проверять?
^

1.11.Меню пользователя


Какая же программа без своего меню! Нашему калькулятору оно, вроде бы, ни к чему, но, все равно, интересно и полезно сделать хотя бы простенькое. Пусть оно выглядит так:


Задачу поставим такую: Щелкнув по пункту "Настройка цвета", мы должны увидеть выпадающее меню из двух пунктов. Щелкнув по пункту "Синий" этого выпавшего меню, мы красим калькулятор в синий цвет, щелкнув по пункту "Красный" - в красный.
Щелкнув по пункту "О программе", мы вызываем сообщение с кратким описанием программы.
Нам предстоит создать меню, а затем заставить его работать.

Создаем меню

. Чтобы его создать, достаточно в главном меню Visual Basic выбрать

^ ToolsMenu Editor

. Перед вами возникнет следующее диалоговое окно:


Начнем с настройки цвета. Введем в поле Caption текст "Настройка цвета". Это для того, чтобы пункт меню с этим текстом появился на форме. По мере ввода этот текст возникает и в поле, расположенном ниже.
Теперь придумаем этому пункту имя, например, пункт_меню_Настройка_цвета, и введем его в поле Name. Это чтобы пункт меню мог заработать. Если хотите вызывать этот пункт не только мышкой, но и с клавиатуры, выберите что-нибудь из списка Shortcut.
Щелкните по кнопке Next и займитесь пунктом "Синий", дав ему имя пункт_меню_Синий.
Щелкните по кнопке Next и займитесь пунктом "Красный", дав ему имя пункт_меню_Красный.
Щелкните по кнопке Next и займитесь пунктом "О программе", дав ему имя пункт_меню_О_программе.

В результате в окне возникает список из 4 пунктов:


Теперь нужно объяснить компьютеру, что пункты "Синий" и "Красный" входят внутрь пункта "Настройка цвета". Для этого выделим их по очереди и сдвинем направо кнопкой

. Получается такая картинка:


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

Заставляем меню работать

. В режиме проектирования выберем пункт меню "Синий" и щелкнем по нему. В окне кода появляется заготовка процедуры:
Private Sub пункт_меню_Синий_Click()
End Sub
Вы уже наверняка догадались, что это приглашение объяснить компьютеру, что нужно делать при выборе пункта "Синий". Для этого подойдет парочка операторов:
Form1.Picture = LoadPicture()
Form1.BackColor = vbBlue
Второй оператор красит форму в синий цвет, первый убирает с формы картинку, если она там была (сравните с материалом перед заданием 3 из 1.8).
Аналогично программируем пункт "Красный". А сообщение о программе обеспечит оператор
MsgBox ("Программа создана в 2000 году")
Запустите проект и проверьте, как он работает.
Средствами Visual Basic можно создавать, преобразовывать и уничтожать меню не только в режиме проектирования, но и в режиме работы. Кроме обычных меню Visual Basic умеет создавать и так называемые контекстные меню (что это такое, рассказано в 2.5). Ни на том, ни на другом я не буду останавливаться.
^

1.12.Кино в проекте


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

ProjectComponentsMicrosoft Windows Common Controls-2 6.0

. На Toolbox появится несколько новых элементов управления. Берите из них

Animation

и размещайте на форме - это ваш экран для кино. Его имя - Animation1. Этот элемент управления позволяет прямо в работающем проекте просматривать видеофайлы в формате AVI. Если у вас на компьютере нет порядочного кино в этом формате, то несколько маленьких анимационных роликов вы все-таки найдете в папке Videos, находящейся внутри папки, куда устанавливалась ваша Visual Studio. Скорее всего они находятся по такому адресу: "C:\Program Files\Microsoft Visual Studio\Common\Graphics\Videos".
Сделайте в проекте кнопку и назовите ее, например, "Видео". Вот процедура, которая при нажатии кнопки "Видео" бесконечно воспроизводит видеоролик FILECOPY.AVI:
Private Sub Видео_Click()
Animation1.

Open

"C:\Program Files\Microsoft Visual Studio\Common\Graphics\Videos\FILECOPY.AVI"
Animation1.

Play


End Sub
Здесь полная аналогия с аудиоплеером, который я рассматривал в 1.8 Первая строка процедуры открывает файл, вторая его воспроизводит.
Во время демонстрации вы можете выполнять на калькуляторе другие свои дела. Чтобы "заморозить" демонстрацию, нужно выполнить оператор Animation1.

Stop

, а чтобы совсем прекратить и убрать с экрана - Animation1.

Close

.
Если вам нужно 3 раза воспроизвести кадры видеофильма с 5 по 12, вы пишете
Animation1.Play 3, 5, 12
Второй способ. Используйте нашего старого знакомого - мастера на все руки - Microsoft Multimedia Control 6.0, который тоже позволяет просматривать видеофайлы в формате AVI. Разместите его на форме и назовите, скажем, "Кино". Вот цепочка операторов, приводящая к результату:
Кино.DeviceType = "AVIVideo"
Кино.FileName = "C:\Program Files\Microsoft Visual Studio\Common\Graphics\Videos\ FILECOPY.AVI"
Кино.Command = "Open"
Кино.Command = "Play"
Просмотр идет в отдельном окне, размер и положение которого вы можете мышкой менять в процессе просмотра, что само по себе любопытно. К тому же, вы можете пользоваться управляющими кнопками элемента управления.
^

1.13.Кое-что необходимое напоследок


Комментарии


Комментарии

- это пояснения к тексту программы. Зачем они нужны?
Когда человек со стороны посмотрит на вашу программу, например, на эту (из калькулятора):
Private Sub Кл_сложения_Click()
Звук.FileName = "c:\Windows\Media\Chimes.wav"
Звук.Command = "Open"
Звук.Command = "Sound"
Звук.Command = "Close"
Результат.Text = Val(Число1.Text) + Val(Число2.Text)
End Sub
он вряд ли поймет, в чем здесь смысл и для какой задачи программа написана. Если Звук, то при чем здесь сложение? Да и все остальное… Ну да ладно, это полбеды, а беда в том, что если через пару лет вам срочно понадобится самому разобраться в этой старой своей программе (так как ее выдвинули на Мобилевскую премию), а вы за это время ни разу не работали со звуком, то вы сами не сможете ничего понять, так как все забыли!
Любой профессиональный программист знает две вещи. Первое - любая старая программа через год забывается напрочь. Второе - почти любая старая программа или ее часть через полтора года бывает вдруг позарез нужна как исходный материал для новой программы и поэтому в ней надо срочно разобраться. Наученный горьким опытом, программист снабжает многие строчки кода собственными комментариями. Получается вот что:
'Процедура, которая объясняет компьютеру, что ему делать, если мы щелкнули
'по клавише сложения калькулятора, а именно: проиграть короткую мелодию
'Chimes.wav на объекте с именем Звук, а затем сложить два числа.
Private Sub Кл_сложения_Click()
Звук.FileName = "c:\Windows\Media\Chimes.wav" 'Указываем адрес звукового файла на диске.
Звук.Command = "Open" 'Перед проигрыванием файл нужно обязательно открыть.
Звук.Command = "Sound" 'Включить воспроизведение.
Звук.Command = "Close" 'После проигрывания файл нужно обязательно закрыть.
Результат.Text = Val(Число1.Text) + Val(Число2.Text) 'Склалываем числа, причем Val преобразует текст в число
End Sub
Компьютеру комментарий не нужен, он его не поймет, а если начнет понимать, то ничего хорошего из этого не выйдет. Так что заглядывать в него компьютеру не нужно. И чтобы ясно показать компьютеру, куда ему не надо заглядывать, программист в каждой строке кода перед комментарием ставит одинарную кавычку. Visual Basic, выполняя очередную строку кода, просматривает ее слева направо, и как только наткнется на кавычку, правее уже не глядит.

^ Перенос длинного оператора на следующую строку


Иногда оператор получается такой длинный, что не умещается на экране. Это не беда - в окне кода он уместится, так как окно гораздо шире экрана, надо только его прокрутить. Но все равно неприятно, прокручивать не хочется. Оператор можно перенести на другую строку комбинацией пробела и подчеркивания. Например, вместо
Результат.Text = Val(Число1.Text) + Val(Число2.Text)
можно записать
Результат.Text = Val(Число1.Text) _
+ Val(Число2.Text)
или
Результат.Text = _
Val(Число1.Text) _
+ Val(Число2.Text)
Как видите, в конце строк стоит пара символов - пробел и за ним знак подчеркивания.

Запись нескольких операторов в одной строке


Visual Basic допускает писать в одной строке несколько операторов, разделяя их двоеточиями, вот так:
Звук.Command = "Open" : Звук.Command = "Sound" : Звук.Command = "Close"
Это приятно экономит место по вертикали экрана.

^ Превращаем наш калькулятор в независимую программу


В Windows вы привыкли запускать игры и другие программы двумя способами: щелкнув по значку программы на рабочем столе Windows (или в папке или в проводнике) или выбрав программу в стартовом меню на панели задач. Наш калькулятор запускается пока только из Visual Basic, что, возможно, уязвляет вашу гордость. Что ж, превратим его в независимую программу, которая будет запускаться, как и все, без запуска Visual Basic.
Для этого -

^ FileMake Project1.exe

. Затем в открывшемся окне выбираем папку, где будет сохранен будущий файл нашей независимой программы, и задаем ему имя (скажем, Суперкалькулятор). Затем ОК - и ваш файл Суперкалькулятор.exe готов. Если вы в качестве папки сохранения файла выберете c:\Windows\Рабочий стол, то ваш калькулятор расположится на рабочем столе Windows, а если вы ярлык этого файла (ярлыков мы не проходили) поместите в папку c:\Windows\Главное меню\Программы\Стандартные, то он будет красоваться в запускающем меню рядом со стандартным калькулятором Windows (это все равно, что сидеть с Биллом Гейтсом в одном Мерседесе).
Однако, если вы попытаетесь скопировать ваш Суперкалькулятор.exe на другой компьютер и там его запустить, то вас может ждать неудача. Здесь нужны более сложные действия, чем я описал (см. 2.8).

Как мы в дальнейшем улучшим наш калькулятор



Но для этого нужно знать переменные величины.

2014-07-19 18:44
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • © sanaalar.ru
    Образовательные документы для студентов.