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

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

Цель: Создадим приложение, демонстрирующее вращение Луны вокруг Земли.

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

1. Создадим новое приложение.

2. Со страницы System поместим на Form1 компонент Timer под именем Timer1. Его свойство Interval установим равным 55. Через каждые 55 миллисекунд будет возбуждаться событие OnTimer, которое мы будем использовать для перемещения по форме компонента Shape2. Число 55 - это минимальное значение, называемое тиком, которое можно установить в качестве значения свойства Interval. В общем случае любое значение свойства Interval будет округлено в большую сторону до числа, кратного 55. Это связано с особенностями аппаратного таймера компьютера.

3. Со страницы Additional поместим на Form1 компонент Shape под именем Shape1. Установим следующие значения для его свойств:

Shape – stCircle,

Height – 121,

Width – 121,

Left – 240,

Top – 104.

Выберем свойство Brush и выполним по нему двойной щелчок мышью. В Инспекторе Объектов дополнительно появились два свойства: Color и Style. Выберем свойство Color и установим его равным clBlue.

4. Поместим на Form1 компонент Shape под именем Shape2. Установим следующие значения для его свойств:

Shape – stCircle,

Height – 41,

Width – 41,

Left – 400,

Top 152.

В свойстве Brush установим цвет кисти clYellow.

5. В верхней части Form1 разместим компонент Label под именем Label1. Его свойству Caption зададим значение - 'Вращение Луны вокруг Земли'. Войдем в свойство Font и установим:

Шрифт - Courier New,

Начертание - полужирный,

Размер - 16,

Набор символов - кириллица.

Свойство Transparent установим равным True.

6. Активизируем двойным щелчком компонент Timer1. Внесем исправления в текст модуля, начиная с раздела var.

var

Form1 : TForm1;

x:real;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

x := x+0.1;

Shape2.Left := 265 + trunc(150*cos(x));

Shape2.Top := 150 – trunc(150*sin(x))

end;

Заметим, что обработчик события OnTimer предназначен для увеличения текущего значения переменной х и, соответственно, для изменения текущего положения компонента Shape2 на форме. Это означает, что переменная Х должна быть глобальной по отношению к процедуре TForm1.Timer1Timer и ее следует описать в разделе Var секции interface. Начальное значение переменной х (x:=0) может быть задано в секции initialization.

7. Выполним команду главного меню File|Save All и сохраним проект под именем Project2, модуль под именем Unit2 в папке D:\MyProject\Flight. Запустим проект на выполнение.

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

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

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

1. Создадим новое приложение.

2. Поместим на Form1 компонент PaintBox под именем PaintBox1. Установим его размеры: Height = 200; Width = 200.

3. В Инспекторе Объектов перейдем на страницу Events и выполним двойной щелчок по правому полю в строке, содержащей имя события OnPaint. В модуле Unit3.pas сформируем обработчик события OnPaint.

procedure TForm1.PaintBox1Paint(Sender: TObject);

procedure sector(clr: Tcolor; angle1,angle2:real; msg:string);

var x1,x2,y1,y2: integer;

begin

PaintBox1.Canvas.Brush.Color := clr;

x1:= trunc(cos(angle1)*PaintBox1.Width/2+PaintBox1.Width/2);

у1:=PaintBox1.Height–trunc(sin(angle1)*PaintBox1.Height/2+PaintBox1.Height/2);

x2:=trunc(cos(angle2)*PaintBox1.Width/2+PaintBox1.Width/2);

у2:=PaintBox1.Height-trunc(sin(angle2)*PaintBox1.Height/2+PaintBox1.Height/2);

PaintBox1.Canvas.Pie(0,0,PaintBox1.Width,PaintBox1.Height,x1,у1,х2,у2);

PaintBox1.Font.Name := 'Arial';

PaintBox1.Font.Size := 8;

PaintBox1.Font.Color := clBlack;

PaintBox1.Font.Style := [fsBold];

PaintBox1.Canvas.TextOut(trunc((x1+x2)/2)-20,trunc((y1+y2)/2),msg);

end;

begin

sector(clLime,0,pi/3,'16,5%');

sector(clWhite,pi/3,5*pi/6,’25%’);

sector(clSkyBlue,5*pi/6,7*pi/5,’4%’);

sector(clYellow,7*pi/5,2*pi,’30%’);

end;

end.

Для рисования сектора круга в обработчике TForm1.PaintBox1Paint определена процедура sector:

procedure sector (clr: TColor; angle1,angle2: real; msg: string);

имеющая следующие параметры:

clr - цвет, которым закрашен сектор;

angle1 - начальный угол, т.е. угол между осью ОХ и правой стороной сектора (задается в радианах);

angle2 - конечный угол, т.е. угол между осью ОХ и левой стороной сектора (задается в радианах);

msg - текст, используемый для подписи сектора.

4. Выполним команду главного меню File|Save All и сохраним проект под именем Project3, модуль под именем Unit3 в папке D:\MyProject\Diagram. Запустим проект на выполнение.

Для сокращения записи при обращении к свойствам и полям объектов можно использовать оператор присоединения with. Этот оператор уже рассматривался нами применительно к записям, поэтому достаточно сказать, что использование операторa with для объектов совершенно аналогично. В качестве примера приведем код обработчика TForm1.PaintBox1Paint с использованием оператора with:

procedure TForm1.PaintBox1Paint(Sender: TObject);

procedure sector(clr: TColor; angle1,angle2: real; msg : string);

var x1,x2,y1,y2: integer ;

begin

with PaintBox1, Canvas do

begin

Brush.Color := clr;

x1:= trunc(cos(angle1)*Width/2+Width/2);

y1:= Height - trunc(sin(angle1)*Height/2+Height/2);

x2:= trunc(cos(angle2)*Width/2+Width/2);

y2 := Height - trunc(sin(angle2)*Height/2+Height/2);

Pie (0,0,Width, Height,x1,y1,x2,y2);

Font.Name := 'Arial';

Font.Size := 8;

Font.Color:= clBlack;

Font.Style := [fsBold];

TextOut(trunc((x1+x2)/2) – 20, trunc((y1+y2)/2, msg);

end;

end;

begin

sector(clLime,0, pi/3, '16,5%');

sector(clWhite, pi/3, 5*pi/6, '25%');

sector(clSkyBlue, 5*pi/6, 7*pi/5, '28,4%');

sector(сlYеllоy, 7*рi/5, 2*рi, '30%');

end;