Polished DataProvider & Converter, RTTI field access
This commit is contained in:
+15
-15
@@ -54,8 +54,12 @@ type
|
||||
protected
|
||||
function GetOwner: TMycChart; override; final;
|
||||
function GetValueRange(First, Last: Int64; out Min, Max: Double): Boolean; virtual; abstract;
|
||||
procedure Paint(const Canvas: TCanvas; First, Last: Int64; const XForm: TFunc<Int64, Single>; const YForm: TFunc<Double, Single>); virtual;
|
||||
abstract;
|
||||
procedure Paint(
|
||||
const Canvas: TCanvas;
|
||||
First, Last: Int64;
|
||||
const XForm: TFunc<Int64, Single>;
|
||||
const YForm: TFunc<Double, Single>
|
||||
); virtual; abstract;
|
||||
public
|
||||
constructor Create(AParent: TPanel);
|
||||
end;
|
||||
@@ -105,13 +109,13 @@ type
|
||||
destructor Destroy; override;
|
||||
|
||||
function AddOhlcSeries(
|
||||
const DataProvider: IMycDataProvider<TOhlcItem>;
|
||||
const DataProvider: TDataProvider<TOhlcItem>;
|
||||
const AUpColor: TAlphaColor = TAlphaColors.Green;
|
||||
const ADownColor: TAlphaColor = TAlphaColors.Red
|
||||
): TMycChart.TDataLayer;
|
||||
|
||||
function AddDoubleSeries(
|
||||
const DataProvider: IMycDataProvider<Double>;
|
||||
const DataProvider: TDataProvider<Double>;
|
||||
const ALineColor: TAlphaColor = TAlphaColors.Cornflowerblue;
|
||||
const ALineWidth: Single = 1.5
|
||||
): TMycChart.TDataLayer;
|
||||
@@ -162,7 +166,7 @@ type
|
||||
function AddPanel: TPanel;
|
||||
|
||||
// Sets the master series that defines the time scale (X-axis).
|
||||
function SetXAxisSeries(Timeframe: TTimeframe; const DataProvider: IMycDataProvider<TDateTime>): TMycChart.TXAxisLayer;
|
||||
function SetXAxisSeries(Timeframe: TTimeframe; const DataProvider: TDataProvider<TDateTime>): TMycChart.TXAxisLayer;
|
||||
|
||||
property Lookback: TWriteable<Int64> read FLookback write FLookback;
|
||||
property NeedRepaint: TFlag read FNeedRepaint;
|
||||
@@ -220,7 +224,7 @@ end;
|
||||
|
||||
function TMycChart.AddPanel: TPanel;
|
||||
begin
|
||||
Result := TPanel.Create(Self, IfThen(FPanelList.Count=0, 1, 0.2));
|
||||
Result := TPanel.Create(Self, IfThen(FPanelList.Count = 0, 1, 0.2));
|
||||
FPanelList.Add(Result);
|
||||
Repaint;
|
||||
end;
|
||||
@@ -635,7 +639,7 @@ begin
|
||||
Repaint;
|
||||
end;
|
||||
|
||||
function TMycChart.SetXAxisSeries(Timeframe: TTimeframe; const DataProvider: IMycDataProvider<TDateTime>): TMycChart.TXAxisLayer;
|
||||
function TMycChart.SetXAxisSeries(Timeframe: TTimeframe; const DataProvider: TDataProvider<TDateTime>): TMycChart.TXAxisLayer;
|
||||
begin
|
||||
FXAxisSeries.Free;
|
||||
|
||||
@@ -665,7 +669,7 @@ begin
|
||||
end;
|
||||
|
||||
function TMycChart.TPanel.AddDoubleSeries(
|
||||
const DataProvider: IMycDataProvider<Double>;
|
||||
const DataProvider: TDataProvider<Double>;
|
||||
const ALineColor: TAlphaColor = TAlphaColors.Cornflowerblue;
|
||||
const ALineWidth: Single = 1.5
|
||||
): TMycChart.TDataLayer;
|
||||
@@ -675,7 +679,7 @@ begin
|
||||
end;
|
||||
|
||||
function TMycChart.TPanel.AddOhlcSeries(
|
||||
const DataProvider: IMycDataProvider<TOhlcItem>;
|
||||
const DataProvider: TDataProvider<TOhlcItem>;
|
||||
const AUpColor: TAlphaColor = TAlphaColors.Green;
|
||||
const ADownColor: TAlphaColor = TAlphaColors.Red
|
||||
): TMycChart.TDataLayer;
|
||||
@@ -742,13 +746,9 @@ begin
|
||||
// 2. Create transforms for this panel
|
||||
const padding = 2;
|
||||
var top: Double := Viewport.Top + padding;
|
||||
var height: Double := Viewport.Height-(2*padding);
|
||||
var height: Double := Viewport.Height - (2 * padding);
|
||||
var range: Double := localMax - localMin;
|
||||
yTransform :=
|
||||
function(value: Double): Single
|
||||
begin
|
||||
Result := top + (1 - (value - localMin) / range) * height;
|
||||
end;
|
||||
yTransform := function(value: Double): Single begin Result := top + (1 - (value - localMin) / range) * height; end;
|
||||
|
||||
// 3. Paint all layers in this panel
|
||||
for var series in FSeriesList do
|
||||
|
||||
Reference in New Issue
Block a user