TAChart: Complete localization

git-svn-id: trunk@50758 -
This commit is contained in:
wp 2015-12-12 21:39:31 +00:00
parent 547f7b7309
commit 14381c96ad
14 changed files with 410 additions and 71 deletions

View File

@ -118,7 +118,7 @@ var
i: Integer; i: Integer;
begin begin
for i := 0 to SeriesClassRegistry.Count - 1 do for i := 0 to SeriesClassRegistry.Count - 1 do
AddSubcomponentClass(SeriesClassRegistry[i], i); AddSubcomponentClass(SeriesClassRegistry.GetCaption(i), i);
end; end;
function TSeriesEditorForm.GetChildrenList: TFPList; function TSeriesEditorForm.GetChildrenList: TFPList;
@ -129,7 +129,7 @@ end;
function TSeriesEditorForm.MakeSubcomponent( function TSeriesEditorForm.MakeSubcomponent(
AOwner: TComponent; ATag: Integer): TComponent; AOwner: TComponent; ATag: Integer): TComponent;
begin begin
Result := TSeriesClass(SeriesClassRegistry.Objects[ATag]).Create(AOwner); Result := TSeriesClass(SeriesClassRegistry.GetClass(ATag)).Create(AOwner);
end; end;
end. end.

View File

@ -113,7 +113,7 @@ var
i: Integer; i: Integer;
begin begin
for i := 0 to ToolsClassRegistry.Count - 1 do for i := 0 to ToolsClassRegistry.Count - 1 do
AddSubcomponentClass(ToolsClassRegistry[i], i); AddSubcomponentClass(ToolsClassRegistry.GetCaption(i), i);
end; end;
function TToolsEditorForm.GetChildrenList: TFPList; function TToolsEditorForm.GetChildrenList: TFPList;
@ -124,7 +124,7 @@ end;
function TToolsEditorForm.MakeSubcomponent( function TToolsEditorForm.MakeSubcomponent(
AOwner: TComponent; ATag: Integer): TComponent; AOwner: TComponent; ATag: Integer): TComponent;
begin begin
Result := TChartToolClass(ToolsClassRegistry.Objects[ATag]).Create(AOwner); Result := TChartToolClass(ToolsClassRegistry.GetClass(ATag)).Create(AOwner);
end; end;
end. end.

View File

@ -31,20 +31,92 @@ msgstr "Hinzuf."
#: tachartstrconsts.rsareaseries #: tachartstrconsts.rsareaseries
msgid "Area series" msgid "Area series"
msgstr "Flächen-Diagramm" msgstr "Fläche-Diagramm"
#: tachartstrconsts.rsautoscale
msgid "Auto scale"
msgstr "Auto-Skalierung"
#: tachartstrconsts.rsbarseries #: tachartstrconsts.rsbarseries
msgid "Bar series" msgid "Bar series"
msgstr "Säulen/Balken-Diagramm" msgstr "Säulen/Balken-Diagramm"
#: tachartstrconsts.rsboxandwhiskerseries
msgid "Box-and-whiskers series"
msgstr "Box-und-Whisker-Plot"
#: tachartstrconsts.rsbsplineseries
msgid "B-Spline series"
msgstr "B-Spline"
#: tachartstrconsts.rsbubbleseries
msgid "Bubble series"
msgstr "Blasen-Diagramm"
#: tachartstrconsts.rscolormapseries
msgid "Color map series"
msgstr "Farbkarten-Plot"
#: tachartstrconsts.rsconstantline
msgid "Constant line"
msgstr "Konstante Linie"
#: tachartstrconsts.rscubicsplineseries
msgid "Cubic spline series"
msgstr "Kubischer Spline"
#: tachartstrconsts.rscumulativenormaldistribution
msgid "Cumulative normal distribution"
msgstr "Kumulative Normalverteilung"
#: tachartstrconsts.rsdatapointclick
msgid "Data point click"
msgstr "Klick auf Datenpunkt"
#: tachartstrconsts.rsdatapointcrosshair
msgid "Data point crosshair"
msgstr "Fadenkreuz für Datenpunkte"
#: tachartstrconsts.rsdatapointdrag
msgid "Data point drag"
msgstr "Datenpunkt verschieben"
#: tachartstrconsts.rsdatapointhint
msgid "Data point hint"
msgstr "Datenpunkt-Hinweis"
#: tachartstrconsts.rsdelete #: tachartstrconsts.rsdelete
msgid "Delete" msgid "Delete"
msgstr "Entf." msgstr "Entf."
#: tachartstrconsts.rsdistancemeasurement
msgid "Distance measurement"
msgstr "Distanzmessung"
#: tachartstrconsts.rsfunctionseries
msgid "Function series"
msgstr "Funktions-Diagramm"
#: tachartstrconsts.rsleastsquaresfitseries
msgid "Least-squares fit series"
msgstr "Fit"
#: tachartstrconsts.rslinear
msgid "Linear"
msgstr "Linear"
#: tachartstrconsts.rslineseries #: tachartstrconsts.rslineseries
msgid "Line series" msgid "Line series"
msgstr "Linien-Diagramm" msgstr "Linien-Diagramm"
#: tachartstrconsts.rslogarithmic
msgid "Logarithmic"
msgstr "Logarithmisch"
#: tachartstrconsts.rsmanhattanplotseries
msgid "Manhattan plot series"
msgstr "Manhatten-Plot"
#: tachartstrconsts.rsmovedown #: tachartstrconsts.rsmovedown
msgid "Down" msgid "Down"
msgstr "Ab" msgstr "Ab"
@ -53,10 +125,59 @@ msgstr "Ab"
msgid "Up" msgid "Up"
msgstr "Auf" msgstr "Auf"
#: tachartstrconsts.rsopenhighlowcloseseries
msgid "Open-high-low-close series"
msgstr "Öffnung-Höchst-Tiefst-Geschlossen"
#: tachartstrconsts.rspanningbyclick
msgid "Panning by click"
msgstr "Verschieben durch Klicken"
#: tachartstrconsts.rspanningbydrag
msgid "Panning by drag"
msgstr "Verschieben durch Ziehen"
#: tachartstrconsts.rspanningbymousewheel
msgid "Panning by mouse wheel"
msgstr "Verschieben mit Mausrad"
#: tachartstrconsts.rsparametriccurveseries
msgid "Parametric curve series"
msgstr "Parametrische Kurve"
#: tachartstrconsts.rspieseries #: tachartstrconsts.rspieseries
msgid "Pie series" msgid "Pie series"
msgstr "Torten-Diagramm" msgstr "Torten-Diagramm"
#: tachartstrconsts.rspolarseries
msgid "Polar series"
msgstr "Polar-Diagramm"
#: tachartstrconsts.rsreticule
msgid "Reticule"
msgstr "Fadenkreuz"
#: tachartstrconsts.rsuserdefined
msgctxt "tachartstrconsts.rsuserdefined"
msgid "User-defined"
msgstr "Benutzerdefiniert"
#: tachartstrconsts.rsuserdrawnseries
msgid "User-drawn series"
msgstr "Benutzer-definiertes Diagramm"
#: tachartstrconsts.rszoombyclick
msgid "Zoom by click"
msgstr "Zoomen durch Klicken"
#: tachartstrconsts.rszoombydrag
msgid "Zoom by drag"
msgstr "Zommen durch Ziehen"
#: tachartstrconsts.rszoombymousewheel
msgid "Zoom by mouse-wheel"
msgstr "Zoomen mit Mausrad"
#: tachartstrconsts.sesserieseditortitle #: tachartstrconsts.sesserieseditortitle
msgid "Edit series" msgid "Edit series"
msgstr "Datenreihe bearbeiten" msgstr "Datenreihe bearbeiten"

View File

@ -21,18 +21,90 @@ msgstr ""
msgid "Area series" msgid "Area series"
msgstr "" msgstr ""
#: tachartstrconsts.rsautoscale
msgid "Auto scale"
msgstr ""
#: tachartstrconsts.rsbarseries #: tachartstrconsts.rsbarseries
msgid "Bar series" msgid "Bar series"
msgstr "" msgstr ""
#: tachartstrconsts.rsboxandwhiskerseries
msgid "Box-and-whiskers series"
msgstr ""
#: tachartstrconsts.rsbsplineseries
msgid "B-Spline series"
msgstr ""
#: tachartstrconsts.rsbubbleseries
msgid "Bubble series"
msgstr ""
#: tachartstrconsts.rscolormapseries
msgid "Color map series"
msgstr ""
#: tachartstrconsts.rsconstantline
msgid "Constant line"
msgstr ""
#: tachartstrconsts.rscubicsplineseries
msgid "Cubic spline series"
msgstr ""
#: tachartstrconsts.rscumulativenormaldistribution
msgid "Cumulative normal distribution"
msgstr ""
#: tachartstrconsts.rsdatapointclick
msgid "Data point click"
msgstr ""
#: tachartstrconsts.rsdatapointcrosshair
msgid "Data point crosshair"
msgstr ""
#: tachartstrconsts.rsdatapointdrag
msgid "Data point drag"
msgstr ""
#: tachartstrconsts.rsdatapointhint
msgid "Data point hint"
msgstr ""
#: tachartstrconsts.rsdelete #: tachartstrconsts.rsdelete
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: tachartstrconsts.rsdistancemeasurement
msgid "Distance measurement"
msgstr ""
#: tachartstrconsts.rsfunctionseries
msgid "Function series"
msgstr ""
#: tachartstrconsts.rsleastsquaresfitseries
msgid "Least-squares fit series"
msgstr ""
#: tachartstrconsts.rslinear
msgid "Linear"
msgstr ""
#: tachartstrconsts.rslineseries #: tachartstrconsts.rslineseries
msgid "Line series" msgid "Line series"
msgstr "" msgstr ""
#: tachartstrconsts.rslogarithmic
msgid "Logarithmic"
msgstr ""
#: tachartstrconsts.rsmanhattanplotseries
msgid "Manhattan plot series"
msgstr ""
#: tachartstrconsts.rsmovedown #: tachartstrconsts.rsmovedown
msgid "Down" msgid "Down"
msgstr "" msgstr ""
@ -41,10 +113,59 @@ msgstr ""
msgid "Up" msgid "Up"
msgstr "" msgstr ""
#: tachartstrconsts.rsopenhighlowcloseseries
msgid "Open-high-low-close series"
msgstr ""
#: tachartstrconsts.rspanningbyclick
msgid "Panning by click"
msgstr ""
#: tachartstrconsts.rspanningbydrag
msgid "Panning by drag"
msgstr ""
#: tachartstrconsts.rspanningbymousewheel
msgid "Panning by mouse wheel"
msgstr ""
#: tachartstrconsts.rsparametriccurveseries
msgid "Parametric curve series"
msgstr ""
#: tachartstrconsts.rspieseries #: tachartstrconsts.rspieseries
msgid "Pie series" msgid "Pie series"
msgstr "" msgstr ""
#: tachartstrconsts.rspolarseries
msgid "Polar series"
msgstr ""
#: tachartstrconsts.rsreticule
msgid "Reticule"
msgstr ""
#: tachartstrconsts.rsuserdefined
msgctxt "tachartstrconsts.rsuserdefined"
msgid "User-defined"
msgstr ""
#: tachartstrconsts.rsuserdrawnseries
msgid "User-drawn series"
msgstr ""
#: tachartstrconsts.rszoombyclick
msgid "Zoom by click"
msgstr ""
#: tachartstrconsts.rszoombydrag
msgid "Zoom by drag"
msgstr ""
#: tachartstrconsts.rszoombymousewheel
msgid "Zoom by mouse-wheel"
msgstr ""
#: tachartstrconsts.sesserieseditortitle #: tachartstrconsts.sesserieseditortitle
msgid "Edit series" msgid "Edit series"
msgstr "" msgstr ""

View File

@ -8,8 +8,21 @@ resourcestring
// Series types // Series types
rsAreaSeries = 'Area series'; rsAreaSeries = 'Area series';
rsBarSeries = 'Bar series'; rsBarSeries = 'Bar series';
rsBoxAndWhiskerSeries = 'Box-and-whiskers series';
rsBubbleSeries = 'Bubble series';
rsBSplineSeries = 'B-Spline series';
rsColorMapSeries = 'Color map series';
rsConstantLine = 'Constant line';
rsCubicSplineSeries = 'Cubic spline series';
rsFunctionSeries = 'Function series';
rsLeastSquaresFitSeries = 'Least-squares fit series';
rsLineSeries = 'Line series'; rsLineSeries = 'Line series';
rsManhattanPlotSeries = 'Manhattan plot series';
rsOpenHighLowCloseSeries = 'Open-high-low-close series';
rsParametricCurveSeries = 'Parametric curve series';
rsPieSeries = 'Pie series'; rsPieSeries = 'Pie series';
rsPolarSeries = 'Polar series';
rsUserDrawnSeries = 'User-drawn series';
// Series editor // Series editor
sesSeriesEditorTitle = 'Edit series'; sesSeriesEditorTitle = 'Edit series';
@ -28,14 +41,31 @@ resourcestring
// Tool editor // Tool editor
tasToolsEditorTitle = 'Edit tools'; tasToolsEditorTitle = 'Edit tools';
rsZoomByDrag = 'Zoom by drag';
rsZoomByClick = 'Zoom by click';
rsZoomByMousewheel = 'Zoom by mouse-wheel';
rsPanningByDrag = 'Panning by drag';
rsPanningByClick = 'Panning by click';
rsPanningByMousewheel = 'Panning by mouse wheel';
rsReticule = 'Reticule';
rsDataPointClick = 'Data point click';
rsDataPointDrag = 'Data point drag';
rsDataPointHint = 'Data point hint';
rsDataPointCrossHair = 'Data point crosshair';
rsUserDefined = 'User-defined';
rsDistanceMeasurement = 'Distance measurement';
// Transformations // Transformations
tasAxisTransformsEditorTitle = 'Edit axis transformations'; tasAxisTransformsEditorTitle = 'Edit axis transformations';
rsAutoScale = 'Auto scale';
rsCumulativeNormalDistribution = 'Cumulative normal distribution';
rsLinear = 'Linear';
rsLogarithmic = 'Logarithmic';
// ChartUtils // ChartUtils
tasFailedSubcomponentRename = 'Failed to rename components: %s'; tasFailedSubcomponentRename = 'Failed to rename components: %s';
implementation implementation
end. end.

View File

@ -256,6 +256,23 @@ type
property Item[AIndex: Integer]: TElem read GetItem; default; property Item[AIndex: Integer]: TElem read GetItem; default;
end; end;
PStr = ^String; // PString is declared in system and in objpas!
TClassRegistryItem = class
FClass: TClass;
FCaption: PStr;
constructor Create(AClass: TClass; ACaption: PStr);
end;
TClassRegistry = class(TFPList)
public
destructor Destroy; override;
procedure Clear;
function GetCaption(AIndex: Integer): String;
function GetClass(AIndex: Integer): TClass;
function IndexOfClass(AClass: TClass): Integer;
end;
const const
PUB_INT_SET_ALL = ''; PUB_INT_SET_ALL = '';
PUB_INT_SET_EMPTY = '-'; PUB_INT_SET_EMPTY = '-';
@ -969,6 +986,55 @@ begin
end; end;
end; end;
{ TClassRegistryItem }
constructor TClassRegistryItem.Create(AClass: TClass; ACaption: PStr);
begin
FClass := AClass;
FCaption := ACaption;
end;
{ TClassRegistry }
destructor TClassRegistry.Destroy;
begin
Clear;
inherited;
end;
procedure TClassRegistry.Clear;
var
i: Integer;
begin
for i:= Count-1 downto 0 do
TObject(Items[i]).Free;
inherited;
end;
function TClassRegistry.GetCaption(AIndex: Integer): String;
var
P: PStr;
begin
P := TClassRegistryItem(Items[AIndex]).FCaption;
if P = nil then Result := '' else Result := P^;
end;
function TClassRegistry.GetClass(AIndex: Integer): TClass;
begin
Result := TClassRegistryItem(Items[AIndex]).FClass;
end;
function TClassRegistry.IndexOfClass(AClass: TClass): Integer;
begin
for Result := 0 to Count-1 do
if TClassRegistryItem(Items[Result]).FClass = AClass then
exit;
Result := -1;
end;
initialization initialization
DrawData := TDrawDataRegistry.Create; DrawData := TDrawDataRegistry.Create;

View File

@ -123,7 +123,7 @@ implementation
uses uses
GraphMath, Math, SysUtils, Types, GraphMath, Math, SysUtils, Types,
TAChartAxis, TACustomSeries, TAGeometry; TAChartStrConsts, TAChartAxis, TACustomSeries, TAGeometry;
const const
DEF_DISTANCE_FORMAT = '%0:.9g'; DEF_DISTANCE_FORMAT = '%0:.9g';
@ -407,7 +407,7 @@ end;
initialization initialization
RegisterChartToolClass(TDataPointDistanceTool, 'Distance measurement'); RegisterChartToolClass(TDataPointDistanceTool, @rsDistanceMeasurement);
end. end.

View File

@ -381,7 +381,7 @@ implementation
uses uses
ipf, GraphType, IntfGraphics, Math, StrUtils, SysUtils, ipf, GraphType, IntfGraphics, Math, StrUtils, SysUtils,
TAGeometry, TAGraph, TAMath; TAChartStrConsts, TAGeometry, TAGraph, TAMath;
const const
DEF_PARAM_MIN = 0.0; DEF_PARAM_MIN = 0.0;
@ -1940,12 +1940,12 @@ begin
end; end;
initialization initialization
RegisterSeriesClass(TFuncSeries, 'Function series'); RegisterSeriesClass(TFuncSeries, @rsFunctionSeries);
RegisterSeriesClass(TParametricCurveSeries, 'Parametric curve series'); RegisterSeriesClass(TParametricCurveSeries, @rsParametricCurveSeries);
RegisterSeriesClass(TBSplineSeries, 'B-Spline series'); RegisterSeriesClass(TBSplineSeries, @rsBSplineSeries);
RegisterSeriesClass(TCubicSplineSeries, 'Cubic spline series'); RegisterSeriesClass(TCubicSplineSeries, @rsCubicSplineSeries);
RegisterSeriesClass(TFitSeries, 'Least-squares fit series'); RegisterSeriesClass(TFitSeries, @rsLeastSquaresFitSeries);
RegisterSeriesClass(TColorMapSeries, 'Color map series'); RegisterSeriesClass(TColorMapSeries, @rsColorMapSeries);
end. end.

View File

@ -447,10 +447,10 @@ type
end; end;
procedure Register; procedure Register;
procedure RegisterSeriesClass(ASeriesClass: TSeriesClass; const ACaption: string); procedure RegisterSeriesClass(ASeriesClass: TSeriesClass; const ACaption: PStr);
var var
SeriesClassRegistry: TStringList; SeriesClassRegistry: TClassRegistry = nil;
OnInitBuiltinTools: function(AChart: TChart): TBasicChartToolset; OnInitBuiltinTools: function(AChart: TChart): TBasicChartToolset;
implementation implementation
@ -474,17 +474,17 @@ var
begin begin
RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChart]); RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChart]);
for i := 0 to SeriesClassRegistry.Count - 1 do begin for i := 0 to SeriesClassRegistry.Count - 1 do begin
sc := TSeriesClass(SeriesClassRegistry.Objects[i]); sc := TSeriesClass(SeriesClassRegistry.GetClass(i));
RegisterClass(sc); RegisterClass(sc);
RegisterNoIcon([sc]); RegisterNoIcon([sc]);
end; end;
end; end;
procedure RegisterSeriesClass( procedure RegisterSeriesClass(
ASeriesClass: TSeriesClass; const ACaption: String); ASeriesClass: TSeriesClass; const ACaption: PStr);
begin begin
if SeriesClassRegistry.IndexOfObject(TObject(ASeriesClass)) < 0 then if SeriesClassRegistry.IndexOfClass(ASeriesClass) < 0 then
SeriesClassRegistry.AddObject(ACaption, TObject(ASeriesClass)); SeriesClassRegistry.Add(TClassRegistryItem.Create(ASeriesClass, ACaption));
end; end;
procedure WriteComponentToStream(AStream: TStream; AComponent: TComponent); procedure WriteComponentToStream(AStream: TStream; AComponent: TComponent);
@ -987,7 +987,7 @@ begin
exit; exit;
end; end;
for i := 0 to SeriesClassRegistry.Count - 1 do begin for i := 0 to SeriesClassRegistry.Count - 1 do begin
AClass := TSeriesClass(SeriesClassRegistry.Objects[i]); AClass := TSeriesClass(SeriesClassRegistry.GetClass(i));
if AClass.ClassNameIs(AClassName) then exit; if AClass.ClassNameIs(AClassName) then exit;
end; end;
AClass := nil; AClass := nil;
@ -1896,7 +1896,7 @@ end;
initialization initialization
SkipObsoleteChartProperties; SkipObsoleteChartProperties;
SeriesClassRegistry := TStringList.Create; SeriesClassRegistry := TClassRegistry.Create;
ShowMessageProc := @ShowMessage; ShowMessageProc := @ShowMessage;
finalization finalization

View File

@ -189,7 +189,8 @@ type
implementation implementation
uses uses
FPCanvas, Math, SysUtils, TACustomSource, TAGeometry, TAGraph, TAMath; FPCanvas, Math, SysUtils,
TAChartStrConsts, TACustomSource, TAGeometry, TAGraph, TAMath;
type type
@ -939,8 +940,8 @@ end;
initialization initialization
RegisterSeriesClass(TBubbleSeries, 'Bubble series'); RegisterSeriesClass(TBubbleSeries, @rsBubbleSeries);
RegisterSeriesClass(TBoxAndWhiskerSeries, 'Box-and-whiskers series'); RegisterSeriesClass(TBoxAndWhiskerSeries, @rsBoxAndWhiskerSeries);
RegisterSeriesClass(TOpenHighLowCloseSeries, 'Open-high-low-close series'); RegisterSeriesClass(TOpenHighLowCloseSeries, @rsOpenHighLowCloseSeries);
end. end.

View File

@ -146,7 +146,7 @@ implementation
uses uses
Math, Math,
TACustomSource, TAGeometry, TAGraph; TAChartStrConsts, TACustomSource, TAGeometry, TAGraph;
{ TPieSlice } { TPieSlice }
@ -673,7 +673,7 @@ end;
initialization initialization
RegisterSeriesClass(TPolarSeries, 'Polar series'); RegisterSeriesClass(TPolarSeries, @rsPolarSeries);
end. end.

View File

@ -344,7 +344,7 @@ implementation
uses uses
GraphMath, GraphType, IntfGraphics, LResources, Math, PropEdits, SysUtils, GraphMath, GraphType, IntfGraphics, LResources, Math, PropEdits, SysUtils,
TADrawerCanvas, TAGeometry, TAGraph, TAMath, TAStyles; TAChartStrConsts, TADrawerCanvas, TAGeometry, TAGraph, TAMath, TAStyles;
{ TLineSeries } { TLineSeries }
@ -1496,14 +1496,14 @@ begin
end; end;
initialization initialization
RegisterSeriesClass(TLineSeries, 'Line series'); RegisterSeriesClass(TLineSeries, @rsLineSeries);
RegisterSeriesClass(TAreaSeries, 'Area series'); RegisterSeriesClass(TAreaSeries, @rsAreaSeries);
RegisterSeriesClass(TBarSeries, 'Bar series'); RegisterSeriesClass(TBarSeries, @rsBarSeries);
RegisterSeriesClass(TPieSeries, 'Pie series'); RegisterSeriesClass(TPieSeries, @rsPieSeries);
RegisterSeriesClass(TUserDrawnSeries, 'User-drawn series'); RegisterSeriesClass(TUserDrawnSeries, @rsUserDrawnSeries);
RegisterSeriesClass(TConstantLine, 'Constant line'); RegisterSeriesClass(TConstantLine, @rsConstantLine);
RegisterSeriesClass(TManhattanSeries, 'Manhattan plot series'); RegisterSeriesClass(TManhattanSeries, @rsManhattanPlotSeries);
{$WARNINGS OFF}RegisterSeriesClass(TLine, '');{$WARNINGS ON} // {$WARNINGS OFF}RegisterSeriesClass(TLine, nil);{$WARNINGS ON}
SkipObsoleteProperties; SkipObsoleteProperties;
end. end.

View File

@ -573,17 +573,16 @@ type
end; end;
procedure Register; procedure Register;
procedure RegisterChartToolClass( procedure RegisterChartToolClass(AToolClass: TChartToolClass; ACaption: PStr);
AToolClass: TChartToolClass; const ACaption: String);
var var
ToolsClassRegistry: TStringList; ToolsClassRegistry: TClassRegistry;
implementation implementation
uses uses
GraphMath, InterfaceBase, LCLType, LCLIntf, Math, SysUtils, GraphMath, InterfaceBase, LCLType, LCLIntf, Math, SysUtils,
TACustomSeries, TAEnumerators, TAGeometry, TAMath; TAChartStrConsts, TACustomSeries, TAEnumerators, TAGeometry, TAMath;
function InitBuiltinTools(AChart: TChart): TBasicChartToolset; function InitBuiltinTools(AChart: TChart): TBasicChartToolset;
var var
@ -607,15 +606,15 @@ var
i: Integer; i: Integer;
begin begin
for i := 0 to ToolsClassRegistry.Count - 1 do for i := 0 to ToolsClassRegistry.Count - 1 do
RegisterNoIcon([TChartToolClass(ToolsClassRegistry.Objects[i])]); RegisterNoIcon([TChartToolClass(ToolsClassRegistry.GetClass(i))]);
RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChartToolset]); RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChartToolset]);
end; end;
procedure RegisterChartToolClass( procedure RegisterChartToolClass(AToolClass: TChartToolClass; ACaption: PStr);
AToolClass: TChartToolClass; const ACaption: String);
begin begin
RegisterClass(AToolClass); RegisterClass(AToolClass);
ToolsClassRegistry.AddObject(ACaption, TObject(AToolClass)); if ToolsClassRegistry.IndexOfClass(AToolClass) < 0 then
ToolsClassRegistry.Add(TClassRegistryItem.Create(AToolClass, ACaption));
end; end;
{ TDataPointTool.TPointRef } { TDataPointTool.TPointRef }
@ -1962,20 +1961,20 @@ end;
initialization initialization
ToolsClassRegistry := TStringList.Create; ToolsClassRegistry := TClassRegistry.Create;
OnInitBuiltinTools := @InitBuiltinTools; OnInitBuiltinTools := @InitBuiltinTools;
RegisterChartToolClass(TZoomDragTool, 'Zoom by drag'); RegisterChartToolClass(TZoomDragTool, @rsZoomByDrag);
RegisterChartToolClass(TZoomClickTool, 'Zoom by click'); RegisterChartToolClass(TZoomClickTool, @rsZoomByClick);
RegisterChartToolClass(TZoomMouseWheelTool, 'Zoom by mouse wheel'); RegisterChartToolClass(TZoomMouseWheelTool, @rsZoomByMouseWheel);
RegisterChartToolClass(TPanDragTool, 'Panning by drag'); RegisterChartToolClass(TPanDragTool, @rsPanningByDrag);
RegisterChartToolClass(TPanClickTool, 'Panning by click'); RegisterChartToolClass(TPanClickTool, @rsPanningbyClick);
RegisterChartToolClass(TPanMouseWheelTool, 'Panning by mouse wheel'); RegisterChartToolClass(TPanMouseWheelTool, @rsPanningByMouseWheel);
RegisterChartToolClass(TReticuleTool, 'Reticule'); // RegisterChartToolClass(TReticuleTool, @rsReticule);
RegisterChartToolClass(TDataPointClickTool, 'Data point click'); RegisterChartToolClass(TDataPointClickTool, @rsDataPointClick);
RegisterChartToolClass(TDataPointDragTool, 'Data point drag'); RegisterChartToolClass(TDataPointDragTool, @rsDataPointDrag);
RegisterChartToolClass(TDataPointHintTool, 'Data point hint'); RegisterChartToolClass(TDataPointHintTool, @rsDataPointHint);
RegisterChartToolClass(TDataPointCrosshairTool, 'Data point crosshair'); RegisterChartToolClass(TDataPointCrosshairTool, @rsDataPointCrosshair);
RegisterChartToolClass(TUserDefinedTool, 'User-defined'); RegisterChartToolClass(TUserDefinedTool, @rsUserDefined);
finalization finalization

View File

@ -238,7 +238,7 @@ type
end; end;
var var
AxisTransformsClassRegistry: TStringList; AxisTransformsClassRegistry: TClassRegistry;
procedure Register; procedure Register;
var var
@ -246,7 +246,7 @@ var
begin begin
with AxisTransformsClassRegistry do with AxisTransformsClassRegistry do
for i := 0 to Count - 1 do for i := 0 to Count - 1 do
RegisterNoIcon([TAxisTransformClass(Objects[i])]); RegisterNoIcon([TAxisTransformClass(GetClass(i))]);
RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChartAxisTransformations]); RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChartAxisTransformations]);
RegisterPropertyEditor( RegisterPropertyEditor(
TypeInfo(TAxisTransformList), TChartAxisTransformations, TypeInfo(TAxisTransformList), TChartAxisTransformations,
@ -256,10 +256,11 @@ begin
end; end;
procedure RegisterAxisTransformClass( procedure RegisterAxisTransformClass(
AAxisTransformClass: TAxisTransformClass; const ACaption: String); AAxisTransformClass: TAxisTransformClass; const ACaption: PStr);
begin begin
RegisterClass(AAxisTransformClass); RegisterClass(AAxisTransformClass);
AxisTransformsClassRegistry.AddObject(ACaption, TObject(AAxisTransformClass)); if AxisTransformsClassRegistry.IndexOfClass(AAxisTransformClass) < 0 then
AxisTransformsClassRegistry.Add(TClassRegistryItem.Create(AAxisTransformClass, ACaption));
end; end;
{ TAxisTransformList } { TAxisTransformList }
@ -321,7 +322,7 @@ var
i: Integer; i: Integer;
begin begin
for i := 0 to AxisTransformsClassRegistry.Count - 1 do for i := 0 to AxisTransformsClassRegistry.Count - 1 do
AddSubcomponentClass(AxisTransformsClassRegistry[i], i); AddSubcomponentClass(AxisTransformsClassRegistry.GetCaption(i), i);
end; end;
function TAxisTransformsEditorForm.GetChildrenList: TFPList; function TAxisTransformsEditorForm.GetChildrenList: TFPList;
@ -333,7 +334,7 @@ function TAxisTransformsEditorForm.MakeSubcomponent(
AOwner: TComponent; ATag: Integer): TComponent; AOwner: TComponent; ATag: Integer): TComponent;
begin begin
with AxisTransformsClassRegistry do with AxisTransformsClassRegistry do
Result := TAxisTransformClass(Objects[ATag]).Create(AOwner); Result := TAxisTransformClass(GetClass(ATag)).Create(AOwner);
end; end;
{ TAxisTransform } { TAxisTransform }
@ -788,13 +789,13 @@ end;
initialization initialization
AxisTransformsClassRegistry := TStringList.Create; AxisTransformsClassRegistry := TClassRegistry.Create;
RegisterAxisTransformClass(TAutoScaleAxisTransform, 'Auto scale'); RegisterAxisTransformClass(TAutoScaleAxisTransform, @rsAutoScale);
RegisterAxisTransformClass( RegisterAxisTransformClass(
TCumulNormDistrAxisTransform, 'Cumulative normal distribution'); TCumulNormDistrAxisTransform, @rsCumulativeNormalDistribution);
RegisterAxisTransformClass(TLinearAxisTransform, 'Linear'); RegisterAxisTransformClass(TLinearAxisTransform, @rsLinear);
RegisterAxisTransformClass(TLogarithmAxisTransform, 'Logarithmic'); RegisterAxisTransformClass(TLogarithmAxisTransform, @rsLogarithmic);
RegisterAxisTransformClass(TUserDefinedAxisTransform, 'User defined'); RegisterAxisTransformClass(TUserDefinedAxisTransform, @rsUserDefined);
finalization finalization