📄 frxcharthelpers.pas
字号:
{******************************************}
{ }
{ FastReport v4.0 }
{ TeeChart series helpers }
{ }
{ Copyright (c) 1998-2008 }
{ by Alexander Tzyganenko, }
{ Fast Reports Inc. }
{ }
{******************************************}
unit frxChartHelpers;
interface
{$I frx.inc}
{$I tee.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Menus, Controls, frxChart,
TeeProcs, TeEngine, Chart, Series, TeCanvas, GanttCh, TeeShape,
BubbleCh, ArrowCha
{$IFDEF TeeChartPro}
, TeePolar,
{$IFNDEF TeeChart4}
TeeSmith, TeePyramid, TeeDonut, TeeFunnel, TeeBoxPlot, TeeTriSurface,{$ENDIF}
TeeBezie, OHLChart, CandleCh, StatChar, ErrorBar,
TeeSurfa, TeePoin3, MyPoint, Bar3D
{$IFDEF TeeChart7}
, TeeGauges, TeePointFigure
{$ENDIF}
{$ENDIF}
{$IFDEF Delphi6}
, Variants
{$ENDIF};
type
TfrxSeriesHelper = class(TObject)
public
function GetParamNames: String; virtual; abstract;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); virtual; abstract;
end;
TfrxStdSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxPieSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxGanttSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxArrowSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxBubbleSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
{$IFDEF TeeChartPro}
TfrxPolarSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxGaugeSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxSmithSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxCandleSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxErrorSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxHiLoSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxFunnelSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxSurfaceSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxVector3DSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxBubble3DSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
TfrxBar3DSeriesHelper = class(TfrxSeriesHelper)
public
function GetParamNames: String; override;
procedure AddValues(Series: TChartSeries; const v1, v2, v3, v4, v5, v6: String;
XType: TfrxSeriesXType); override;
end;
{$ENDIF}
TfrxSeriesHelperClass = class of TfrxSeriesHelper;
const
{$IFDEF TeeChartPro}
frxNumSeries = 44;
{$ELSE}
frxNumSeries = 11;
{$ENDIF}
frxChartSeries: array[0..frxNumSeries - 1] of TSeriesClass =
(TLineSeries, TAreaSeries, TPointSeries,
TBarSeries, THorizBarSeries, TPieSeries,
TGanttSeries, TFastLineSeries, TArrowSeries,
TBubbleSeries, TChartShape
{$IFDEF TeeChartPro}
, {$IFDEF TeeChart7}THorizAreaSeries{$ELSE}nil{$ENDIF}, {$IFNDEF TeeChart4}THorizLineSeries{$ELSE}nil{$ENDIF}, TPolarSeries,
TRadarSeries, {$IFDEF TeeChart7}TPolarBarSeries{$ELSE}nil{$ENDIF}, {$IFDEF TeeChart7}TGaugeSeries{$ELSE}nil{$ENDIF},
{$IFNDEF TeeChart4}TSmithSeries, TPyramidSeries, TDonutSeries{$ELSE}nil, nil, nil{$ENDIF},
TBezierSeries, TCandleSeries, TVolumeSeries,
{$IFDEF TeeChart7}TPointFigureSeries{$ELSE}nil{$ENDIF}, {$IFNDEF TeeChart4}THistogramSeries{$ELSE}nil{$ENDIF}, {$IFDEF TeeChart7}THorizHistogramSeries{$ELSE}nil{$ENDIF},
TErrorBarSeries, TErrorSeries, {$IFNDEF TeeChart4}THighLowSeries{$ELSE}nil{$ENDIF},
{$IFNDEF TeeChart4}TFunnelSeries, TBoxSeries, THorizBoxSeries{$ELSE}nil, nil, nil{$ENDIF},
TSurfaceSeries, TContourSeries, {$IFNDEF TeeChart4}TWaterFallSeries,
TColorGridSeries{$ELSE}nil, nil{$ENDIF}, {$IFDEF TeeChart7}TVector3DSeries{$ELSE}nil{$ENDIF}, {$IFDEF TeeChart7}TTowerSeries{$ELSE}nil{$ENDIF},
{$IFNDEF TeeChart4}TTriSurfaceSeries{$ELSE}nil{$ENDIF}, TPoint3DSeries, {$IFDEF TeeChart7}TBubble3DSeries{$ELSE}nil{$ENDIF},
TMyPointSeries, {$IFNDEF TeeChart4}TBarJoinSeries{$ELSE}nil{$ENDIF}, TBar3DSeries
{$ENDIF}
);
frxSeriesHelpers: array[0..frxNumSeries - 1] of TfrxSeriesHelperClass =
(TfrxStdSeriesHelper, TfrxStdSeriesHelper, TfrxStdSeriesHelper,
TfrxStdSeriesHelper, TfrxStdSeriesHelper, TfrxPieSeriesHelper,
TfrxGanttSeriesHelper, TfrxStdSeriesHelper, TfrxArrowSeriesHelper,
TfrxBubbleSeriesHelper, TfrxStdSeriesHelper
{$IFDEF TeeChartPro}
, TfrxStdSeriesHelper, TfrxStdSeriesHelper, TfrxPolarSeriesHelper,
TfrxPolarSeriesHelper, TfrxPolarSeriesHelper, TfrxGaugeSeriesHelper,
TfrxSmithSeriesHelper, TfrxStdSeriesHelper, TfrxPieSeriesHelper,
TfrxStdSeriesHelper, TfrxCandleSeriesHelper, TfrxStdSeriesHelper,
TfrxCandleSeriesHelper, TfrxStdSeriesHelper, TfrxStdSeriesHelper,
TfrxErrorSeriesHelper, TfrxErrorSeriesHelper, TfrxHiLoSeriesHelper,
TfrxFunnelSeriesHelper, TfrxStdSeriesHelper, TfrxStdSeriesHelper,
TfrxSurfaceSeriesHelper, TfrxSurfaceSeriesHelper, TfrxSurfaceSeriesHelper,
TfrxSurfaceSeriesHelper, TfrxVector3DSeriesHelper, TfrxSurfaceSeriesHelper,
TfrxSurfaceSeriesHelper, TfrxSurfaceSeriesHelper, TfrxBubble3DSeriesHelper,
TfrxStdSeriesHelper, TfrxStdSeriesHelper, TfrxBar3DSeriesHelper
{$ENDIF}
);
function frxFindSeriesHelper(Series: TChartSeries): TfrxSeriesHelper;
implementation
uses frxDsgnIntf, frxUtils, frxRes;
function frxFindSeriesHelper(Series: TChartSeries): TfrxSeriesHelper;
var
i: Integer;
begin
Result := nil;
for i := 0 to frxNumSeries - 1 do
if Series.ClassType = frxChartSeries[i] then
begin
Result := TfrxSeriesHelper(frxSeriesHelpers[i].NewInstance);
Result.Create;
break;
end;
if Result = nil then
Result := TfrxStdSeriesHelper.Create;
end;
{ TfrxStdSeriesHelper }
procedure TfrxStdSeriesHelper.AddValues(Series: TChartSeries; const v1, v2,
v3, v4, v5, v6: String; XType: TfrxSeriesXType);
var
d: Double;
Color: TColor;
s: String;
begin
d := 0;
Color := clTeeColor;
if v4 <> '' then
try
Color := StringToColor(v4);
except
end;
if Series.YValues.DateTime then
d := StrToDateTime(v2)
else if frxIsValidFloat(v2) then
d := frxStrToFloat(v2);
if v3 <> '' then
s := v3
else
s := v1;
case XType of
xtText:
Series.Add(d, v1, Color);
xtNumber:
Series.AddXY(frxStrToFloat(s), d, v1, Color);
xtDate:
Series.AddXY(StrToDateTime(s), d, v1, Color);
end;
end;
function TfrxStdSeriesHelper.GetParamNames: String;
begin
Result := 'Label;Y;X (optional);Color (optional)';
end;
{ TfrxPieSeriesHelper }
procedure TfrxPieSeriesHelper.AddValues(Series: TChartSeries; const v1, v2,
v3, v4, v5, v6: String; XType: TfrxSeriesXType);
var
d: Double;
c: TColor;
begin
if Series.YValues.DateTime then
d := StrToDateTime(v2)
else
d := frxStrToFloat(v2);
c := clTeeColor;
if v3 <> '' then
try
c := StringToColor(v3);
except
end;
Series.Add(d, v1, c);
end;
function TfrxPieSeriesHelper.GetParamNames: String;
begin
Result := 'Label;Pie;Color (optional)';
end;
{ TfrxGanttSeriesHelper }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -