Шрифт:
Интервал:
Закладка:
Показываем_два_фото "с: tempRockies.bmp", "c: tempPorthole.bmp"
End Sub
Теперь мы понимаем, зачем в конце заголовка процедуры ставится пара скобок (). Это для параметров, буде они объявятся.
Задание 91: В задании 86 из 0 вы написали процедуру пользователя, которая перед показом очередной фотографии воспроизводит один и тот же музыкальный звук. Пусть теперь перед каждой фотографией будет свой звук. Для этого напишите процедуру с параметром.
Задание 92: В задании 90 вы написали процедуру пользователя, которая рисовала значок вашего друга. Перепишите ее, сделав процедурой с тремя параметрами: отступ, размер и цвет значка.
Задание 93: Среди графических методов Visual Basic нет методов "крестик" и "треугольник". Вы можете возместить этот недостаток, написав две соответствующие процедуры с тремя параметрами: координата х, координата у, размер.
Задание 94: Представьте себе куб, собранный из 16777216 кубиков — по числу цветов в Visual Basic. Его высота — 256 кубиков, ширина и толщина — тоже по 256 кубиков. Каждый кубик покрашен в свой цвет. Цвета не повторяются. Систему раскраски придумать легко. Например, слева направо растет от 0 до 255 красная составляющая в цвете кубиков, сверху вниз — зеленая, от нас вдаль — синяя. Так что самый левый верхний ближний кубик получается абсолютно черным, а самый правый нижний дальний кубик — абсолютно белым. Сразу все кубики видеть мы, конечно, не можем, но мы можем делать срез куба в любом месте параллельно любой из его граней, в результате чего на срезе будем видеть квадрат, состоящий из 256*256 разноцветных квадратиков. Вот эту задачу среза я бы и хотел вам предложить. Программа предлагает пользователю выбрать один из трех основных цветов (это удобно сделать через меню) и его насыщенность (число от 0 до 255). Этим определяется место среза. Затем программа чертит на форме этот разноцветный срез. Конечно, квадратики получатся очень маленькими, но это ничего.
Указание: Используйте процедуру с двумя параметрами: выбранный пользователем цвет (один из трех) и его насыщенность.
Кстати, догадайтесь, из каких цветов составлена главная диагональ куба, проведенная между двумя упомянутыми мной кубиками.
РАБОТА С ТАЙМЕРОМ, ВРЕМЕНЕМ, ДАТАМИ
Мы с вами пока не умеем управлять временем. А это нам необходимо для работы с анимацией, а также для решения полезных и интересных задач.
Тип данных Date
Все вы видели часы в правой части панели задач Windows. Если на них поставить мышь, они покажут дату. Давайте сделаем что-нибудь получше, а именно — большие, красивые часы-будильник, а заодно и секундомер. Для этого нам нужно познакомиться с новым типом данных — типом даты и времени суток — Date. Вы пока знакомы с числовыми и строковым типами. Тип Date тоже, в принципе, числовой, но, сами понимаете, специфический. Если, например, в нем к 0:40 прибавить 0:40, то получится 1:20.
Когда вы пишете в окне кода программу, в ней встречаются числа, строки, а теперь вы должны научиться писать в программе дату и время суток. Чтобы Visual Basic понял, что перед ним число, вы просто пишете число, и он понимает. Чтобы Visual Basic понял, что перед ним строка, вы пишете строку и берете ее в двойные кавычки, и он понимает, что это строка. Чтобы Visual Basic понял, что перед ним дата или время суток, вы правильно записываете дату и время и заключаете их между значками #, и он понимает. Например, так: #2/16/2002#. Это 16 февраля 2002 года. Как правильно записывать дату и время в других случаях, вы поймете из примеров:
Dim D As Date
Dim T As Date
Dim DT As Date
Private Sub Command1_Click()
Debug.Print #6/25/2001# '25 июня 2001 года
Debug.Print #2:22:57 PM# '2 часа 22 минуты 57 секунд после полудня (РМ)
Debug.Print #2/28/1998 10:45:00 PM# '10 часов 45 минут вечера 28 февраля 1998 года
D = #12/25/2044#
Т = #2:00:32 AM# '2 часа 00 минут 32 секунды до полудня (AM)
DT = #1/15/2156 11:59:42 PM#
Debug.Print D, T, DT
End Sub
Эта процедура напечатает такие результаты:
25.06.01 14:22:57
28.02.98 22:45:00
25.12.2044 2:00:32 15.01.2156 23:59:42
Пояснения: Как видите, в окне кода мы обязаны писать дату и время по-американски, то есть месяц писать раньше числа и разделять все это косыми чертами, а в обозначении времени суток обязательно указывать до или после полудня было дело. А вот результаты по этим не нашим данным печатаются все равно по-нашему, вернее, так, как настроена Windows (а у большинства она настроена на Россию). Поэтому же, если вы захотите задавать дату или время компьютеру таким оператором:
D = InputBox("Введите дату")
то вводить ее по-американски нельзя и значки # тоже нельзя ставить.
Есть и другие способы задания дат и времени, но они сложнее и я их пропущу. Скажу только, что если присвоить переменной типа Date обычное число, то оно будет преобразовано в дату и время. Так, фрагмент D = 26.5 Debug.Print D напечатает следующее:
25.01.1900 12:00:00
Пояснения: Число 26.5 считается количеством суток (двадцать шесть с половиной), прошедших с полуночи 30 декабря 1899 года.
Учитывая вышесказанное, вы можете наладить сложение и вычитание дат и времени. Однако, лучше это делать с помощью специальных функций, которые мы сейчас и рассмотрим.
Функции для работы с датами и временем суток
Функция ∙ Результат
Debug.Print Date ∙ Печатается сегодняшнее число (то, что на панели задач Windows)
Debug.Print Time ∙ Печатается сколько сейчас времени
Debug.Print Now ∙ Печатается сегодняшнее число и сколько сейчас времени
Пусть D = # 2/14/2009 4:45:07 РМ # (это суббота), тогда:
Значением функции DatePart является число типа Integer, а не дата.
Все возможные значения строкового параметра для функций работы с датами приведены в последней таблице этого параграфа.
Пусть D1 = #2/14/2009 4:45:07 PM#, D2 = #2/16/2009 11:32:43 AM#, тогда:
Опасные операторы:
Значения строкового параметра для функций работы с датами:
Строковый параметр ∙ Смысл
YYYY ∙ Год
q ∙ Квартал в году
m ∙ Номер месяца в году
Y ∙ Номер дня в году