Рейтинг@Mail.ru

 

 

 

 

 

 

.: Учебник по Delphi 7 для начинающих :.

<< НазадСодержаниеВперед >>

маркированный список Предисловие
маркированный список Введение

Предисловие

Delphi — что это?

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

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

Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т. к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом.

Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий. Производительность программиста при использовании RAD-систем -фантастическая!

Delphi — это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.

В настоящее время программистам стала доступна очередная версия пакета Delphi - Borland Delphi 7 Studio. Как и предыдущие версии, Borland Delphi 7 Studio позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, XML-документами, создание справочной системы, решение других задач. Отличительной особенностью седьмой версии является поддержка технологии .NET.

Borland Delphi 7 Studio может работать в среде операционных систем от Windows 98 до Windows XP. Особых требований, по современным меркам, к ресурсам компьютера пакет не предъявляет: процессор должен быть типа Pentium или Celeron с тактовой частотой не ниже 166 МГц (рекомендуется Pentium II 400 МГц), оперативной памяти - 128 Мбайт (рекомендуется 256 Мбайт), достаточное количество свободного дискового пространства (для полной установки версии Enterprise необходимо приблизительно 475 Мбайт).

Об этом диске

В книге, которая посвящена программированию в конкретной среде разработки, необходим баланс между тремя линиями — языком программирования, техникой и технологией программирования (программированием как таковым) и средой разработки. Уже при первом знакомстве со средой разработки, представлении ее возможностей у автора возникает проблема: чтобы описать процесс разработки программы, объяснить, как работает программа, нужно оперировать такими терминами, как объект, событие, свойство, понимание которых на начальном этапе изучения программирования весьма проблематично. Как поступить? Сначала дать описание языка, а затем приступить к описанию среды разработки и процесса программирования в Delphi? Очевидно, что это не лучший вариант. Поэтому при изложении материала принят подход, в основу которого положен принцип соблюдения баланса между языком программирования, методами программирования и средой разработки. В начале книги некоторые понятия, без которых просто невозможно изложение материала, даются на уровне определений.

Книга, которую вы держите в руках, — это не описание языка Delphi или среды разработки Delphi 7 Studio. Это учебное пособие по программированию на языке Delphi в одноименной среде. В нем рассмотрена вся цепочка, весь процесс создания программы: от разработки диалогового окна и функций обработки событий до создания справочной системы и установочного диска.

Цель этой книги может быть сформулирована так: научить программировать в среде Delphi, т. е. создавать законченные программы различного назначения: от простых однооконных приложений до вполне профессиональных программ работы с базами данных.

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

Введение

Во введении кратко описывается процесс установки Delphi. На примере программы, вычисляющей скорость, с которой бегун пробежал дистанцию, демонстрируется технология визуального проектирования и событийного программирования, вводятся основные понятия и термины.

Установка Delphi

Существует четыре варианта пакета Borland Delphi 7 Studio: Personal, Professional, Enterprise и Architect. Каждый из этих комплектов включает стандартный набор средств, обеспечивающих разработку высокоэффективных программ различного назначения, в том числе для работы с базами данных. Вместе с тем, чем выше уровень комплекта (от Personal до Architect), тем большие возможности он предоставляет программисту. Так, комплект Enterprise позволяет разрабатывать приложения работы с удаленными базами данных (например, InterBase), а комплект Personal — нет. Подробную информацию о структуре, составе и возможностях пакетов Borland Delphi 7 Studio можно найти на сайте Borland (www.borland.com/delphi).

Материал книги не привязан к конкретному комплекту Delphi. Все задачи, рассмотренные в качестве примеров, могут быть реализованы в рамках набора Personal.

Установка Delphi 7 на компьютер выполняется с CD-ROM, на котором находятся все необходимые файлы и программа инициализации установки (Delphi Setup Launcher). Программа инициализации установки запускается автоматически, как только установочный диск будет помещен в CD-дисковод.

В результате запуска программы инициализации установки на экране появляется окно Delphi 7 Setup Launcher (рис. В1) с указанием программных продуктов, которые могут быть инсталлированы на компьютер с установочного CD-ROM. Это, прежде всего, Delphi 7, сервер базы данных InterBase 6.5, локальный сервер базы данных InterBase 6.5, инструмент удаленной отладки Remote Debugger Server, утилита ModelMaker и InstallShield Express — утилита создания установочных CD-ROM.

Рис. В1. Начало установки Delphi 7

Для того чтобы активизировать процесс установки Delphi, следует щелкнуть на строке Delphi 7. Процесс установки Delphi обычный. После ввода серийного номера (Serial Number) и ключа (Authorization Key) на экране сначала появляется окно с лицензионным соглашением, затем — окно Setup Type (рис. В2), в котором можно выбрать один из возможных вариантов установки: Typical (Обычный), Compact (Компактный) или Custom (Выборочный, определяемый пользователем).

Обычный вариант предполагает, что с установочного CD-ROM на жесткий диск компьютера будут скопированы все компоненты Delphi. Обычный вариант установки требует наибольшего свободного места на жестком диске компьютера, порядка 475 Мбайт (для комплекта Enterprise). И если на жестком диске компьютера достаточно свободного места, лучше выбрать этот вариант.

При компактной установке на жесткий диск компьютера копируются только самые необходимые компоненты Delphi. Компактный вариант требует наименьшего количества свободного дискового пространства. Однако в этом случае некоторые возможности среды разработки Delphi будут недоступны. В частности, при компактной установке на жесткий диск не копируются файлы справочной системы, некоторые компоненты и утилиты, примеры.

Выборочный вариант позволяет программисту выбрать только необходимые для работы инструменты и компоненты Delphi. Обычно такой вариант установки используют опытные программисты. Выборочный вариант можно выбрать и в том случае, если на диске компьютера недостаточно свободного места для полной установки.

Рис. В2. В диалоговом окне Setup Type нужно выбрать вариант установки

Выбрав вариант установки, нажмите кнопку Next. Если была выбрана частичная (Custom) установка, то открывается диалоговое окно Custom Setup (рис. ВЗ), в котором можно выбрать устанавливаемые компоненты, точнее -указать компоненты, которые устанавливать не надо. Чтобы запретить установку компонента, нужно щелкнуть на изображении диска слева от названия компонента и из появившегося меню выбрать команду Do Not Install.

Рис. ВЗ. Запрет установки компонента

Если выбран тип установки Typical, то в результате щелчка на кнопке Next открывается окно Destination Folder, в котором указаны каталоги, куда будет установлен пакет Delphi и его компоненты.

Очередной щелчок на кнопке Next открывает окно Save Installation Database, в котором пользователю предлагается сохранить информацию о процессе установки на жестком диске компьютера, что обеспечит возможность удаления (деинсталляции) Delphi в дальнейшем без использования установочного CD-ROM. На этом процесс подготовки к установке заканчивается. На экране появляется окно Ready To Install the Program, щелчок на кнопке Install в котором активизирует процесс установки.

По окончании процесса установки на экране появляется окно с информационным сообщением о том, что установка выполнена (рис. В4). Щелчок на кнопке Finish закрывает это окно.

Рис. В4. Процесс установки завершен

Теперь можно приступить к работе, запустить Delphi. Однако перед тем, как это сделать, рекомендуется задать рабочий каталог, каталог проектов. Для этого нужно установить указатель мыши на команду запуска Delphi (Пуск | Программы | Borland Delphi 7 | Delphi 7), щелкнуть правой кнопкой мыши, и из появившегося контекстного меню выбрать команду Свойства. Затем в появившемся окне Свойства: Delphi 7 в поле Рабочая папка ввести имя папки, предназначенной для проектов Delphi (рис. В5).

Рис. В5. Определение папки проектов

Начало работы

Запускается Delphi обычным образом, т. е. выбором из меню Borland Delphi 7 команды Delphi 7 (рис. В6).

Рис. В6. Запуск Delphi

Вид экрана после запуска Delphi несколько необычен (рис. В7). Вместо одного окна на экране появляются пять:

  • главное окно — Delphi 7;
  • окно стартовой формы — Form 1;
  • окно редактора свойств объектов — Object Inspector;
  • окно просмотра списка объектов — Object TreeView;
  • окно редактора кода — Unitl.pas.

Окно редактора кода почти полностью закрыто окном стартовой формы.

Рис. В7. Вид экрана после запуска Delphi

В главном окне (рис. В8) находится меню команд, панели инструментов и палитра компонентов.

Окно стартовой формы (Forml) представляет собой заготовку главного окна разрабатываемого приложения.

Программное обеспечение принято делить на системное и прикладное. Системное программное обеспечение — это все то, что составляет операционную систему. Остальные программы принято считать прикладными. Для краткости прикладные программы называют приложениями.

Рис. В8. Главное окно

Окно Object Inspector (рис. В9) — окно редактора свойств объектов предназначено для редактирования значений свойств объектов. В терминологии визуального проектирования объекты — это диалоговые окна и элементы управления (поля ввода и вывода, командные кнопки, переключатели и др.). Свойства объекта — это характеристики, определяющие вид, положение и поведение объекта. Например, свойства width и Height задают размер (ширину и высоту) формы, свойства тор и Left — положение формы на экране, свойство caption — текст заголовка.

Рис. В9. На вкладке Properties перечислены свойства объекта и указаны их значения

Рис. В10. Окно редактора кода

В окне редактора кода (рис. В10), которое можно увидеть, отодвинув в сторону окно формы, следует набирать текст программы. В начале работы над новым проектом это окно редактора кода содержит сформированный Delphi шаблон программы.

Первый проект

Для демонстрации возможностей Delphi и технологии визуального проектирования разработаем приложение, используя которое, можно вычислить скорость, с которой спортсмен пробежал дистанцию. Вид окна программы во время ее работы приведен на рис. В11.

Рис. В11. Окно программы вычисления скорости бега

Для начала работы над новой программой запустите Delphi. Если вы уже работаете в среде разработки и у вас загружен другой проект, выберите в меню File (Файл) команду New | Application (Создать | Приложение).

Форма

Работа над новым проектом, так в Delphi называется разрабатываемое приложение, начинается с создания стартовой формы. Так на этапе разработки программы называют диалоговые окна.

Стартовая форма создается путем изменения значений свойств формы Form1 и добавления к форме необходимых компонентов (полей ввода и вывода текста, командных кнопок).

Свойства формы (табл. В1) определяют ее внешний вид: размер, положение на экране, текст заголовка, вид рамки.

Для просмотра и изменения значений свойств формы и ее компонентов используется окно Object Inspector. В верхней части окна Object Inspector указано имя объекта, значения свойств которого отображается в данный момент. В левой колонке вкладки Properties (Свойства) перечислены свойства объекта, а в правой — указаны их значения.

Таблица В1. Свойства формы (объекта т form)

Свойство
Описание
Name
Имя формы. В программе имя формы используется для управления формой и доступа к компонентам формы
Caption
Текст заголовка
Width
Ширина формы
Height
Высота формы
Top
Расстояние от верхней границы формы до верхней границы экрана
Left
Расстояние от левой границы формы до левой границы экрана
BorderStyle
Вид границы. Граница может быть обычной (bsSizeable), тонкой (bs Single) или отсутствовать (bsNone). Если у окна обычная граница, то во время работы программы пользователь может при помощи мыши изменить размер окна. Изменить размер окна с тонкой границей нельзя. Если граница отсутствует, то на экран во время работы программы будет выведено окно без заголовка. Положение и размер такого окна-во время работы программы изменить нельзя
Свойство
Описание
Borderlcons

 

 

 


Icon

 

Color


Font

Кнопки управления окном. Значение свойства определяет, какие кнопки управления окном будут доступны пользователю во время работы программы. Значение свойства задается путем присвоения значений уточняющим свойствам biSystemMenu, biMinimaze, biMaximaze И biHelp. Свойство biSystemMenu определяет доступность кнопки Свернуть и кнопки системного меню, biMinimaze— кнопки Свернуть, biMaximaze— кнопки Развернуть, biHelp — кнопки вывода справочной информации

Значок в заголовке диалогового окна, обозначающий кнопку вывода системного меню

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

Шрифт. Шрифт, используемый "по умолчанию" компонентами, находящимися на поверхности формы. Изменение свойства Font формы приводит к автоматическому изменению свойства Font компонента, располагающегося на поверхности формы. То есть компоненты наследуют свойство Font от формы (имеется возможность запретить наследование)

При создании формы в первую очередь следует изменить значение свойства caption (Заголовок). В нашем примере надо заменить текст Form1 на "скорость бега". Чтобы это сделать, нужно в окне Object Inspector щелкнуть мышью на строке Caption, в результате чего будет выделено текущее значение свойства, в строке появится курсор, и можно будет ввести текст "скорость бега" (рис. В12).

Аналогичным образом можно установить значения свойств Height и width, которые определяют высоту и ширину формы. Размер формы и ее положение на экране, а также размер других элементов управления и их положение на поверхности формы задают в пикселах, т. е. точках экрана. Свойствам Height и width надо присвоить значения 250 и 330 соответственно.

Форма — это обычное окно. Поэтому его размер можно изменить точно так же, как размер любого другого окна, т. е. захватом и перемещением (с помощью мыши) границы. По окончании перемещения границ автоматически изменятся значения свойств Height и width. Они будут соответствовать установленному размеру формы.

Рис. В12. Установка значения свойства путем ввода значения

Положение диалогового окна на экране после запуска программы соответствует положению формы во время ее разработки, которое определяется значением свойств тор (отступ от верхней границы экрана) и Left (отступ от левой границы экрана). Значения этих свойств также можно задать путем перемещения окна формы при помощи мыши.

При выборе некоторых свойств, например, Borderstyle, справа от текущего значения свойства появляется значок раскрывающегося списка. Очевидно, что значение таких свойств можно задать путем выбора из списка (рис. В13).

Некоторые свойства являются сложными, т. е. их значение определяется совокупностью значений других (уточняющих) свойств. Перед именами сложных свойств стоит значок "+", при щелчке на котором раскрывается список уточняющих свойств (рис. В14). Например, свойство BorderIcons определяет, какие кнопки управления окном будут доступны во время работы программы. Так, если свойству biMaximize присвоить значение False, то во время работы программы кнопки Развернуть в заголовке окна не будет.

Рис. В13. Установка значения свойства путем выбора из списка

Рис. В14. Раскрытый список вложенных свойств сложного свойства BorderIcons

Рядом со значениями некоторых свойств отображается командная кнопка с тремя точками. Это значит, что для задания значения свойства можно воспользоваться дополнительным диалоговым окном. Например, значение сложного свойства Font можно задать путем непосредственного ввода значений уточняющих свойств, а можно воспользоваться стандартным диалоговым окном выбора шрифта.

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

Таблица В2. Значения свойств стартовой формы

Свойство
Значение
Caption
Скорость бега
Height
250
Width
330
BorderStyle
bsSingle

 

Свойство
Значение
BorderIcons . biMinimize
False
BorderIcons . biMaximize
False
Font. Size
10

В приведенной таблице в именах некоторых свойств есть точка. Это значит, что надо задать значение уточняющего свойства. После того как будут установлены значения свойств главной формы, она должна иметь вид, приведенный на рис. В15.

Рис. В15. Так выглядит форма после установки значений свойств

Компоненты

Программа вычисления скорости бега должна получить от пользователя исходные данные — длину дистанции и время, за которое спортсмен пробежал дистанцию. В подобных программах данные с клавиатуры, как правило, вводят в поля редактирования. Поэтому в форму надо добавить компонент Edit — поле редактирования.

Наиболее часто используемые компоненты находятся на вкладке Standard (рис. В16).

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

Рис. В16. Вкладка Standard содержит наиболее часто используемые компоненты

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

Каждому компоненту Delphi присваивает имя, которое состоит из названия компонента и его порядкового номера. Например, если к форме добавить два компонента Edit, то их имена будут Edit1 и Edit2. Программист путем изменения значения свойства Name может изменить имя компонента. В простых программах имена компонентов, как правило, не изменяют.

На рис. В17 приведен вид формы после добавления двух компонентов Edit полей редактирования, предназначенных для ввода исходных данных. Один из компонентов выделен. Свойства выделенного компонента отображаются в окне Object Inspector. Чтобы увидеть свойства другого компонента, надо щелкнуть левой кнопкой мыши на изображении нужного компонента. Можно также выбрать имя компонента в окне Object TreeView или из находящегося в верхней части окна Object Inspector раскрывающегося списка объектов.

Рис. В17. Форма после добавления компонентов Edit

В табл. В3 перечислены основные свойства компонента Edit — поля ввода-редактирования.

Таблица ВЗ. Свойства компонента Edit (поле ввода-редактирования)

Свойство
Описание
Name
Имя компонента. Используется в программе для доступа к компоненту и его свойствам, в частности — для доступа к тексту, введенному в поле редактирования
Text
Текст, находящийся в поле ввода и редактирования
Left
Расстояние от левой границы компонента до левой границы формы
Top
Расстояние от верхней границы компонента до верхней границы формы
Height
Высота поля
Width
Ширина поля
Font
Шрифт, используемый для отображения вводимого текста
ParentFont
Признак наследования компонентом характеристик шрифта формы, на которой находится компонент. Если значение свойства равно True, то при изменении свойства Font формы автоматически меняется значение свойства Font компонента

Delphi позволяет изменить размер и положение компонента при помощи мыши.

Для того чтобы изменить положение компонента, необходимо установить курсор мыши на его изображение, нажать левую кнопку мыши и, удерживая ее нажатой, переместить контур компонента в нужную точку формы, затем отпустить кнопку мыши. Во время перемещения компонента (рис. В18) отображаются текущие значения координат левого верхнего угла компонента (значения свойств Left и тор).

Для того чтобы изменить размер компонента, необходимо его выделить, установить указатель мыши на один из маркеров, помечающих границу компонента, нажать левую кнопку мыши и, удерживая ее нажатой, изменить положение границы компонента. Затем отпустить кнопку мыши. Во время изменения размера компонента отображаются текущие значения свойств Height И Width (рис. В19).

Свойства компонента так же, как и свойства формы, можно изменить при помощи Object Inspector. Для того чтобы свойства требуемого компонента были выведены в окне Object Inspector, нужно выделить этот компонент (щелкнуть мышью на его изображении). Можно также выбрать компонент из находящегося в верхней части окна Object Inspector раскрывающегося списка объектов (рис. В20) или из списка в окне Object TreeView (рис. В21).

Рис. В18. Отображение текущих значений свойств Left и Тор при изменении положения компонента

Рис. В19. Отображение текущих значений свойств Height и Width при изменении размера компонента

Рис. В20. Выбор компонента

Рис. В21. Выбор компонента из списка в окне Object Inspector в окне Object TreeView

В табл. В4 приведены значения свойств полей редактирования Editi и Edit2. Компонент Editi предназначен для ввода длины дистанции, Edit2 — для ввода времени.

Обратите внимание на то, что значением свойства Text обоих компонентов является пустая строка.

Таблица В4. Значения свойств компонентов Edi t

Свойство
Компонент
Edit1
Edit2
Text


Тор
56
88
Left
128
128
Height
21
21
Width
121
121

Помимо полей редактирования в окне программы должна находиться краткая информация о программе и назначении полей ввода. Для вывода текста в форму используют поля вывода текста. Поле вывода текста (поле статического текста) — это компонент Label. Значок компонента Label находится на вкладке Standard (рис. В22). Добавляется компонент Label в форму точно так же, как и поле редактирования.

Рис. В22. Компонент Label — поле вывода текста

В форму разрабатываемого приложения надо добавить четыре компонента Label. Первое поле предназначено для вывода информационного сообщения, второе и третье — для вывода информации о назначении полей ввода, четвертое поле — для вывода результата расчета (скорости).

Свойства компонента Label перечислены в табл. В5.

Таблица В5. Свойства компонента Label (поле вывода текста)

Свойство
Описание
Name
Имя компонента. Используется в программе для доступа к компоненту и его свойствам
Caption
Отображаемый текст
Font
Шрифт, используемый для отображения текста
ParentFont
Признак наследования компонентом характеристик шрифта формы, на которой находится компонент. Если значение свойства равно True, текст выводится шрифтом, установленным для формы
AutoSize
Признак того, что размер поля определяется его содержимым
Left
Расстояние от левой границы поля вывода до левой границы формы
Top
Расстояние от верхней границы поля вывода до верхней границы формы
Height
Высота поля вывода
Width
Ширина поля вывода
Wordwrap
Признак того, что слова, которые не помещаются в текущей строке, автоматически переносятся на следующую строку

Следует обратить внимание на свойства Autosize и Wordwrap. Эти свойства нужно использовать, если поле вывода должно содержать несколько строк текста. После добавления к форме компонента Label значение свойства Autosize равно True, т. е. размер поля определяется автоматически в процессе изменения значения свойства caption. Если вы хотите, чтобы находящийся в поле вывода текст занимал несколько строк, то надо сразу после добавления к форме компонента Label присвоить свойству Autosize значение False, свойству wordwrap — значение True. Затем изменением значений свойств width и Height нужно задать требуемый размер поля. Только после этого можно ввести в свойство caption текст, который должен быть выведен в поле.

После добавления полей вывода текста (четырех компонентов Label) и установки значений их свойств в соответствии с табл. В6 форма программы принимает вид, приведенный на рис. В23.

Обратите внимание, что значение свойства caption вводится как одна строка. Расположение текста внутри поля вывода определяется размером поля, значением свойств Autosize и wordwrap, а также зависит от характеристик используемого для вывода текста шрифта.

Рис. В23. Вид формы после добавления полей вывода текста

Таблица В6. Значения свойств компонентов Label1, Label2, Label3 И Label4

Компонент
Свойство
Значение
Labell






AutoSize
False
Wordwrap
True
Caption
Программа вычислит скорость, с которой спортсмен пробежал дистанцию
Top
8
Left
8
Height
33
Width
209
Label2


Top
56
Left
8
Caption
Дистанция (метров)
Label3


Top
88
Left
8
Caption
Время (минуты, секунды)
Label4


AutoSize
False
Wordwrap
True
Top
120
Компонент
Свойство
Значение
Label 4


Left
8
Height
41
Width
273

Последнее, что надо сделать на этапе создания формы — добавить в форму две командные кнопки: Вычислить и Завершить. Назначение этих кнопок очевидно.

Командная кнопка, компонент Button, добавляется в форму точно так же, как и другие компоненты. Значок компонента Button находится на вкладке Standard (рис. В24). Свойства компонента приведены в табл. В7.

Рис. В24. Командная кнопка — компонент Button

Таблица В7. Свойства компонента Button (командная кнопка)

Свойство
Описание
Name
Имя компонента. Используется в программе для доступа к компоненту и его свойствам
Caption
Текст на кнопке
Enabled
Признак доступности кнопки. Кнопка доступна, если значение свойства равно True, и недоступна, если значение свойства равно False
Left
Расстояние от левой границы кнопки до левой границы формы
Top
Расстояние от верхней границы кнопки до верхней границы формы
Height
Высота кнопки
Width
Ширина кнопки

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

Таблица В8. Значения свойств компонентов Button1 и Button2

Свойство
Компонент
Button1
Button2
Caption
Вычислить
Завершить
Тор
176
176
Left
16
112
Height
25
25
Width
75
75

Окончательный вид формы разрабатываемого приложения приведен на рис. В25.

Рис. В25. Форма программы Скорость бега

Завершив работу по созданию формы приложения, можно приступить к написанию текста программы. Но перед этим обсудим очень важные при программировании в Windows понятия:

  • событие;
  • процедура обработки события.

Событие и процедура обработки события

Вид созданной формы подсказывает, как работает приложение. Очевидно, что пользователь должен ввести в поля редактирования исходные данные и щелкнуть мышью на кнопке Вычислить. Щелчок на изображении командной кнопки — это пример того, что в Windows называется событием.

Событие (Event) — это то, что происходит во время работы программы. В Delphi каждому событию присвоено имя. Например, щелчок кнопкой мыши - это событие OnClick, двойной щелчок мышью событие OnDblClick.

В табл. В9 приведены некоторые события Windows.

Таблица В9. События

Событие
Происходит
OnClick
При щелчке кнопкой мыши
OnDblClick
При двойном щелчке кнопкой мыши
OnMouseDown
При нажатии кнопки мыши
OnMouseUp
При отпускании кнопки мыши
OnMouseMove
При перемещении мыши
OnKeyPress
При нажатии клавиши клавиатуры
OnKeyDown
При нажатии клавиши клавиатуры. События OnKeyDown и OnKeyPress — это чередующиеся, повторяющиеся события, которые происходят до тех пор, пока не будет отпущена удерживаемая клавиша (в этот момент происходит событие OnKeyUp)
OnKeyUp
При отпускании нажатой клавиши клавиатуры
OnCreate
При создании объекта (формы, элемента управления). Процедура обработки этого события обычно используется для инициализации переменных, выполнения подготовительных действий
OnPaint
При появлении окна на экране в начале работы программы, после появления части окна, которая, например, была закрыта другим окном, и в других случаях
OnEnter
При получении элементом управления фокуса
OnExit
При потере элементом управления фокуса

Реакцией на событие должно быть какое-либо действие. В Delphi реакция на событие реализуется как процедура обработки события. Таким образом, для того чтобы программа выполняла некоторую работу в ответ на действия пользователя, программист должен написать процедуру обработки соответствующего события. Следует обратить внимание на то, что значительную часть обработки событий берет на себя компонент. Поэтому программист должен разрабатывать процедуру обработки события только в том случае, если реакция на событие отличается от стандартной или не определена. Например, если по условию задачи ограничений на символы, вводимые в поле Edit, нет, то процедуру обработки события OnKeyPress писать не надо, т. к. во время работы программы будет использована стандартная (скрытая от программиста) процедура обработки этого события.

Методику создания процедур обработки событий рассмотрим на примере процедуры обработки события OnClick для командной кнопки Вычислить.

Чтобы приступить к созданию процедуры обработки события, надо сначала в окне Object Inspector выбрать компонент, для которого создается процедура обработки события. Затем в этом же окне нужно выбрать вкладку Events (События).

Рис. В26. На вкладке Events перечислены события, которые может воспринимать компонент (в данном случае — командная кнопка)

В левой колонке вкладки Events (рис. В26) перечислены имена событий, которые может воспринимать выбранный компонент (объект). Если для события определена (написана) процедура обработки события, то в правой колонке рядом с именем события выводится имя этой процедуры.

Для того чтобы создать функцию обработки события, нужно сделать двойной щелчок мышью в поле имени процедуры обработки соответствующего события. В результате этого откроется окно редактора кода, в которое будет добавлен шаблон процедуры обработки события, а в окне Object Inspector рядом с именем события появится имя функции его обработки (рис. В27).

Delphi присваивает функции обработки события имя, которое состоит из двух частей. Первая часть имени идентифицирует форму, содержащую объект (компонент), для которого создана процедура обработки события. Вторая часть имени идентифицирует сам объект и событие. В нашем примере имя формы — Form1, имя командной кнопки — Buttoni, а имя события -Click.

Рис. В27. Шаблон процедуры обработки события, сгенерированный Delphi

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

В листинге В1 приведен текст функции обработки события onclick для командной кнопки Вычислить. Обратите внимание на то, как представлена программа. Ее общий вид соответствует тому, как она выглядит в окне редактора кода: ключевые слова выделены полужирным, комментарии — курсивом (выделение выполняет редактор кода). Кроме того, инструкции программы набраны с отступами в соответствии с принятыми в среде программистов правилами хорошего стиля.

Листинг В1. Процедура обработки события OnClick на кнопке Button1 (Вычислить)

// нажатие кнопки Вычислить

procedure TForm1.ButtonlClick(Sender: TObject);

var

dist : integer; // дистанция, метров

t: real; // время как дробное число

min : integer; // время, минуты

sek : integer; // время, секунды

v: real; // скорость

begin

// получить исходные данные из полей ввода

dist := StrToint(Edit1.Text); t := StrToFloat(Edit2.Text);

// предварительные преобразования

min := Trunc(t); // кол-во минут — это целая часть числа t

sek := Trunc(t*100) mod 100;

// кол-во секунд — это дробная часть

// числа t

// вычисление

v := (dist/1000) / ((min*60 + sek)/3600);

// вывод результата

label4.Caption := 'Дистанция: '+ Edit1.Text

+ ' м' + #13 + 'Время: ' + IntToStr(min)

+ ' мин ' + IntToStr(sek) + ' сек ' + #13 +

'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/час';

end;

Функция Button1click выполняет расчет скорости и выводит результат расчета в поле Label4. Исходные данные вводятся из полей редактирования Editl и Edit2 путем обращения к свойству Text. Свойство Text содержит строку символов, которую во время работы программы введет пользователь. Для правильной работы программы строка должна содержать только цифры. Для преобразования строки в числа в программе используются функции StrToInt и strToFloat. Функция strToInt проверяет символы строки, переданной ей в качестве параметра (Edit1.Text - это содержимое поля Editl), на допустимость и, если все символы верные, возвращает соответствующее число. Это число записывается в переменную dist. Аналогичным образом работает функция strToFioat, которая возвращает дробное число, соответствующее содержимому поля Edit2. Это число записывается в переменную t.

После того как исходные данные будут помещены в переменные dist и t, выполняются подготовительные действия и расчет. Первоначально с использованием функции Trunc, которая "отбрасывает" дробную часть числа, выделяется целая часть переменной t — это количество минут. Значением выражения Trunc(t*100) mod 100 является количество секунд. Вычисляется это выражение так. Сначала число t умножается на 100. Полученное значение передается функции Trunc, которая возвращает целую часть результата умножения t на 100. Полученное таким образом число делится по модулю на 100. Результат деления по модулю — это остаток от деления.

После того как все данные готовы, выполняется расчет. Так как скорость должна быть выражена в км/час, то значения дистанции и времени, выраженные в метрах и минутах, преобразуются в километры и часы.

Вычисленное значение скорости выводится в поле Label4 путем присваивания значения свойству Caption. Для преобразования чисел в строки используются функции IntToStr И FloatToStr.

В результате нажатия кнопки Завершить программа должна завершить работу. Чтобы это произошло, надо закрыть, убрать с экрана, главное окно программы. Делается это при помощи метода close. Процедура обработки события Onclick для кнопки Завершить приведена в листинге В2.

Листинг В2. Процедура обработки события Onclick на кнопке Button2 (Завершить)

// нажатие кнопки Завершить

procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.Close; // закрыть главное окно программы

end;

Редактор кода

Редактор кода выделяет ключевые слова языка программирования (procedure, var, begin, end, if и др.) полужирным шрифтом, что делает текст программы более выразительным и облегчает восприятие структуры программы.

Помимо ключевых слов редактор кода выделяет курсивом комментарии.

В процессе разработки программы часто возникает необходимость переключения между окном редактора кода и окном формы. Сделать это можно при помощи командной кнопки Toglle Form/Unit, находящейся на панели инструментов View (рис. В28), или нажав клавишу <F12>. На этой же панели инструментов находятся командные кнопки View Unit и View Form, используя которые можно выбрать нужный модуль или форму в случае, если проект состоит из нескольких модулей или форм.

Рис. В28. Панель инструментов View

Система подсказок

В процессе набора текста программы редактор кода выводит справочную информацию о параметрах процедур и функций, о свойствах и методах объектов.

Например, если в окне редактора кода набрать MessageDig (имя функции, которая выводит на экран окно сообщения) и открывающую скобку, то на экране появится окно подсказки, в котором будут перечислены параметры функции MessageDig с указанием их типа (рис. В29). Один из параметров выделен полужирным. Так редактор подсказывает программисту, какой параметр он должен вводить. После набора параметра и запятой в окне подсказки будет выделен следующий параметр. И так до тех пор, пока не будут указаны все параметры.

Для объектов редактор кода выводит список свойств и методов. Как только программист наберет имя объекта (компонента) и точку, так сразу на экране появляется окно подсказки — список свойств и методов этого объекта (рис. В30). Перейти к нужному элементу списка можно при помощи клавиш перемещения курсора или набрав на клавиатуре несколько первых букв имени нужного свойства или метода. После того как будет выбран нужный элемент списка и нажата клавиша <Enter>, выбранное свойство или метод будут вставлены в текст программы.

Система подсказок существенно облегчает процесс подготовки текста программы, избавляет от рутины. Кроме того, если во время набора программы подсказка не появилась, это значит, что программист допустил ошибку: скорее всего, неверно набрал имя процедуры или функции.

Рис. В29. Пример подсказки

Рис. В30. Редактор кода автоматически выводит список свойств и методов объекта (компонента)

Рис. В31. Окно Code Explorer облегчает навигацию по тексту программы

Навигатор кода

Окно редактора кода разделено на две части (рис. В31). В правой части находится текст программы. Левая часть, которая называется навигатор кода (Code Explorer), облегчает навигацию по тексту (коду) программы. В иерархическом списке, структура которого зависит от проекта, над которым идет работа, перечислены формы проекта, их компоненты, процедуры обработки событий, функции, процедуры, глобальные переменные и константы. Выбрав соответствующий элемент списка, можно быстро перейти к нужному фрагменту кода.

Окно навигатора кода можно закрыть обычным образом. Если окно навигатора кода не доступно, то для того, чтобы оно появилось на экране, нужно из меню View выбрать команду Code Explorer.

Шаблоны кода

В процессе набора текста удобно использовать шаблоны кода (Code Templates). Шаблон кода — это инструкция программы, записанная в общем виде. Например, шаблон для инструкции case выглядит так:

case of :;

:;

else ;

end;

Редактор кода предоставляет программисту большой набор шаблонов: объявления массивов, классов, функций, процедур; инструкций выбора (if, case), циклов (for, while). Для некоторых инструкций , например if и while, есть несколько вариантов шаблонов.

Для того чтобы в процессе набора текста программы воспользоваться шаблоном кода и вставить его в текст программы, нужно нажать комбинацию клавиш <Ctrl>+<J> и из появившегося списка выбрать нужный шаблон (рис. В32). Выбрать шаблон можно обычным образом, прокручивая список, или вводом первых букв имени шаблона (имена шаблонов в списке выделены полужирным). Выбрав в списке шаблон, нужно нажать <Enter>, и шаблон будет вставлен в текст программы.

Программист может создать свой собственный шаблон кода и использовать его точно так же, как и стандартный. Для того чтобы создать шаблон кода, нужно из меню Tools выбрать команду Editor Options, во вкладке Source Options щелкнуть на кнопке Edit Code Templates, в появившемся диалоговом окне Code Templates щелкнуть на кнопке Add и в появившемся окне Add Code Template (рис. ВЗЗ) задать имя шаблона (Shortcut Name) и его краткое описание (Description). Затем, после щелчка на кнопке ОК, в поле Code диалогового окна Code Templates ввести шаблон (рис. В34).

Рис. В32. Список шаблонов кода отображается в результате нажатия клавиш <Ctrl>+<J>

Рис. В33. В поля диалогового окна надо ввести имя шаблона и его краткое описание

Рис. В34. Пример шаблона кода программиста

Справочная система

В процессе набора программы можно получить справку, например, о конструкции языка или функции. Для этого нужно в окне редактора кода набрать слово (инструкцию языка программирования, имя процедуры или функции и т. д.), о котором надо получить справку, и нажать клавишу <F1>.

Справочную информацию можно получить, выбрав из меню Help команду Delphi Help. В этом случае на экране появится стандартное окно справочной системы (рис. В35). В этом окне на вкладке Предметный указатель нужно ввести ключевое слово, определяющее тему, по которой нужна справка. Как правило, в качестве ключевого слова используют первые несколько букв имени функции, процедуры, свойства или метода.

Рис. В35. Поиск справочной информации по ключевому слову

Структура проекта

Проект Delphi представляет собой набор программных единиц — модулей. Один из модулей — главный, содержит инструкции, с которых начинается выполнение программы. Главный модуль приложения полностью формируется Delphi.

Главный модуль представляет собой файл с расширением dpr. Для того чтобы увидеть текст главного модуля приложения, нужно из меню Project выбрать команду View Source.

В листинге ВЗ приведен текст главного модуля программы вычисления скорости бега.

Листинг ВЗ. Главный модуль приложения Скорость бега program vrun;

uses

Forms,vrun1 in 'vrunl.pas' {Form1};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

Начинается главный модуль словом program, за которым следует имя программы, совпадающее с именем проекта. Имя проекта задается в момент сохранения проекта, и оно определяет имя создаваемого компилятором исполняемого файла программы. Далее за словом uses следуют имена используемых модулей: библиотечного модуля Forms и модуля формы vrunl.pas.

Строка {$R *.RES}, которая похожа на комментарий, — это директива компилятору подключить файл ресурсов. Файл ресурсов содержит ресурсы приложения: пиктограммы, курсоры, битовые образы и др. Звездочка показывает, что имя файла ресурсов такое же, как и у файла проекта, но с расширением res.

Файл ресурсов не "является текстовым файлом, поэтому просмотреть его с помощью редактора текста нельзя. Для работы с файлами ресурсов используют специальные программы, например, Resource Workshop. Можно также применять входящую в состав Delphi утилиту Image Editor, доступ к которой можно получить выбором из меню Tools команды Image Editor.

Исполняемая часть главного модуля находится между инструкциями begin и end. Инструкции исполняемой части обеспечивают инициализацию приложения и вывод на экран стартового окна.

Помимо главного модуля, каждая программа включает в себя еще как минимум один модуль формы, который содержит описание стартовой формы приложения и поддерживающих ее работу процедур. В Delphi каждой форме соответствует свой модуль.

В листинге В4 приведен текст модуля программы вычисления скорости бега.

Листинг В4. Модуль программы Скорость бега

unit vrun1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm) Edit1: TEdit;

Edit2: TEdit; Label1: TLabel;

Label2: TLabel; Label3: TLabel;

Label4: TLabel;

Button1: TButton;

Button2: TButton;

procedure ButtonlClick(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations } public

{ Public declarations } end;

var

Form1: TForm1;

implementation

{$R *.dfm}

// нажатие кнопки Вычислить

procedure TForm1.ButtonlClick'(Sender: TObject);

var

dist : integer; // дистанция, метров

t: real; // время как дробное число

min : integer; // время, минуты

sek : integer; // время, секунды

v: real;

// скорость

begin

// получить исходные данные из полей ввода

dist := StrToInt(Edit1.Text); t := StrToFloat(Edit2.Text);

// предварительные преобразования

min := Trunc(t); // кол-во минут — это целая часть числа t

sek := Trunc(t*100) mod 100; // кол-во секунд — это дробная часть

// числа t

// вычисление

v := (dist/1000) / ((min*60 + sek)/3600);

// вывод результата

label4.Caption := 'Дистанция: '+ Edit1.Text + ' м' + #13

+ 'Время: ' + IntToStr(min) + ' мин '

+ IntToStr(sek) + ' сек ' + #13 +

'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + км/час';

end;

// нажатие кнопки Завершить

procedure TForm1.Button2Click(Sender: TObject)

begin

Form1.Close;

end;

end.

Начинается модуль словом unit, за которым следует имя модуля. Именно это имя упоминается в списке используемых модулей в инструкции uses главного модуля приложения, текст которого приведен в листинге ВЗ.

Модуль состоит из следующих разделов:

  • интерфейса;
  • реализации;
  • инициализации.


Раздел интерфейса (начинается словом interface) сообщает компилятору, какая часть модуля является доступной для других модулей программы. В этом разделе перечислены (после слова uses) библиотечные модули, используемые данным модулем. Также здесь находится сформированное Delphi описание формы, которое следует за словом type.
Раздел реализации открывается словом implementation и содержит объявления локальных переменных, процедур и функций, поддерживающих работу формы.
Начинается раздел реализации директивой {$R *.DFM}, указывающей компилятору, что в процессе генерации выполняемого файла надо использовать описание формы. Описание формы находится в файле с расширением dfm, имя которого совпадает с именем модуля. Файл описания формы генерируется средой Delphi на основе внешнего вида формы.
За директивой ($R *.DFM} следуют процедуры обработки событий для формы и ее компонентов. Сюда же программист может поместить другие процедуры и функции.
Раздел инициализации позволяет выполнить инициализацию переменных модуля. Инструкции раздела инициализации располагаются после раздела реализации (описания всех процедур и функций) между begin и end. Если раздел инициализации не содержит инструкций (как в приведенном примере), то слово begin не указывается.
Следует отметить, что значительное количество инструкций модуля формирует Delphi. Например, Delphi, анализируя действия программиста по созданию формы, генерирует описание класса формы (после слова type). В приведенном примере инструкции, набранные программистом, выделены фоном. Очевидно, что Delphi выполнила значительную часть работы по составлению текста программы.

Сохранение проекта

Проект — это набор файлов, используя которые компилятор создает исполняемый файл программы (ЕХЕ-файл). В простейшем случае проект состоит из файла описания проекта (DOF-файл), файла главного модуля (DPR-файл), файла ресурсов (RES-файл), файла описания формы (DFM-файл), файла модуля формы, в котором находятся основной код приложения, в том числе функции обработки событий на компонентах формы (PAS-файл), файл конфигурации (CFG-файл).

Чтобы сохранить проект, нужно из меню File выбрать команду Save Project As. Если проект еще ни разу не был сохранен, то Delphi сначала предложит сохранить модуль (содержимое окна редактора кода), поэтому на экране появится окно Save Unitl As. В этом окне (рис. В36) надо выбрать папку, предназначенную для файлов проекта, и ввести имя модуля. После нажатия кнопки Сохранить, появляется следующее окно (рис. В37), в котором необходимо ввести имя файла проекта.

Рис. В36. Сохранение модуля формы

Рис. В37. Сохранение проекта

Обратите внимание на то, имена файлов модуля (pas-файл) и проекта (dpr-файл) должны быть разными. Имя генерируемого компилятором исполняемого файла совпадает с именем проекта. Поэтому файлу проекта следует присвоить такое имя, которое, по вашему мнению, должен иметь исполняемый файл программы, а файлу модуля — какое-либо другое имя, например, полученное путем добавления к имени файла проекта порядкового номера модуля.

Примечание

Так как проект представляет собой набор файлов, то рекомендуется для каждого проекта создавать отдельную папку.

Компиляция

Компиляция — это процесс преобразования исходной программы в исполняемую. Процесс компиляции состоит из двух этапов. На первом этапе выполняется проверка текста программы на отсутствие ошибок, на втором — генерируется исполняемая программа (ехе-файл).

После ввода текста функции обработки события и сохранения проекта можно из меню Project выбрать команду Compile и выполнить компиляцию. Процесс и результат компиляции отражаются в диалоговом окне Compiling (РИС. В38). В это окно компилятор выводит ошибки (Errors), предупреждений (warnings) и подсказок (Hints). Сами сообщения об ошибках, предупреждения и подсказки отображаются в нижней части окна редактора кода (рис. В39).

Рис. В38. Результат компиляции

Примечание

Если во время компиляции окна Compiling на экране нет, то выберите из меню Tools команду Environment options и на вкладке Preferences установите во включенное состояние переключатель Show compiler progress.

Рис. В39. Сообщения компилятора об обнаруженных ошибках

Ошибки

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

Чтобы перейти к фрагменту кода, который содержит ошибку, надо установить курсор в строку с сообщением об ошибке и из контекстного меню (рис. В40) выбрать команду Edit source.

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

Рис. В40. Переход к фрагменту программы, содержащему ошибку

В табл. В10 перечислены наиболее типичные ошибки и соответствующие им сообщения компилятора.

Таблица В10. Сообщения компилятора об ошибках

Сообщение
Вероятная причина
Missing operator or semicolon (Отсутствует оператор или точка с запятой)
После инструкции не поставлена точка с запятой

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

Если в программе нет синтаксических ошибок, компилятор создает исполняемый файл программы. Имя исполняемого файла такое же, как и у файла проекта, а расширение — exe. Delphi помещает исполняемый файл в тот же каталог, где находится файл проекта.

Предупреждения и подсказки

При обнаружении в программе неточностей, которые не являются ошибками, компилятор выводит подсказки (Hints) и предупреждения (warnings).

Например, наиболее часто выводимой подсказкой является сообщение об объявленной, но не используемой переменной:

Variable ... is declared but never used in ... Действительно, зачем объявлять переменную и не использовать ее?

В табл. В11 приведены предупреждения, наиболее часто выводимые компилятором.

Таблица В11. Предупреждения компилятора

Предупреждение
Вероятная причина
Variable... is declared but never used in ...

Variable . . . might not have been initialized. (Вероятно, используется не инициализированная переменная)

Переменная не используется

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

 

Запуск программы

Пробный запуск программы можно выполнить непосредственно из Delphi, не завершая работу со средой разработки. Для этого нужно из меню Run выбрать команду Run или щелкнуть на соответствующей кнопке панели инструментов Debug (рис. В41).

Рис. В41. Запуск программы из среды разработки

Ошибки времени выполнения

Во время работы приложения могут возникать ошибки, которые называются ошибками времени выполнения (run-time errors) или исключениями (exceptions). В большинстве случаев причинами исключений являются неверные исходные данные. Например, если во время работы программы вычисления скорости бега в поле Время ввести 3.20, т.е. для отделения дробной части числа от целой использовать точку, то в результате нажатия кнопки Вычислить на экране появится окно с сообщением об ошибке (рис. В42).

Рис. В42. Пример ошибки времени выполнения (программа запущена из Windows)

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

Если в настройке Windows указано, что разделитель целой и дробной частей числа — запятая (для России это стандартная установка), а пользователь во время работы программы введет в поле редактирования, например, строку 3.20, то при выполнении инструкции

t = StrToFloat(Edit2.Text)

возникнет исключение, т. к. при стандартной , для России настройке Windows содержимое поля Edit2 и, следовательно, аргумент функции strToFloat не являются изображением дробного числа.

Если программа запущена из среды разработки, то при возникновении исключения выполнение программы приостанавливается, и на экране появляется окно с сообщением об ошибке и ее типе. В качестве примера на рис. В43 приведено окно с сообщением о том, что введенная пользователем строка не является дробным числом.

Рис. В43. Пример сообщения о возникновении исключения (программа запущена из Delphi)

После нажатия кнопки ОК программист может продолжить выполнение программы (для этого надо из меню Run выбрать команду Step Over) или прервать выполнение программы. В последнем случае нужно из меню Run выбрать команду Program Reset.

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

В листинге В5 приведена версия программы Скорость бега, в которой реализована защита от некоторых некорректных действий пользователя, в частности, программа.позволяет вводить в поле Дистанция (Editl) только цифры.

Внесение изменений

После нескольких запусков программы Скорость бега возникает желание внести изменения в программу. Например, было бы неплохо, чтобы после ввода дистанции и нажатия клавиши <Enter> курсор переходил в поле Время. Или если бы в поля Дистанция и Время пользователь мог ввести только цифры.

Чтобы внести изменения в программу, нужно запустить Delphi и открыть соответствующий проект. Сделать это можно обычным способом, выбрав из меню File команду Open Project. Можно также воспользоваться командой Reopen из меню File. При выборе команды Reopen открывается список проектов, над которыми программист работал в последнее время.

В листинге В5 приведена программа Скорость бега, в которую добавлены

Процедуры обработки событий OnKeyPress Для компонентов Edit1 и Edit2.

Следует обратить внимание на то, что для добавления в программу процедуры обработки события нужно в окне Object Inspector выбрать компонент, для которого создается процедура, затем на вкладке Events выбрать событие и сделать двойной щелчок в поле имени процедуры. Delphi сформирует шаблон процедуры обработки события. После этого можно вводить инструкции, реализующие процедуру обработки.

Листинг В5. Модуль программы Скорость бега после внесения изменений unit vrun1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForml = class(TForm) Editl: TEdit;

Edit2: TEdit; Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Buttonl: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure EditlKeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations } public

{ Public declarations } end;

var

Form1: TForm1;

implementation

{$R *.dfm)

// нажатие кнопки Вычислить

procedure TForm1.ButtonlClick(Sender: TObject);

var

dist : integer; // дистанция, метров

t: real; // время как дробное число

min : integer; // время, минуты

sek : integer; // время, секунды

v: real; // скорость

begin

// получить исходные данные из полей ввода

dist := StrToInt(Editl.Text); t := StrToFloat(Edit2.Text);

// предварительные преобразования

min := Trunc(t); // кол-во минут — это целая часть числа t

sek := Trunc(t*100) mod 100; // кол-во секунд — это дробная часть

// числа t

// вычисление

v := (dist/1000) / ( (min*60 + sek)/3600);

// вывод результата

label4.Caption := 'Дистанция: '+ Editl.Text +

' м' + #13 + 'Время: ' + IntToStr(min) +

' мин ' + IntToStr(sek) + ' сек ' + #13 +

'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/час';

end;

// нажатие кнопки Завершить

procedure TForml.Button2Click(Sender: TObject);

begin

Form1.Close; end;

// нажатие клавиши в поле Дистанция

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

// Key — символ, соответствующий нажатой клавише.

// Если символ недопустимый, то процедура заменяет его

// на символ с кодом 0. В результате этого символ в поле

// редактирования не появляется, и у пользователя создается

// впечатление, что программа не реагирует на нажатие некоторых

// клавиш.

case Key of

'0'..'9': ; // цифра

#8 : ; // клавиша <Back Space>

#13 : Edit2.SetFocus ; // клавиша <Enter>

// остальные символы — запрещены

else Key :=Chr(0); // символ не отображать

end;

end;

end.

После внесения изменений проект следует сохранить. Для этого нужно из меню File выбрать команду Save all.

Окончательная настройка приложения

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

Настройка приложения выполняется на вкладке Application диалогового окна Project Options (рис. В44), которое появляется в результате выбора из меню Project команды Options.

В поле Title надо ввести название приложения. Текст, который будет введен в это поле, будет выведен на панели задач Windows, рядом со значком, изображающим работающую программу.

Рис. В44. Используя вкладку Application, можно задать значок и название программы

Чтобы назначить приложению значок, отличный от стандартного, нужно щелкнуть мышью на кнопке Load Icon. Затем, используя стандартное окно просмотра папок, найти подходящий значок (значки хранятся в файлах с расширением ico).

Создание значка для приложения

В состав Delphi входит программа Image Editor (Редактор изображений), при помощи которой программист может создать для своего приложения уникальный значок. Запускается Image Editor выбором соответствующей команды из меню Tools или из Windows — командой Пуск | Программы Borland Delphi 7 | Image Editor.

Чтобы начать работу по созданию нового значка, нужно из меню File выбрать команду New, а из появившегося списка — опцию Icon File.

После выбора типа создаваемого файла открывается окно Icon Properties, в котором необходимо выбрать характеристики создаваемого значка: size (Размер) — 32x32 (стандартный размер значков Windows) и Colors (Палитра) — 16 цветов. В результате нажатия кнопки ОК открывается окно Icon1.ico, в котором можно, используя стандартные инструменты и палитру, нарисовать нужный значок.

Процесс рисования в Image Editor практически ничем не отличается от процесса создания картинки в обычном графическом редакторе, например, в Microsoft Paint. Однако есть одна тонкость. Первоначально поле изображения закрашено "прозрачным" (transparent) цветом. Если значок нарисовать на этом фоне, то при его выводе части поля изображения, закрашенные "прозрачным" цветом, примут цвет фона, на котором будет находиться значок.

В процессе создания картинки можно удалить (стереть) ошибочно нарисованные элементы, закрасив их прозрачным цветом, которому на палитре соответствует левый квадрат в нижнем ряду.

Кроме "прозрачного" цвета, в палитре есть "инверсный" цвет. Нарисованные этим цветом части рисунка при выводе на экран окрашиваются инверсным цветом относительно цвета фона.

Сохраняется созданный значок обычным образом, т. е. выбором из меню File команды Save.

Перенос приложения на другой компьютер

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

Программы, которые используют библиотеки, драйверы и другие программные компоненты, например, компоненты доступа к базам данных, перенести на другой компьютер вручную проблематично. Для таких программ лучше создать установочный диск (CD-ROM). Сделать это можно, например, при помощи пакета InstallShield Express, который входит в комплект поставки Delphi. Процесс создания установочного диска описан в гл. 18.

 

<< НазадСодержаниеВперед >>

 

®Сайт разработал: Nek по вопросам пишите сюда NekSuper@yandex.ru
 
Hosted by uCoz