mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 08:59:13 +02:00
TAChart: Add axis index property editor
git-svn-id: trunk@38668 -
This commit is contained in:
parent
8594b7a678
commit
f297a8e800
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -2979,6 +2979,7 @@ components/tachart/demo/wmf/wmfdemo.lpr svneol=native#text/pascal
|
|||||||
components/tachart/editors/tadatapointseditor.lfm svneol=native#text/plain
|
components/tachart/editors/tadatapointseditor.lfm svneol=native#text/plain
|
||||||
components/tachart/editors/tadatapointseditor.pas svneol=native#text/pascal
|
components/tachart/editors/tadatapointseditor.pas svneol=native#text/pascal
|
||||||
components/tachart/editors/taserieseditor.pas svneol=native#text/plain
|
components/tachart/editors/taserieseditor.pas svneol=native#text/plain
|
||||||
|
components/tachart/editors/taseriespropeditors.pas svneol=native#text/pascal
|
||||||
components/tachart/editors/tasubcomponentseditor.lfm svneol=native#text/plain
|
components/tachart/editors/tasubcomponentseditor.lfm svneol=native#text/plain
|
||||||
components/tachart/editors/tasubcomponentseditor.pas svneol=native#text/pascal
|
components/tachart/editors/tasubcomponentseditor.pas svneol=native#text/pascal
|
||||||
components/tachart/editors/tatooleditors.pas svneol=native#text/pascal
|
components/tachart/editors/tatooleditors.pas svneol=native#text/pascal
|
||||||
|
78
components/tachart/editors/taseriespropeditors.pas
Normal file
78
components/tachart/editors/taseriespropeditors.pas
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
unit TASeriesPropEditors;
|
||||||
|
|
||||||
|
{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, Math, PropEdits, SysUtils, TACustomSeries, TAGraph;
|
||||||
|
|
||||||
|
type
|
||||||
|
TAxisIndexPropertyEditor = class(TOrdinalPropertyEditor)
|
||||||
|
public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
function OrdValueToVisualValue(AOrdValue: Longint): String; override;
|
||||||
|
procedure GetValues(AProc: TGetStrProc); override;
|
||||||
|
procedure SetValue(const ANewValue: String); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
begin
|
||||||
|
RegisterPropertyEditor(
|
||||||
|
TypeInfo(TChartAxisIndex), TCustomChartSeries, '', TAxisIndexPropertyEditor);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TAxisIndexPropertyEditor }
|
||||||
|
|
||||||
|
function TAxisIndexPropertyEditor.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := [paMultiSelect, paValueList, paRevertable];
|
||||||
|
if GetDefaultOrdValue <> NoDefaultValue then
|
||||||
|
Result := Result + [paHasDefaultValue];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAxisIndexPropertyEditor.GetValues(AProc: TGetStrProc);
|
||||||
|
var
|
||||||
|
s: TCustomChartSeries;
|
||||||
|
ch: TChart;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
s := GetComponent(0) as TCustomChartSeries;
|
||||||
|
ch := s.ParentChart;
|
||||||
|
AProc('-1 None');
|
||||||
|
for i := 0 to ch.AxisList.Count - 1 do
|
||||||
|
AProc(IntToStr(i) + ' ' + ch.AxisList[i].DisplayName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TAxisIndexPropertyEditor.OrdValueToVisualValue(
|
||||||
|
AOrdValue: Longint): String;
|
||||||
|
var
|
||||||
|
s: TCustomChartSeries;
|
||||||
|
ch: TChart;
|
||||||
|
begin
|
||||||
|
s := GetComponent(0) as TCustomChartSeries;
|
||||||
|
ch := s.ParentChart;
|
||||||
|
Result := IntToStr(AOrdValue) + ' ';
|
||||||
|
if InRange(AOrdValue, 0, ch.AxisList.Count - 1) then
|
||||||
|
Result += ch.AxisList[AOrdValue].DisplayName
|
||||||
|
else
|
||||||
|
Result += 'None';
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAxisIndexPropertyEditor.SetValue(const ANewValue: String);
|
||||||
|
var
|
||||||
|
v: Integer;
|
||||||
|
code: Word;
|
||||||
|
begin
|
||||||
|
Val(ANewValue, v, code);
|
||||||
|
if code > 0 then
|
||||||
|
Val(Copy(ANewValue, 1, code - 1), v, code);
|
||||||
|
SetOrdValue(Max(v, Low(TChartAxisIndex)));
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -160,6 +160,7 @@ type
|
|||||||
ADrawer: IChartDrawer; const ATransf: ICoordTransformer;
|
ADrawer: IChartDrawer; const ATransf: ICoordTransformer;
|
||||||
AClipRect: PRect; AMaxZPosition: Integer);
|
AClipRect: PRect; AMaxZPosition: Integer);
|
||||||
procedure UpdateBounds(var AMin, AMax: Double);
|
procedure UpdateBounds(var AMin, AMax: Double);
|
||||||
|
property DisplayName: String read GetDisplayName;
|
||||||
property Value[AIndex: Integer]: TChartValueText read GetValue;
|
property Value[AIndex: Integer]: TChartValueText read GetValue;
|
||||||
property ValueCount: Integer read GetValueCount;
|
property ValueCount: Integer read GetValueCount;
|
||||||
published
|
published
|
||||||
@ -538,7 +539,7 @@ begin
|
|||||||
Result := Collection.Owner as TCustomChart;
|
Result := Collection.Owner as TCustomChart;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TChartAxis.GetDisplayName: string;
|
function TChartAxis.GetDisplayName: String;
|
||||||
const
|
const
|
||||||
SIDE_NAME: array [TChartAxisAlignment] of String =
|
SIDE_NAME: array [TChartAxisAlignment] of String =
|
||||||
('Left', 'Top', 'Right', 'Bottom');
|
('Left', 'Top', 'Right', 'Bottom');
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
for details about the copyright.
|
for details about the copyright.
|
||||||
"/>
|
"/>
|
||||||
<Version Major="1"/>
|
<Version Major="1"/>
|
||||||
<Files Count="41">
|
<Files Count="42">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="tagraph.pas"/>
|
<Filename Value="tagraph.pas"/>
|
||||||
<HasRegisterProc Value="True"/>
|
<HasRegisterProc Value="True"/>
|
||||||
@ -217,6 +217,11 @@
|
|||||||
<Filename Value="taaxissource.pas"/>
|
<Filename Value="taaxissource.pas"/>
|
||||||
<UnitName Value="TAAxisSource"/>
|
<UnitName Value="TAAxisSource"/>
|
||||||
</Item41>
|
</Item41>
|
||||||
|
<Item42>
|
||||||
|
<Filename Value="editors\taseriespropeditors.pas"/>
|
||||||
|
<HasRegisterProc Value="True"/>
|
||||||
|
<UnitName Value="TASeriesPropEditors"/>
|
||||||
|
</Item42>
|
||||||
</Files>
|
</Files>
|
||||||
<LazDoc Paths="$(LazarusDir)\components\tachart\fpdoc"/>
|
<LazDoc Paths="$(LazarusDir)\components\tachart\fpdoc"/>
|
||||||
<Type Value="RunAndDesignTime"/>
|
<Type Value="RunAndDesignTime"/>
|
||||||
|
@ -14,7 +14,7 @@ uses
|
|||||||
TADrawerCanvas, TADrawerSVG, TAIntervalSources, TAChartAxisUtils,
|
TADrawerCanvas, TADrawerSVG, TAIntervalSources, TAChartAxisUtils,
|
||||||
TAChartListbox, TAEnumerators, TADataPointsEditor, TAChartExtentLink,
|
TAChartListbox, TAEnumerators, TADataPointsEditor, TAChartExtentLink,
|
||||||
TAToolEditors, TAMath, TAChartImageList, TADataTools, TAAnimatedSource,
|
TAToolEditors, TAMath, TAChartImageList, TADataTools, TAAnimatedSource,
|
||||||
TATextElements, TAAxisSource, LazarusPackageIntf;
|
TATextElements, TAAxisSource, TASeriesPropEditors, LazarusPackageIntf;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@ -35,6 +35,7 @@ begin
|
|||||||
RegisterUnit('TAChartExtentLink', @TAChartExtentLink.Register);
|
RegisterUnit('TAChartExtentLink', @TAChartExtentLink.Register);
|
||||||
RegisterUnit('TAToolEditors', @TAToolEditors.Register);
|
RegisterUnit('TAToolEditors', @TAToolEditors.Register);
|
||||||
RegisterUnit('TAChartImageList', @TAChartImageList.Register);
|
RegisterUnit('TAChartImageList', @TAChartImageList.Register);
|
||||||
|
RegisterUnit('TASeriesPropEditors', @TASeriesPropEditors.Register);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
@ -44,16 +44,18 @@ type
|
|||||||
FValue: TDoublePoint;
|
FValue: TDoublePoint;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
TChartAxisIndex = -1..MaxInt;
|
||||||
|
|
||||||
{ TCustomChartSeries }
|
{ TCustomChartSeries }
|
||||||
|
|
||||||
TCustomChartSeries = class(TBasicChartSeries)
|
TCustomChartSeries = class(TBasicChartSeries)
|
||||||
strict private
|
strict private
|
||||||
FAxisIndexX: Integer;
|
FAxisIndexX: TChartAxisIndex;
|
||||||
FAxisIndexY: Integer;
|
FAxisIndexY: TChartAxisIndex;
|
||||||
FLegend: TChartSeriesLegend;
|
FLegend: TChartSeriesLegend;
|
||||||
FTitle: String;
|
FTitle: String;
|
||||||
procedure SetAxisIndexX(AValue: Integer);
|
procedure SetAxisIndexX(AValue: TChartAxisIndex);
|
||||||
procedure SetAxisIndexY(AValue: Integer);
|
procedure SetAxisIndexY(AValue: TChartAxisIndex);
|
||||||
procedure SetLegend(AValue: TChartSeriesLegend);
|
procedure SetLegend(AValue: TChartSeriesLegend);
|
||||||
procedure SetShowInLegend(AValue: Boolean);
|
procedure SetShowInLegend(AValue: Boolean);
|
||||||
|
|
||||||
@ -104,9 +106,9 @@ type
|
|||||||
procedure GetSingleLegendItem(AItems: TChartLegendItems);
|
procedure GetSingleLegendItem(AItems: TChartLegendItems);
|
||||||
function HasParent: Boolean; override;
|
function HasParent: Boolean; override;
|
||||||
|
|
||||||
property AxisIndexX: Integer
|
property AxisIndexX: TChartAxisIndex
|
||||||
read FAxisIndexX write SetAxisIndexX default DEF_AXIS_INDEX;
|
read FAxisIndexX write SetAxisIndexX default DEF_AXIS_INDEX;
|
||||||
property AxisIndexY: Integer
|
property AxisIndexY: TChartAxisIndex
|
||||||
read FAxisIndexY write SetAxisIndexY default DEF_AXIS_INDEX;
|
read FAxisIndexY write SetAxisIndexY default DEF_AXIS_INDEX;
|
||||||
property Title: String read FTitle write SetTitle stored TitleIsStored;
|
property Title: String read FTitle write SetTitle stored TitleIsStored;
|
||||||
|
|
||||||
@ -472,14 +474,14 @@ begin
|
|||||||
UpdateParentChart;
|
UpdateParentChart;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomChartSeries.SetAxisIndexX(AValue: Integer);
|
procedure TCustomChartSeries.SetAxisIndexX(AValue: TChartAxisIndex);
|
||||||
begin
|
begin
|
||||||
if FAxisIndexX = AValue then exit;
|
if FAxisIndexX = AValue then exit;
|
||||||
FAxisIndexX := AValue;
|
FAxisIndexX := AValue;
|
||||||
UpdateParentChart;
|
UpdateParentChart;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomChartSeries.SetAxisIndexY(AValue: Integer);
|
procedure TCustomChartSeries.SetAxisIndexY(AValue: TChartAxisIndex);
|
||||||
begin
|
begin
|
||||||
if FAxisIndexY = AValue then exit;
|
if FAxisIndexY = AValue then exit;
|
||||||
FAxisIndexY := AValue;
|
FAxisIndexY := AValue;
|
||||||
|
Loading…
Reference in New Issue
Block a user