Советы по Delphi

Использование 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.

[001149]



Содержание раздела