mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-28 13:33:40 +02:00
79 lines
1.8 KiB
ObjectPascal
79 lines
1.8 KiB
ObjectPascal
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.
|
|
|