Татьяна Полилова

Часть 1

В первой части статьи (см. КвШ № 1(5), январь 1999) мы выполнили первые шаги по созданию приложения в среде Delphi. Была создана форма для титульной страницы, на которой мы разместили название нашего мультимедиа-проекта и иллюстрацию.

Изменение названия формы

Выполним еще одно полезное действие: присвоим форме имя Title вместо первоначально данного имени Form1 (имя формы нам в дальнейшем понадобится для ссылок на нее). Кроме того, в верхнюю строку окна формы вместо слова Form1 поместим текст с названием нашего проекта "Москва в старых фотографиях и гравюрах". Вначале нужно щелкнуть мышкой на поле формы так, чтобы курсор мыши при этом не попадал в область введенных нами объектов. В окне свойств будут теперь показаны свойства (атрибуты) формы. Для изменения имени формы нужно инициировать в окне свойств поле Name и ввести новое имя Title в правую часть поля. Для изменения текста в верхней строке окна (в заголовке) нужно инициировать поле Caption и ввести в правую часть поля новый текст заголовка.

Сохранение программной единицы и проекта

Пора уже вспомнить о том, что мы не только формируем вид окна для взаимодействия с будущим пользователем мультимедиа-проекта, но и "программируем" в среде Delphi. Пока мы еще не написали ни одной строчки программного кода, но система, тем не менее, 08_01.jpg сформировала текст программы по следам наших действий. По умолчанию система образовала окно для визуализации текста программы и присвоила имя программной единице — Unit1.pas.. Текст программной единицы на языке Pascal можно посмотреть в специальном окне, но это мы сделаем немного позже. Сейчас мы только переименуем программную единицу, присвоив ей имя U_Title.pas, и сохраним файл в папке с помощью команды File.Save as... главного меню. В качестве имени можно указать только основное имя, а расширение .pas система добавит сама. В главном меню находится также команда сохранения проекта File.Save Project as..., которой мы также воспользуемся, присвоив проекту имя P_Moscow. Расширение имени .dpr система вновь добавит сама.

Создание кнопки

Для программирования перехода на следующую страницу проекта нам понадобится кнопка на титульной странице, которую мы создадим с помощью инструмента Button (кнопка). Этот инструмент находится в наборе Standard палитры компонентов. Щелкнув иконку с изображением кнопки, щелкнем далее в нижней части окна с формой — там появится кнопка стандартного размера и изображения. 08_02.jpg Пока вновь созданный объект является текущим, окно свойств Object Inspector показывает свойства и события объекта. Начальные значения этих атрибутов система устанавливает по умолчанию. Мы можем поменять значения некоторых свойств объекта, инициировав в списке соответствующую позицию. В нашем случае мы изменим свойство Caption, записав в соответствующее поле окна свойств текст "Дальше". Этот текст появится на поверхности кнопки. 08_03.jpg Мы пока не задаем в программе действия, которые будут выполняться по нажатию созданной кнопки. Это мы сделаем позднее, когда появится новая страница в проекте, на которую нужно будет перейти с титульной страницы.

Запуск программы на выполнение

Несмотря на то что мы не занимались написанием программы, она в своем начальном варианте тем не менее уже сформирована системой Delphi. И эту программу можно оттранслировать и выполнить. Пока в нашей программе нет содержательных действий, но при ее выполнении должно появиться окно стандартного вида, в котором мы сможем увидеть созданную нами титульную страницу. 08_04.jpg Для запуска программы можно воспользоваться кнопкой с треугольником, расположенной на панели инструментов, или вызвать команду Run.Run из главного меню. Перед запуском программа будет оттранслирована и собрана по всем правилам, которые предусмотрены для проектов на языке Pascal. Созданная нами и запущенная из среды Delphi программа работает в среде Windows в собственном окне. NB! Обратите внимание, что изображение в окне изменилось, например, пропала сетка из точек, нет вспомогательных рамок для обозначения объектов. Все упомянутые детали нужны лишь на этапе создания и редактирования формы, а в период выполнения форма приобретает более элегантный и строгий вид. Единственное, что мы пока можем сделать с нашей программой, — это закрыть ее, щелкнув кнопку с крестиком, расположенную в верхнем правом углу окна. Программа завершится, мы вновь окажемся в среде Delphi и сможем продолжить работу по созданию нашего приложения.

Проектирование страницы с картой района Москвы

На этой странице будут размещены следующие объекты: · иллюстрация — карта района Москвы, · список исторических памятников, · кнопка перехода Перейти, · кнопки для выбора исторического памятника, размещенные на иллюстрации. Некоторые из перечисленных объектов мы уже умеем размещать в форме (была бы только форма!). Но наша ситуация отличается от предыдущей тем, что первую форму система создала для нас сама. Теперь же нам нужно самостоятельно выполнить шаги по созданию новой формы.

Создание формы Map

Для создания формы воспользуемся операцией главного меню File.New Form. На экране мы увидим уже знакомую картинку: появится окно с пустой формой, которой присвоено имя Form1. 08_05.jpg Присвоим имя новой форме: вместо имени Form1 введем имя Map, инициировав строку Name в окне свойств формы. Изменим также свойство Caption, введя заголовок в окне формы: "Карта района Москвы". Теперь присвоим имя программной единице, связанной с нашей новой формой, назвав ее U_Map. Далее создадим в форме объект-картинку, поместив в него иллюстрацию — карту района Москвы. Все необходимые здесь действия мы уже выполняли, когда создавали графический объект на титульной странице.

Создание списка

На второй странице нашего проекта нам понадобится объект еще одного вида — список. В списке будут перечислены названия исторических памятников. С помощью списка мы сможем организовать переключение на страницы с описанием каждого исторического памятника. В среде Delphi предусмотрено несколько видов списков. Мы воспользуемся одним из них, имеющим тип ListBox. Иконка для создания объекта этого типа размещается в наборе палитры компонентов с закладкой Standard. Щелкнем эту иконку и отметим далее место на экране, где будет размещаться список с именем ListBox1, щелкнув для этого в окне формы. Для того чтобы заполнить строки списка текстом, нужно инициировать в окне свойств позицию Item. При нажатии появившейся в строке Item иконки с многоточием на экране появляется окно String list editor, в которое можно ввести текстовые строки. 08_06.jpg Объект ListBox обладает одним полезным свойством: когда число элементов списка превышает число строк в отведенном окне, автоматически появляется линейка вертикальной прокрутки. Если все элементы списка помещаются в окне, то линейка прокрутки автоматически пропадает. В нашем случае размеры окна таковы, что все элементы списка в окне помещаются, и линейка прокрутки поэтому отсутствует. Для организации перехода на страницы с историческими памятниками нам понадобится кнопка перехода. Создадим кнопку Button1 (такую операцию мы уже выполняли на титульной странице). Свойству Caption этой кнопки мы присвоим значение путем ввода текста "Перейти" в соответствующее поле в окне свойств. Программированием перехода со страницы с картой на другие страницы проекта мы займемся позже.. На pисунке показан вид формы, на которой размещен объект-список с именем ListBox1 и объект-кнопка с именем Button1.

Программирование закрытия окна формы Map

08_07.jpg В качестве первого шага в программировании определим в форме Map реакцию на закрытие окна. При закрытии окна будем завершать задачу: закрывать форму Title (титульную страницу), выполняющую в нашем проекте роль головной. 08_08.jpg Сделаем форму Map текущим объектом и с помощью закладки Events переключимся на список событий в окне свойств формы. Щелкнем в позиции OnClose и дважды быстро щелкнем в правой половине строки: раскроется окно модуля U_Map.pas с текстом программы на языке Pascal. В окне появится процедура TMap.FormClose с пустым телом. Для завершения задачи обратимся к методу Close формы Title, разместив оператор вызова метода в теле процедуры между операторами begin и end. Нужно также описать в модуле U_Map.pas внешнее имя U_ Title в конструкции uses, поместив ее в блоке реализации implementation.

Программирование перехода на форму Map

Переход с титульной страницы на страницу с картой Москвы будет выполняться при "нажатии" кнопки Button1 (на ее поверхности написано слово "Дальше"), расположенной на титульной странице. Приступим к программированию перехода. На титульной странице нужно определить реакцию на событие OnClick для кнопки Button1. 08_09.jpg Переключимся на форму Title. Сделаем кнопку Button1 текущим объектом. С помощью закладки Events переключимся на список событий в окне свойств кнопки. Щелкнем в позиции OnClick и дважды быстро щелкнем в правой половине строки: раскроется окно с текстом программы на языке Pascal, где мы вставим пару строчек в теле процедуры TTitle.Button1Click между операторами begin и end. Нам нужно вначале обратиться к методу Hide (перевод с английского — спрятать) формы Title, и затем к методу Show (показать) формы Map. Кроме того, нужно не забыть описать в модуле U_Title.pas внешнее имя U_Map в конструкции uses, поместив ее в блоке реализации implementation. Можно теперь запустить нашу программу на выполнение и посмотреть, как мы запрограммировали нужные действия. При запуске программы появится головная форма, и нажатие кнопки "Перейти" вызовет переход на форму с картой Москвы. По закрытии этой формы задача будет корректно завершена.

Продолжение следует



КОРОТКО ОБ АВТОРЕ:
Полилова Татьяна Алексеевна – доцент кафедры информатизации МИПКРО,
Email: polilova@glasnet.ru