В визуальной среде программирования Delphi

ТЕХНОЛОГИЯ СОЗДАНИЯ ПРИЛОЖЕНИЙ

Методические указания к лабораторной работе

по курсу «Технологии программирования»

для студентов направления 230100.62

«Информатика и вычислительная техника»,

профиль «Вычислительные машины, комплексы, системы и сети»

Ижевск

УДК 004.431.4

Рецензент Коробейников А. В., канд. техн. наук,

доцент кафедры «Программное обеспечение» ИжГТУ

Составители: Гафаров Р. М., канд. техн. наук;

Сяктерева В. В., канд. техн. наук

Рекомендовано к изданию на заседании кафедры «Вычислительная техника» ИжГТУ (протокол № 127 от 08 июня 2012 г.).

Технология создания приложений в визуальной среде программирования Delphi: методические указания к лабораторной работе / сост. Р. М. Гафаров, В. В. Сяктерева. – Ижевск: Изд-во ИжГТУ, 2012. – 24 с.

УДК 004.431.4

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

Теоретические сведения также могут быть полезны для студентов специальности 090303.65 «Информационная безопасность автоматизированных систем».

© Гафаров Р. М., Сяктерева В.В., составление, 2012

© Ижевский государственный технический университет, 2012

Лабораторная работа «Технология создания приложений

в визуальной среде программирования Delphi»

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

Задание: в соответствии с вариантом задания вычислить на ЭВМ значение суммы членов ряда с заданной точностью ε. На печать вывести значение суммы и число членов ряда, вошедших в сумму.

основные СВЕДЕНИЯ о ВИЗУАЛЬНОЙ

СРЕДЕ ПРОГРАММИРОВАНИЯ DELPHI

Delphi соединяет в себе компилятор языка программирования Object Pascal, интегрированную среду разработки (IDE), библиотеку визуальных компонентов VCL, средства для работы с базами данных (BDE) и другое [1-3]. При помощи Delphi можно решить практически любую задачу, включая работу с базами данных, написание приложений для Интернета, экранных заставок, системных утилит и пр. Delphi – близкий родственник обычного языка Pascal, что обеспечило ему широкую популярность. В настоящее время Delphi стал основным инструментом разработки программного обеспечения во всем мире.

Вид экрана после запуска Delphi показан на рис. 1. Вполне возможно, что Delphi запомнил проект, который в него загружали в прошлый раз, и автоматически открыл его. Чтобы не трогать чужое, в этом случае закройте все файлы (меню File à Close All) и создайте новый проект (File à New à Application).

В отличие от Pascal, программа на Delphi (называется "проект") "рассыпана" по многим файлам с расширениями pas, dcu, dpr, dfm, res и другими. Поэтому необходимо неукоснительно соблюдать простое правило:

Каждый новый проект – в отдельном каталоге на диске!

Рис. 1. Экран системы Delphi

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

Сохранение проекта (лучше всего это сделать сразу же) выполняется в два этапа. В меню File выберите пункт Save Project As. Перейдите в каталог, где будет храниться проект. Сначала надо ввести имя главного программного файла (стандартно – main.pas), а потом – имя самого проекта (расширение dpr). Полученный после компиляции exe-файл будет иметь такое же имя, как и проект. При дальнейшей работе желательно включить функцию автосохранения. При этом все файлы автоматически сохраняются перед каждым запуском программы, что гарантирует их сохранность даже в случае зависания машины. Для включения автосохранения войдите в меню ToolsàEnvironment Options и установите флажки Editor Files и Project Desktop.

Итак, что же мы видим на экране? Во-первых, так называемую форму. Форма – это будущее окно нашей программы. На форме размещаются компоненты, которые берутся из палитры компонентов. Компоненты бывают визуальные (кнопки, меню, поля ввода, изображения) и невизуальные (диалоги, таймер, базы данных). Визуальные компоненты отображаются в окне программы при ее работе.

Текст программы по большей части пишется автоматически в виде модуля (unit). Модуль делится на две секции: Interface и Implementation. Секцию Interface лучше пока не трогать и ничего там не добавлять и тем более не удалять.

И сама форма, и все компоненты являются объектами. У каждого объекта есть свойства, методы и события. Например, у объекта "Кнопка" есть свойство "Текст на кнопке" и событие "Нажатие на кнопку". Свойства и события отображаются в инспекторе объектов. Важно следить за тем, какой объект в данный момент выделен на форме (его название отображается в верхней части окна инспектора объектов), так как все отображаемые свойства и события относятся именно к выделенному объекту.

Запомните следующие горячие клавиши, необходимые для работы с Delphi:

F12 – переключение между формой и текстом программы;

F11 – вызов инспектора объектов;

F9 – запуск программы на выполнение;

Ctrl+F2– прерывание работы запущенной программы.

Первая программа. Большинство компьютерных программ должны получать какую-то информацию от пользователя, обрабатывать ее и выводить на экран результат. Напишем простейшую программу, которая будет вводить с клавиатуры два числа a и b и выводить результат вычисления формулы (a+b)2. Собственно расчет не будет ничем отличаться от аналогичного расчета на Pascal. А вот ввод и вывод данных делаются совершенно по-другому. В Delphi нет операторов Read/Write. Весь ввод-вывод обеспечивают визуальные компоненты, размещаемые на форме. Прежде всего разберемся с самой формой. Каждому компоненту, и форме в том числе, автоматически присваивается уникальное имя, заносимое в свойство Name.

Свойство Name не трогать!

Свойство Name предназначено для обращения к компонентам из текста программы. У вашей формы имя по умолчанию будет Form1. Остальные ее свойства отображаются в инспекторе объектов. Обязательно проверьте, что именно форма является текущим объектом (в заголовке окна инспектора объектов написано Form1), иначе вы будете менять свойства не того компонента. Если в инспекторе рядом со свойством стоит символ +, это означает, что при щелчке по нему это свойство "раскроется" на несколько подпунктов. В табл. 1 приведен список основных свойств формы.

Помимо задания свойств формы, нужно еще задать свойства всего проекта. Зайдите в меню Project à Options и перейдите на закладку Application. В поле Title введите название программы, которое будет отображаться на панели задач Windows. Оно может не совпадать с текстом в заголовке формы. Здесь же при помощи кнопки LoadIcon можно загрузить значок для вашей программы из файла с расширением.ico.

Табл. 1. Свойства формы
Свойство Смысл Рекомендуемое значение
Caption Текст, отображаемый в заголовке формы Название программы
Position Где форма будет размещаться на экране при запуске программы PoDesktopCenter – в центре экрана
Color Цвет формы Без разницы
BorderStyle Можно ли менять размер формы во время выполнения программы BsSizeable – можно BsSingle – нельзя
Icon Значок, отображаемый в заголовке формы Без разницы. Значки загружаются из файлов с расширением.ico
Height Высота формы в пикселах Лучше не более 639
Width Ширина формы в пикселах Лучше не более 479
BorderIcons Кнопки, отображаемые на заголовке формы Если форма постоянного размера (BorderStyle=bsSinlge), эти кнопки надо убрать
BiMinimize Кнопка сворачивания формы
BiMaximize Кнопка разворачивания формы

Ввод и вывод данных. Удобнее всего вводить данные при помощи поля ввода. Компонент "поле ввода" в Delphi называется LabeledEdit и находится на закладке Additional палитры компонентов Его значок - . Выделите компонент и щелкните мышью на форме – компонент перенесется на нее. Передвиньте его в желаемое место. Точно также поместите на форму второй такой же компонент. По умолчанию они будут иметь имена LabeledEdit1 и LabeledEdit2 соответственно. Теперь нужно задать свойства полей ввода. Прежде всего обратите внимание на свойство Text. В нем хранится текст (тип данных string), вводимый пользователем в поле. Пока там ничего нет. В Text можно записать значения по умолчанию, чтобы при запуске программы поля не были пустыми. Занесите в свойства Text значение "0" (разумеется, без кавычек!) Далее следует задать подпись над полем ввода (кстати, подпись может располагаться и сбоку, и снизу – см. свойство LabelPosition). Разверните свойство EditLabel, щелкнув по плюсику, и найдите свойство Caption – оно написано зелеными буквами. Напишите в свойстве Caption название поля ввода, например, "А" и "В". Эти названия просто выводятся на экран и никак не влияют на работу программы.

Для вывода результатов расчета на закладке Standard найдите компонент Label со значком . Label – это просто текст, выводимый на экран. Поместите его на форму. Выводимый текст хранится в свойстве Caption. Для начала это свойство надо очистить, чтобы на экране не маячили надписи типа "Label1". Еще раз обратите внимание на то, что содержимое свойств Text и Caption никак не связано с именем компонента (свойство Name). Свойство Caption символьного типа. Поэтому, для того чтобы во время ра­боты программы вывести в поле метки числовое значение, нужно преобра­зовать число в строку, например, при помощи функции FloatToStr или IntToStr.

Наконец, на форму нужно поместить кнопку, при нажатии на которую будет выполняться расчет. Это общее правило Delphi: для выполнения той или иной процедуры должно произойти какое-то событие – щелчок по кнопке, выбор пункта меню, истечение заданного промежутка времени и т.д. Компонент "Кнопка" называется Button () и находится на закладке Standard. У кнопки нужно задать свойство Caption – это надпись на ней. Чтобы одна из букв на кнопке работала как горячая клавиша, перед ней надо поставить символ &.

Цвет кнопки поменять нельзя, он устанавливается в Windows. Например, если в Caption записано "&Расчет", буква "Р" станет подчеркнутой и на кнопку можно будет нажать комбинацией клавиш Alt+Р.

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

События и обработка событий. Событие – реакция приложения на операции ввода (перемещение мыши, нажатие клавиши и т.п.). Приложение Delphi строится как набор реакций программы на те или иные события.

Рис. 2. Вид формы

Основные события:

OnClick – щелчок кнопкой мыши;

OnDblClick– двойной щелчок кнопкой мыши;

OnEnter – перед тем, как элемент получает фокус;

OnError – элемент контроля обнаруживает ошибку;

OnExit – перед тем, как элемент управления теряет фокус;

OnKeyDown – при нажатии на клавишу;

OnKeyPress – при нажатой клавише;

OnKeyUp – при отпускании клавиши;

OnMouseDown – при нажатии кнопки мыши;

OnMouseMove – при перемещении мыши;

OnMouseUp – при отпускании кнопки мыши.

У формы есть дополнительные события:

OnActivate– перед тем, как форма получает управление;

OnCreate – после того, как форма создается;

OnClose – перед закрытием окна формы;

OnDeactivate – перед тем, как форма теряет управление;

OnDestroy – перед тем, как форма удаляется;

OnPaint – после отрисовки формы;

OnResize – при изменении размера окна формы.

При двойном щелчке на событии в окне инспектора объектов создается пустая программа-обработчик этого события.

Итак, нам нужно, чтобы при нажатии на кнопку выполнялась процедура расчета. Для этого нужно в инспекторе объектов перейти на закладку Events (События) и найти событие OnCLick (по щелчку). Очень важно: проверьте, что текущим компонентом является именно кнопка, иначе вы "повесите" событие на щелчок по форме или полю ввода, что, конечно, неправильно. Пока в OnClick ничего не написано. Дважды щелкните мышкой в этом пустом поле. Delphi автоматически создаст заготовку процедуры расчета: заголовок и BEGIN… END. Остальное надо будет писать самим. Заготовка должна выглядеть следующим образом:

procedure TForm1.Button1Click(Sender: TObject);

Begin

end;

Если процедура называется не Button1Click, вы все же повесили событие не на тот компонент и ничего работать не будет.

Собственно расчет ничем не отличается от обычного Pascal:

VAR a,b,c:REAL;

c:=SQR(a+b);

Весь вопрос в том, как введенные пользователем в поля ввода числа попадут в переменные a и b и каким образом отобразить на экране значение переменной с. Делается это так:

a:=StrToFloat(LabeledEdit1.Text);

b:=StrToFloat(LabeledEdit2.Text);

c:=SQR(a+b);

Label1.Caption:=FoatToStr(c);

Что же здесь написано? Во-первых, из программы можно обратиться к любому компоненту по имени. Во-вторых, чтобы получить доступ к свойству компонента, достаточно написать название этого свойства через точку после имени самого компонента. Следовательно, запись LabeledEdit1.Text означает обращение к содержимому поля ввода LabeledEdit1, то есть к тому самому введенному пользователем тексту. Наконец, чтобы преобразовать текстовую строку (ведь свойство Text, как мы знаем, имеет тип STRING) в вещественное число, используется встроенная функция StrToFloat. Таким образом, в переменные a и b занесутся числа, введенные в поля ввода на форме. Результат расчета преобразуется из вещественного числа в текст (функция FloatToStr) и этот текст записывается в свойство Caption объекта Label1. Окончательный вид нашей процедуры таков:

procedure TForm1.Button1Click(Sender: TObject);

var a,b,c:real;

Begin

a:=StrToFloat(LabeledEdit1.Text);

b:=StrToFloat(LabeledEdit2.Text);

c:=SQR(a+b);

Label1.Caption:=FoatToStr(c)

end;

Все, программу можно запускать. Жмите F9 и проверяйте ее работу. Ваша программа будет запущена как отдельное приложение, ее значок появится в панели задач. В отличие от Pascal программа автоматически не закрывается, вы сами должны завершить ее работу (закрыть ее окно). Вы не сможете редактировать исходный текст программы, если она запущена, поэтому не забывайте прекращать работу программы. Если ваше творение зависло, переключитесь в Delphi и снимите задачу комбинацией клавиш Ctrl+F2.

Вы сможете запускать программу и без Delphi – при компиляции на диске создается независимый exe-файл.

Функции преобразования типов. Функции преобразования типов (табл. 2) наиболее часто используются в инструкциях, обеспечивающих ввод и вывод информации. Например, для того чтобы вывести в поле вывода диалогового окна значение переменной типа real, необходимо сначала получить изображение числа, являющегося значением данной переменной. Это можно сделать при помощи функции FioatToStr, которая возвращает строковое представление значения выраже­ния действительного типа, указанного при вызове функции.

Обработка ошибок. Наша программа страдает существенным недостатком: если в поле ввода вместо числа ввести, скажем, "Вася", программа "свалится" с выдачей сообщения об ошибке (проверьте!) Оно и понятно – функция FloatToStr не может преобразовать "Васю" в вещественное число.

Табл. 2. Функции преобразования типов

Функция Значение
Chr (n) Символ, код которого равен n
IntToStr(n) Изображение целого числа n
FloatToStr(n) Изображение вещественного n
  FloatToStrF(n,f,k,m) Изображение вещественного n. При вызове функции ука­зывают: f: TFloatFormat – формат (способ изображения); k – точность (нужное общее количество цифр); m – количество цифр после десятичной точки. type TFloatFormat = (ffGeneral,ffExponent, ffFixed,ffNuber,ffCurrency;
StrToInt(s) Целое, изображением которого является строка s
StrToFloat(s) Вещественное, изображением которого является строка s

В Delphi реализован очень элегантный механизм реакции на ошибки в программе при помощи оператора TRY..EXCEPT..END. Вот его общий вид:

TRY

здесь может произойти ошибка

EXCEPT

эти команды выполняются, если ошибка произошла

END;

Применим данный оператор в нашей процедуре:

procedure TForm1.Button1Click(Sender: TObject);

var a,b,c:real;

Begin

Try

a:=StrToFloat(LabeledEdit1.Text);

b:=StrToFloat(LabeledEdit2.Text);

c:=SQR(a+b)

Except

Label1.Caption:='Неверные данные';

Exit

end;

Label1.Caption:=FoatToStr(c)

end;

Оператор Exit вызывает досрочный выход из всей процедуры. Если бы его не было, оператор Label1.Caption:=FloatToStr(c) выполнятся бы в любом случае, так как он никак не связан с оператором try.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: