Часть 1
Часть 2 (Начало в № 1, 3, 1999 г.) Наш проект почти готов. В нем есть титульная страница с названием проекта. Есть страница (форма) с картой, на которой расположены кнопки перехода к другим разделам проекта, представляющим более подробно исторические памятники. Реализованы механизмы перехода с помощью списка и с помощью "быстрых кнопок". Теперь осталось спроектировать формы для демонстрации материалов по истории памятников, научиться размещать в формах мультимедиа объекты, и самое последнее — научиться корректно завершать задачу.
Рис.1 и 2
· подрисуночную подпись,
· список тем справочного материала,
· "быстрые кнопки" для показа справочного материала,
· кнопку перехода к следующей форме (другому историческому памятнику),
· кнопку перехода (возврата) на форму с картой района Москвы.
Объекты, которые будут размещаться в формах, в основном нам уже знакомы.
Рис. 3
Рис. 4
Рис.5 и 6
Создание объекта Memo
Иконка для создания этого объекта находится в наборе Standard палитры компонентов. Создадим объекты Memo1 для списка тем справочного материала и Memo2 для подрисуночной подписи и определим некоторые свойства этих объектов. Мы хотим, чтобы объекты имели фон, совпадающий по цвету с фоном формы. Для этого свойству Color нужно установить значение clBtnFace, которое было установлено по умолчанию свойству Color формы. Данное значение выбирается из предлагаемого системой списка. Установив False для свойства Ctl3D, мы отменим "трехмерный эффект", из-за которого поверхность объекта выглядит как вдавленная внутрь. Отменим также рамку у объектов, установив свойству BorderStyle значение bsNone.
Рис. 7
Создание модальных окон
Для показа справочного материала по темам, представленным в объекте Memo1 ("Время постройки", "Архитектор", "Историческая справка", "Современный вид площади"), используем дополнительные формы (SForm1, SForm2, SForm3, SForm4). Переход на эти формы происходит при нажатии "быстрых кнопок", которые располагаются рядом со списком тем. Объект Memo1 выполняет здесь роль поля, комментирующего назначение "быстрых кнопок". Справочные сведения будем демонстрировать в модальных окнах. Этот тип окон удобен здесь по двум причинам. Во-первых, открытое модальное окно не позволяет пользователю переключаться на другие окна до тех пор, пока он явно не закроет текущее окно. Тем самым мы можем не опасаться "бесхозных" окон, которые способны чрезмерно загромоздить экран и усложнить работу не слишком аккуратного пользователя. Во-вторых, мы можем не описывать реакцию на закрытие окна: модальное окно имеет статус дочернего, и при его закрытии активным становится окно, из которого было порождено модальное окно. Для организации перехода по нажатию "быстрых кнопок" так же, как в предыдущем примере работы со списком, заведем массив Modals из пяти элементов с ссылками на созданные формы. Длина массива будет задаваться константой numModals. В блоке implementation в конструкции uses как обычно нужно будет перечислить все внешние имена программных единиц (назовем программные единицы образованных дополнительных форм как U_Str1, U_Str2, U_Str3, U_Str4). (рис. 8)
Рис. 8
Рис. 9
Рис. 10
Медиа-объекты
Познакомимся теперь с приемами размещения медиа-объектов (звуковых и визуальных) в приложении. Например, мы хотим, чтобы при появлении на экране титульной страницы звучал музыкальный фрагмент. Для этого разместим в форме Title медиа объект. Соответствующий компонент находится в палитре компонентов с закладкой System. После щелчка по иконке компонента MediaPlayer и щелчка в форме появится стандартного вида панель, предназначенная для управления проигрыванием музыкального или видеофрагмента. Пока созданный объект является текущим, активизируем свойство FileName в окне его свойств: на экране появится окно, где можно выбрать имя звукового файла (рис. 11).
Рис. 11
Рис. 12
Рис. 13
Завершение работы программы
Итак, приложение почти готово. В процессе создания программы у нас неоднократно появлялась возможность запускать ее на выполнение. Некоторые шаги для корректного завершения работы программы мы уже предпринимали. Например, при создании формы с картой была задана реакция на закрытие этой формы (реакция на событие OnClose) как обращение к методу Close формы Title. Поскольку форма Title у нас является главной формой (головной программой), то при обращении к этому методу происходило завершение задачи. Для форм с историческим материалом также нужно предусмотреть корректное завершение задачи, когда пользователь закрывает окно с помощью стандартной кнопки (кнопки с крестиком в правом верхнем углу окна). Нужно сделать форму текущим элементом (щелкнуть в области формы, не попадая при этом в область какого-либо объекта) и задать реакцию на событие OnClose как обращение к методу Close главной формы (рис. 14).
Рис. 14
Рис. 15
Рис. 16
Подведение итогов
Работу по созданию учебного мультимедиа-проекта можно считать законченной. Мы создали структуру гипермедиа, по которой можно путешествовать и знакомиться с материалом по истории Москвы, представленным в текстовом, графическом и звуковом виде. Разумеется, это самый простой вариант мультимедиа-приложения. Проект можно наращивать и улучшать по многим направлениям. Но, надеемся, что определенная цель достигнута: мы продемонстрировали, что такая работа вполне по силам рядовому пользователю с фоновыми знаниями в области программирования, не искушенному в тонкостях новомодных технологических концепций. Материал статьи был подобран так, чтобы читатель смог самостоятельно выполнить первые шаги по реализации приложения в среде Delphi. Подробно описаны последовательные действия по созданию реального мультимедиа-проекта, успешно функционирующего в среде Windows 95 (что подтверждается картинками экранов, демонстрирующими работу программы). Учебный проект такого рода можно осуществлять за 2-3 часа, если следовать инструкциям. Многих потенциальных пользователей Delphi может испугать новизна и кажущаяся сложность среды разработки. Опасения вызывают также многочисленные толстые руководства по работе с Delphi, появившиеся на полках магазинов. Задача данной статьи — продемонстрировать простоту и практическую ценность идей визуального программирования на примере создания приложения, представляющего интерес в контексте освоения технологии мультимедиа. Статью можно рассматривать как введение в Delphi. После начального знакомства заинтересованные читатели могут далее самостоятельно совершенствоваться в Delphi, уточняя детали по справочникам и руководствам.
Найдет ли Delphi применение в школе
Может ли Delphi найти применение в школах? На наш взгляд — да. Многие учебные заведения создают информационные материалы, касающихся их истории, традиций, образовательных программ, культурных инициатив. Эти материалы могут быть представлены в виде мультимедиа-приложений. И Delphi окажет неоценимую помощь в разработке таких программ. Среду Delphi можно использовать и на уроках информатики в старших классах для обучения школьников современным приемам программирования. На наш взгляд, Delphi имеет явные преимущества по сравнению с языками семейства Бэйсик или Си, поскольку в его основе лежит Паскаль, и, соответственно, выдерживается ставшая классикой языковая линия Н. Вирта. Если уж обучать школьников программировать, то лучше изначально прививать им программистскую культуру. При изучении Delphi важно правильно расставить акценты и приоритеты, чтобы не потерпеть поражение в борьбе со сложностями теории. Есть два принципиально разных подхода к изучению нового инструмента. В соответствии с первым школьники вначале в деталях знакомятся с возможностями инструмента. А потом им предлагается самим определить, для чего они могут использовать изученный инструмент, т. е. какие задачи можно решать с его помощью. Другой подход состоит в том, что перед учениками вначале ставится некая реальная задача, далее они осваивают ее решение с помощью предложенных средств, по ходу работы изучая функции инструмента и его возможности. Например, при изучении языка программирования Бэйсик большую часть уроков иногда посвящают детальному знакомству с основными конструкциями языка, синтаксическими правилами написания операторов и пр. После изучения основ Бэйсика ученикам предлагается конкретная задача, например, запрограммировать алгоритм перемещения объекта по экрану. Во втором случае учебные задачи ставятся иначе. Мы могли бы предложить ученикам заняться созданием небольшого мультимедиа-приложения, в качестве средства реализации использовать среду Delphi. В процессе работы над мультимедиа-проектом учеников познакомят с некоторыми возможностями Delphi, например с теми, которые представлены в этой статье. В данном случае инструмент будет изучаться в контексте решения конкретной задачи. Советуем двигаться именно вторым путем. Важно, чтобы тема проекта была интересна школьникам. Тогда их работа будет более мотивирована, а значит и более успешна. Такой подход к освоению приемов программирования не должен быть нацелен на изучение отдельных деталей среды Delphi. Важно, чтобы школьники уловили общий вектор технологической идеи. И если акценты в работе направлены на постижение сути визуального программирования, то они не будут испытывать растерянность в случае изменения интерфейса в новых версиях этого продукта. Завершая рассказ о Delphi, коснемся вопросов материального характера. Delphi не является пока свободно распространяемым продуктом. Но для учебных целей не обязательно приобретать полную версию, можно ограничиться более скромными конфигурациями. Кроме того, учебные заведения пользуются серьезными скидками, и поэтому покупка Delphi для школы становится вполне реальным делом.
Рекомендуемая литература
1. Том Сван. Программирование в Delphi для Windows 95. — К.: Диалектика, 1996.
2. Нейл Дж. Рубенкинг. Delphi 3 для "чайников". — К.: Диалектика, 1997.
3. Том Сван. Delphi 4. Библия разработчика — К.; М.; СПб.: Диалектика, 1998.
КОРОТКО ОБ АВТОРЕ:
Полилова Татьяна Алексеевна – доцент кафедры информатизации МИПКРО, polilova@glasnet.ru.