Хелпикс

Главная

Контакты

Случайная статья





Текст программы



Текст программы

unit Unit1;

interface

uses

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

Dialogs, Grids, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart;

type

TForm1 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

StringGrid1: TStringGrid;

Button2: TButton;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

Edit3: TEdit;

Label4: TLabel;

Label5: TLabel;

Edit4: TEdit;

Label6: TLabel;

Edit5: TEdit;

Label7: TLabel;

Chart1: TChart;

Series1: TBarSeries;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

//объявляем количество элементов массива глобальной переменной,

//чтобы ее значение было доступно во всех процедурах

N : integer;

implementation

{$R *.dfm}

// процедура кнопки «Создать таблицу для ввода»

procedure TForm1.Button1Click(Sender: TObject);

var i: integer;

begin

N:= StrToInt(Edit1.Text );      //ввод количества элементов массива

StringGrid1.Visible :=True;             //делаем видимой таблицу

StringGrid1.ColCount:= N+1; //количество строк в таблице

Stringgrid1.ColWidths[0]:=250; //изменяем ширину 2-го столбца

 Stringgrid1.Cells[0,1] := 'Год'; //подписываем строки

Stringgrid1.Cells[0,2] := 'Среднее время обслуживания вызова, мин';

for i:=1 to N do

         StringGrid1.Cells [i,0]:= IntToStr(i);

end;

// процедура кнопки «Расчет»

procedure TForm1.Button2Click(Sender: TObject);

var Year: array [1..20] of integer; //массив для хранения значений лет

TimeO : array [1..20] of real;      //массив для хранения значений времени

PrOtn, Max, Min : real;

i, Nmax, Nmin : integer;

begin

//вводим массивы из таблицы

 for i:= 1 to N do

 begin

Year[i]:=StrToInt(StringGrid1.Cells [i,1]) ;

TimeO[i]:=StrToFloat(StringGrid1.Cells [i,2]) ;

 end;

//изменяем количество строк таблицы для вывода прироста

//и подписываем строку

 StringGrid1.RowCount :=4;

 Stringgrid1.Cells[0,3] := 'Относительный прирост к пред. году';

//вычисляем прирост и выводим в таблицу

 for i:= 2 to N do

 begin

PrOtn:=(TimeO[i]-TimeO[i-1])/TimeO[i-1]*100 ;

StringGrid1.Cells [i,3]:= FormatFloat('0.00',PrOtn)+ ' %' ;

 end;

//определяем максимальное и минимальное время

 Max:= TimeO[1]; Min:= TimeO[1];

//и номера элементов с максимальным и минимальным значениями

 Nmax:=1;        Nmin:=1;

 for i:= 2 to N do

 if Max< TimeO[i] then

Begin

Max:= TimeO[i]; Nmax:=i;

end

else

if Min> TimeO[i] then

  Begin

     Min:= TimeO[i]; Nmin:=i;

end;

//выводим максимальное время и год с номером Nmax

Edit2.Text:= FloatToStr(Max);

Edit3.Text:= IntToStr(Year[Nmax]);

//выводим минимальное время и год с номером Nmin

Edit4.Text:= FloatToStr(Min);

Edit5.Text:= IntToStr(Year[Nmin]);

//очищаем серию

Series1.Clear ;

//делаем видимым график

Chart1.Visible:= True;

for i:= 1 to N do

series1.AddXY(Year[i], TimeO[i]) ; //добавляем на график точку (столбик)

end;

end.

Рисунок 4. Результаты работы программы

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

function Add(const AValue:Double; Const ALabel:String; AColor:TColor): LongInt

где AValue – значение, добавляемое к диаграмме.

ALabel - надпись значения

AColor - цвет, используемый при выводе.

В программе следует написать следующий цикл

for i:= 1 to N do

Series1.Add(TimeO[i], floattostr(Year[i]), RGB(random(256), random(256), random(256)));

 

Рекомендуется выполнить двойной щелчок по области построения круговой диаграммы и на вкладке Series настроить дополнительные характеристики отображения серии:

· на вкладке Format можно включить опцию Circled Pie, которая обеспечит при любом размере компонента Chart отображение диаграммы в виде круга;

· на вкладке Marks (рис.5) переключатели в группе Style определяют, что будет написано на выносных линия, относящихся к отдельным сегментам диаграммы: Value — значение, Percent — проценты, Label — названия данных и т.д.

Рисунок 5. Настройка характеристик отображения круговой диаграммы

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.