Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi.doc
Скачиваний:
29
Добавлен:
28.04.2019
Размер:
407.55 Кб
Скачать

Калужский государственный педагогический университет

им. К.Э. Циолковского

Объектно-ориентированные технологии

Delphi

Ассистент кафедры ОТД

Свиркин Д.С.

Содержание:

Практическая работа Delphi_01 3

Практическая работа Delphi_02 7

Практическая работа Delphi_03 10

Практическая работа Delphi_04 11

Практическая работа Delphi_05 13

Практическая работа Delphi_06 14

Практическая работа Delphi_07 16

Практическая работа Delphi_08 17

Практическая работа Delphi_09 19

Практическая работа Delphi_10 20

Практическая работа Delphi_11 23

Практическая работа Delphi_12 25

Практическая работа Delphi_13 26

Практическая работа Delphi_14 29

Практическая работа Delphi_15 31

Практическая работа Delphi_16 32

Практическая работа Delphi_17 34

Практическая работа Delphi_18 37

Практическая работа Delphi_19 41

Практическая работа Delphi_01

Цель: Составить программу для вычисления площади круга произвольного радиуса.

План разработки программы

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

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

3. Из страницы Standard Палитры Компонентов поместим на форму Form1 четыре компонента: Label1, Label2, Button1 и Edit1.

Label1, Label2 - метки - компоненты, предназначенные для отображения текстовой информации. Отображаемый ими текст может быть размещен в них как на этапе конструирования формы, так и на этапе выполнения программы. В метку Label1 мы поместим текст «Введите радиус окружности», a в метку Label2 нa этапе выполнения программы будем помещать вычисленную площадь круга.

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

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

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

Сделаем форму активной, щелкнув мышью по любому ее месту, не занятому другими компонентами.

Выберем в Инспекторе Объектов свойство Caption(Заголовок) и вместо текста «Form1» введем текст «Вычисление площади круга». Таким образом, мы изменим заголовок нашей формы.

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

5. Установим свойства компонентов Label1 и Label2. Компоненты Label1 и Label2 также имеют свойства Height, Width, Left и Top. Приведем значения этих свойств для компонентов Label1 и Label2:

Label1 Label2

Height 57 любое число

Width 129 любое число

Left 131 100

Top 34 218

Значения свойств Height и Width для компонента Label2 можно выбрать произвольными, и вот почему.

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

Эту панель можно вызвать на экран дисплея, выполнив команду View|Alignment Palette главного меню Delphi. Кнопки, изображенные в этой панели, позволяют выравнивать выделенные компоненты внутри формы. Например, центрировать выделенный компонент относительно вертикальной оси симметрии формы или центрировать выделенный компонент относительно горизонтальной оси симметрии формы и т.п.

Выравнивать можно не только один компонент, но несколько компонентов одновременно. Для того чтобы выделить группу компонентов, необходимо при выделении удерживать нажатой клавишу Shift. Выравнивание компонентов автоматически изменяет значения свойств Left и Тор в Инспекторе Объектов.

Свойство Caption является основным для метки и содержит отображаемый ею текст. Для метки Label1 установим свойство Caption равным 'Введите радиус круга и нажмите кнопку Счет'. Для метки Label2 свойство Caption будет определяться на этапе выполнения программы.

Свойство AutoSize метки определяет, будет ли размер метки устанавливаться автоматически, в зависимости от длины символьной строки, помешенной туда. Если да, то свойство AutoSize следует установить равным True, в противном случае - False.

Свойство WordWrap (Перенос слов) разрешает либо запрещает перенос слов, если строка не помещается в метку и свойство AutoSize равно False. В первом случае свойство WordWrap должно быть установлено равным True, во втором - False.

Свойство Alignment (Выравнивание) определяет, как будет выровнен текст внутри метки: по левому краю, по центру или по правому краю.

Приведем значения этих свойств для меток Label1 и Label2:

Label1

Label2

AutoSize

False

True

WordWrap

True

False

Alignment

taCenter

taLeftJustify

Заметим, что как только мы для метки Label2 положили значение свойства AutoSize равным True, размеры компонента, т.е. значения свойств Height и Width, будут определяться размерами помещенной в него символьной строки. Как было сказано выше, символьная строка будет присваиваться свойству Caption метки Label2 на этапе выполнения программы, а сейчас для улучшения внешнего вида будущей программы можно для свойства Caption удалить значение 'Label2' и в качестве значения присвоить символьную строку, содержащую несколько пробелов - ' ', чтобы компонент Label2 был лучше виден на форме.

Свойство Font является сложным свойством и определяет различные характеристики, описывающие шрифт, используемый при отображении текстов, например высоту шрифта, его имя, начертание и т.д. Для того чтобы установить характеристики шрифта, выберем щелчком мыши свойство Font в Инспекторе Объектов и щелкнем по кнопке с тремя точками, появившейся в правой колонке - [•••]. На экране появится окно Выбор шрифта (почти как в WinWord).

При помощи этого окна установим следующие характеристики шрифтов для меток Label1 и Label2:

Label1

Label2

Шрифт

Times New Roman

Arial

Начертание

Полужирный

Курсив

Размер

10

11

Заметим, что после изменения характеристик шрифтов для меток Label1 и Label2 имеющееся у них свойство ParentFont поменяло свое значение с True на False. Свойство ParentFont определяет, будет ли для данного компонента использоваться шрифт (свойство Font) родительского компонента-контейнера. Для рассматриваемых компонентов родительским компонентом является форма, содержащая их. Если свойство ParentFont компонента равно True, то в компоненте используется шрифт, характеристики которого заданы в компоненте-родителе. В противном случае родительский и дочерний компоненты имеют разные характеристики своих шрифтов.

6. Свойства Height, Width, Left и Top для компонентов Edit1 и Button1 имеют тот же смысл, что и для компонентов Label1 и Label2. Приведем значения этих свойств для компонентов Edit1 и Button1:

Edit1

Button1

Height

21

25

Width

193

75

Left

31

285

Top

146

146

Свойство AutoSize, имеющееся у компонента Edit1, определяет, будет ли строка ввода увеличивать свою высоту, если изменится высота шрифта у текста, размещенного в компоненте. Если мы хотим, чтобы строка ввода автоматически увеличивалась, значение свойства следует положить равным True, в противном случае - False. В нашем примере оставим для определенности значение, заданное по умолчанию - True.

Свойство Text является основным для компонента Edit1 и предназначено для ввода (или реже - для вывода) символьных строк. По умолчанию значением этого свойства является имя компонента - 'Editi', но для улучшения внешнего вида программы зададим в качестве значения этого свойства пустую строку - ' '.

Для компонента Button1 в качестве значения свойства Caption положим символьную строку 'Счет'.

7. Все используемые в примере компоненты - форма, метки, строка ввода и кнопка - обладают именами, задаваемыми в имеющемся у них свойстве Name (Имя): Form1, Label1, Label2, Edit1, Button1. Имена компонентов генерируются автоматически интегрированной средой Delphi при создании компонента, то есть, например, при размещении компонента на форме. Для образования имени компонента используется имя класса (про классы поговорим позже) с отброшенной первой буквой Т. В конце имени добавляется цифра, указывающая, под каким порядковым номером в своем классе появился на свет компонент. Например, компонент Edit1 является экземпляром класса TEdit, а компоненты Label1 и Label2 являются экземплярами класса TLabel.

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

На этом этап конструирования формы можно считать завершенным.

8. Переходим к этапу написания кода программы.

Наша будущая программа должна вычислять площадь круга после того, как в строку ввода введено значение радиуса и выполнен щелчок мышью по кнопке Счет. Это означает, что мы должны написать обработчик события OnClick для кнопки Button1. Событие OnClick для кнопки является событием по умолчанию, поэтому, чтобы создать заготовку обработчика события, достаточно выполнить двойной щелчок по кнопке Button1. В результате окно редактора кода станет активным и будет содержать заготовку обработчика события.

Добавим в заготовку код для вычисления площади круга:

procedure TForm1.Button1Click(Sender: TObject);

var r,s:real; //*

begin

r := StrToFloat(Edit1.Text); //*

s := pi*sqr(r); //*

Label2.Caption := 'Площадь круга равна ' + //*

FloatToStrF(s, ffGeneral, 7, 2) //*

end;

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

На этом этап программирования можно считать завершенным.

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

Далее при помощи раскрывающегося списка Папка нужно отыскать папку, созданную заранее для разрабатываемого проекта, и открыть ее. Если папка не создана, ее можно создать при помощи кнопки [Создание новой папки]. После того как нужная папка открыта, в поле Имя файла следует указать имя сохраняемого модуля. По умолчанию модуль имеет имя Unit1. При желании можно заменить его более осмысленным, но в этом примере мы оставим его без изменения. Завершим сохранение модуля щелчком по кнопке Сохранить.

После этого появится диалоговое окно сохранения файла проекта, полностью аналогичное предыдущему. По умолчанию файлу проекта дается имя Project1. Поскольку это же имя будет впоследствии присвоено исполняемому файлу, то здесь желательно придумать что-нибудь пооригинальнее, например, area_of_circle или, на худой конец, р2_1.

Заметим, что имена файла проекта и модуля должны быть различными.

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

Save - сохранить текущий модуль;

Save As - сохранить текущий модуль под новым именем;

Save Project As - сохранить текущий проект под новым именем.

Сохранив проект, запустим его на выполнение. Если будут возникать ошибки, например, синтаксические, то исправим их точно так же, как это вы делали, работая с Turbo Pascal’ем. В случае отсутствия ошибок на экране дисплея появится окно нашей программы.

Введем произвольный радиус в строку ввода и нажмем кнопку Счет - в нижней части окна появится соответствующая площадь круга.

Проверьте текст модуля Unit1.pas, сформированного совместно вами и средой Delphi.

Текст модуля Unit1.pas

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Edit1: TEdit;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var r, s; real;

begin

r := StrToFloat(Edit1.Text);

s := pi*sqr(r);

Label2.Caption := 'Площадь круга равна ' + FloatToStrF(s, ffGeneral, 7, 2)

end;

end.