Использование ChartFX

Это код, который я использую для установки chartfx.

chart1.Opendata[cod_values]:=makelong(no_of_series,no_of_classes);

{установка последовательных значений}

chart1.closedata[cod_values]:=0;

unit TstChart;

interface

uses=20

WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Menus,
Dialogs, StdCtrls, Buttons, ExtCtrls, Tabs,
ChartFX, {Похоже, действительно необходимо включить этот модуль
в список, чтобы иметь доступ к константам, например к COD_VALUES}
VBXCtrl, Chart2fx;

type
TF_Chart =3D class(TForm)
SpeedPanel: TPanel;
ExitBtn: TSpeedButton;
NB: TNotebook;
TB: TTabSet;
Chart1: TChartFX;
Chart2: TChartFX;
procedure ExitItemClick(Sender: TObject);
procedure FormCreate(Sender: TObject);

procedure TBClick(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Procedure Build1( Ch : TChartFX );
Procedure Build2( Ch : TChartFX );
end;

var
F_Chart: TF_Chart;

implementation

{$R *.DFM}

procedure TF_Chart.ExitItemClick(Sender: TObject);
begin
Close;
end;

procedure TF_Chart.FormCreate(Sender: TObject);
begin
TB.Tabs :=3D NB.Pages;

NB.PageIndex :=3D 0;
Build1( Chart2 );
Build2( Chart2 ); {добавляем значения для Chart2: length... и т.д.}
end;

procedure TF_Chart.TBClick(Sender: TObject);
begin
NB.PageIndex :=3D TB.TabIndex;
end;

Procedure TF_Chart.Build1( Ch : TChartFX );
begin
{Эта процедура изменяет свойства, которые могут устанавливаться во время разработки или временя выполнения. В коментариях подробно указано чем занимается метод Design}

with Ch do begin

Adm[ CSA_GAP ] :=3D 25.0;

{Design:   Используйте свойство AdmDlg для изменения координаты Y}

pType :=3D BAR or CT_LEGEND;
{Design: Изменяем свойство ChartType с 1 - line
на 2 - bar.}

DecimalsNum[ CD_YLEG ] :=3D 0;
{Design: Изменяем свойство Decimals с 2 до 0}

Stacked :=3D CHART_STACKED;
{Design: Изменяем свойство Stacked с 0 - None на 1 - Normal}

RightGap :=3D 20;
{Design: Тоже}

OpenData[ COD_COLORS ] :=3D 2;

Color[ 0 ] :=3D clBlack;
Color[ 1 ] :=3D clYellow;
CloseData[ COD_COLORS ] :=3D 0; {Фу!!}
{Design: Для изменения цветов 2 серий:
1)  Убедитесь, что ThisSerie установлен в 0.  Измените
ThisColor на clBlack.
2)  Установите ThisSerie в 1.  Измените ThisColor на
clYellow.}

Title[ CHART_TOPTIT ] :=3D 'Статьи и заголовки';
Title[ CHART_LEFTTIT ] :=3D 'CCM';
Title[ CHART_BOTTOMTIT ] :=3D 'Карты';
{Design:  щелкните на свойстве TitleDlg и
установите верхний, левый и нижний заголовки}
end;
end;

Procedure TF_Chart.Build2( Ch : TChartFX );
{Данная процедура устанавливает свойства, которые не могут
(насколько я определил это) быть установлены в режиме разработки}
const
XAbbrevs : array[ 0..4 ] of string[ 4 ] =3D
( 'Acc', 'Bar', 'Mas', 'Amex', 'Din' );
SeriesTitles : array[ 0..1 ] of string[ 8 ] =3D
( 'Статьи', 'Заголовки' );
XTitles : array[ 0..4 ] of string[ 20 ] =3D

( 'Access', 'Barclaycard', 'Mastercard', 'American Express',
'Diners' );
{естественно, вы должны нормально читать из базы данных
xTitles и значения}
Values : array[ 0..1, 0..4 ] of double =3D
( ( 50, 60, 70, 80, 90 ),
( 30, 35, 25, 37, 42 ) );
var
i, SerieNo : integer;
begin
with Ch do begin

LegendWidth :=3D 120;

{Установка количества серий, количества значений ******************}
OpenData[ COD_INIVALUES ] :=3D MAKELONG( 2, 5 );

CloseData[ COD_INIVALUES ] :=3D 0;
{*********************************************************}

OpenData[ COD_VALUES ] :=3D 2;
{если вы пропускаете приведенное выше утверждение, (в котором вы вводите номер SERIES и VALUES), и CloseData ниже, назначение значений не создает ошибки, но и не работает! Назначение значений Legend и KeyLeg работает без OpenData/CloseData}
ThisSerie :=3D 0;
for i :=3D 0 to 1 do

SerLeg[ i ] :=3D SeriesTitles[ i ];
for i :=3D 0 to 4 do=20
begin
Legend[ i ] :=3D XTitles[ i ];
KeyLeg[ i ] :=3D XAbbrevs[ i ];
end;
SerieNo :=3D 0;
for SerieNo :=3D 0 to 1 do=20
begin
ThisSerie :=3D SerieNo;
for i :=3D 0 to 4 do
Value[ i ] :=3D Values[ SerieNo, i ];
end;

CloseData[ COD_VALUES ] :=3D 0;
end;
end;

procedure TF_Chart.FormResize(Sender: TObject);
var
w, h : longint;
begin
w :=3D NB.Width;
H :=3D NB.Height;
{при необходимости увеличиваем/уменьшаем размер диаграммы}
Chart1.Width :=3D W - 18;
Chart1.Height :=3D H - 12;
Chart2.Width :=3D W - 18;
Chart2.Height :=3D H - 12;

{перемещаем кнопку выхода в правый угол}
ExitBtn.Left :=3D SpeedPanel.Width - 32;
end;

end.

 
Следующая статья »