Ниже приведен программный модуль построения и отображения графиков и диаграмм с использованием компонента TChart.
unitUnProgrGraph;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, TeeProcs, TeEngine, Chart, Series;
Type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Button1: TButton;
Button2: TButton;
BitBtn1: TBitBtn;
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
Var
Form1: TForm1;
Xmin,Xmax,Ymin,Ymax,Hx,Hy,h:extended;
Implementation
{$R *.dfm}
procedureTForm1.FormCreate(Sender: TObject);
Begin
{Установка начальных параметров координатных осей}
Xmin:=0.0;
Xmax:=2*pi;
Ymin:=-1;
Ymax:=2;
Hx:=pi/2;
Hy:=0.5;
h:=0.01;
{Вывод данных в окно однострочных редакторов}
Edit1.Text:=FloatToStr(Xmin);
Edit1.Text:=FloatToStr(Xmax);
Edit1.Text:=FloatToStr(Ymin);
Edit1.Text:=FloatToStr(Ymax);
Edit1.Text:=FloatToStr(Hx);
Edit1.Text:=FloatToStr(Hy);
Edit1.Text:=FloatToStr(h);
Chart1.BottomAxis.Automatic:=False; //Отключение автоматического
//определения параметров нижней оси
Chart1.BottomAxis.Minimum:=Xmin; // Установка левой границы нижней оси
Chart1.BottomAxis.Maximum:=Xmax; // Установка правой границы нижней
//оси
Chart1.LeftAxis.Automatic:= False; //Отключение автоматического
//определения параметров левой оси
Chart1.LeftAxis.Minimum:= Ymin; // Установка нижней границы левой оси
Chart1.LeftAxis.Maximum:= Ymax; // Установка верхней границы левой оси
Chart1.BottomAxis.Increment:=Hx; // Установка шага разбивки по нижней
//оси
Chart1.LeftAxis.Increment:= Hy; // Установка шага разбивки по левой оси
end;
procedureTForm1.Button1Click(Sender: TObject);
Begin
{Чтение данных из окон однострочных редакторов}
Xmin:=StrToFloat(Edit1.Text);
Xmax:=StrToFloat(Edit1.Text);
Xmin:=StrToFloat(Edit1.Text);
Xmax:=StrToFloat(Edit1.Text);
Hx:=StrToFloat(Edit1.Text);
Hy:=StrToFloat(Edit1.Text);
Chart1.BottomAxis.Minimum:=Xmin; // Установка левой границы нижней оси
Chart1.BottomAxis.Maximum:=Xmax; // Установка правой границы нижней оси
Chart1.LeftAxis.Minimum:= Ymin; // Установка нижней границы левой оси
Chart1.LeftAxis.Maximum:= Ymax; // Установка верхней границы левой оси
Chart1.BottomAxis.Increment:=Hx; // Установка шага разбивки по нижней
//оси
Chart1.LeftAxis.Increment:= Hy; // Установка шага разбивки по левой оси
end;
procedure TForm1.Button2Click(Sender: TObject);
varx,y1,y2:extended;
a,b,fx:extended;
k1,k2:extended;
Begin
{Очистка графиков}
Series1.Clear;
Series2.Clear;
Series3.Clear;
Xmin:=StrToFloat(Edit1.Text);
Xmax:=StrToFloat(Edit2.Text);
h:=StrToFloat(Edit7.Text);
x:=Xmin;
{Варианты значений коэффициентов задаются преподавателем}
a:=1.25; b:=1.25;
k1:=0.01; k2:=0.001;
Repeat
fx:=sin(x); // Расчет функции 1
if x<2.3 then y1:=(a+b)/(4+sqr(cos(x)))
else if (x>=2.3) and (x<5) then y1:=(a+b)/(x+1)
elsey1:=k1*exp(x)+fx;
Series1.AddXY(x,y1,'',clTeeColor); // Вывод точки на график
y2:=cos(x); // Расчет функции cos(x)
Series2.AddXY(x,y2,'',clTeeColor); // Вывод точки на график
fx:=cos(x); // Расчет функции 2
ifx<2.3 then y2:=(a+b)/(4+sqr(cos(x)));
if (x>=2.3) and (x<5) then y2:=(a+b)/(x+1);
if x>=5 then y2:=k2*exp(x)+fx;
Series3.AddXY(x,y2,'',clTeeColor); // Вывод точки на график
x:=x+h; // Увеличение x на величину h
until(x>Xmax);
end;
end.