Пример 5. Параметры отображения кривых с помощью компонента Chart

 

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

 

Поместите компонент Chart на форму и запустите редактор диаграмм. Создайте восемь кривых следующих типов:

-        Line – 2 серии;

-        Bar – 2 серии;

-        Area – 2 серии.

-        Point – 2 серии;

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

 

Перейдите к вкладке Legend и снимите флажок с пункта Visible. Перейдите к вкладке Titles и в текстовом поле наберите следующее: «Графики Exp(x) и 0,5*Exp(x)».

На вкладке Panels установите флажок около пункта Visible для того, чтобы разрешить градиентную заливку заднему фону графика. Измените цвета градиента.

На вкладке Walls измените цвет левой стенки графика. На вкладке 3D установите величину 3D равной 5%.

 

В редакторе диаграмм перейдите к вкладке Series, в раскрывающемся списке выберите пункт «Series3» (тип Bar), затем откройте вкладку Marks и снимите флажок с пункта Visible. Проделайте то же самое с Series4. Если серии типа Bar у вас имеют другие имена, то нужно менять их свойства. Данное действие запрещает показывать на графике значения функций в каждой точке.

 

Вид приложения на этапе разработки с размещёнными на форме компонентами

 

 

Введём две переменные N и M типа integer. С помощью них будем обращаться к номеру серии компонента Chart1, благодаря чему можно будет отображать линии на сериях и очищать содержимое серий. Переменная N будет хранить в себе номер серии, на которой нужно отобразить линию, а переменная M будет запоминать номер серии, на которой был показан график до нажатия кнопки, т.е. содержимое серии с номером M должно быть очищено после нажатия кнопки.

 

Для отображения линии напишем процедуру (в данном случае она названа Grafik), которая будет очищать содержимое серий и отображать линии на них. Поскольку необходимо отображать сразу по две серии одинакового типа, и лишь одна переменная хранит номер серии, то при построении линий будем обращаться к серии с номером N и к серии с номером N+1, так как серии попарно имеют одинаковый тип. Но следует отметить, что нумерация серий начинается не с 1, а с 0, поэтому N может принимать значения 0, 2, 4, 6. Если задать N нечётным, то графики будут отображаться на сериях разных типов, т.е. мы допустим ошибку.

 

При написании процедуры, обрабатывающей щелчок по кнопке сначала задаём значение N, затем вызываем процедуру Grafik, и лишь потом меняем значение переменной M.

 

Вид приложения во время его выполнения

 

 

Текст файла Unit1.pas

 

unit Unit1;

 

interface

 

uses

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

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

 

type

    TForm1 = class(TForm)

    Chart1: TChart;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    Series1: TLineSeries;

    Series2: TLineSeries;

    Series3: TBarSeries;

    Series4: TBarSeries;

    Series5: TPointSeries;

    Series6: TPointSeries;

    Series7: TAreaSeries;

    Series8: TAreaSeries;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

  N,M:integer;

implementation

 

{$R *.dfm}

 

procedure Grafik(N,M:integer);

 

var

 x: real; i:integer;

begin

  begin

  Form1.Chart1.Series[M].Clear;

  Form1.Chart1.Series[M+1].Clear;

  x:=0;

  for i:=0 to 18 do  begin

  Form1.Chart1.Series[N].AddXY(x, exp(x), '', clBlue);

  Form1.Chart1.Series[N+1].AddXY(x, exp(x)/2, '', clRed);

  x:=x+0.2;

  end;

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

N:=0;Grafik(N,M); M:=0;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

N:=2;Grafik(N,M); M:=2;

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

N:=4;Grafik(N,M); M:=4;

end;

 

procedure TForm1.Button4Click(Sender: TObject);

begin

N:=6;Grafik(N,M);M:=6;

end;

 

end.