Code-Formatting

This commit is contained in:
Michael Schimmel
2025-07-12 17:10:01 +02:00
parent ce915e503a
commit 45ff69fd92
14 changed files with 638 additions and 594 deletions
+15 -15
View File
@@ -1,23 +1,23 @@
program AuraTrader;
uses
FastMM5,
System.StartUpCopy,
FMX.Forms,
MainForm in 'MainForm.pas' {Form1},
Myc.Trade.Core.DataPoint in '..\Src\Myc.Trade.Core.DataPoint.pas',
Myc.Aura.Module in '..\Src\Myc.Aura.Module.pas',
Myc.Aura.Parameter in '..\Src\Myc.Aura.Parameter.pas',
TestModule in 'TestModule.pas',
DynamicFMXControl in 'DynamicFMXControl.pas',
FirstStrategy in 'FirstStrategy.pas',
Myc.Fmx.Chart in 'Myc.Fmx.Chart.pas',
Myc.Trade.DataArray in '..\Src\Myc.Trade.DataArray.pas';
FastMM5,
System.StartUpCopy,
FMX.Forms,
MainForm in 'MainForm.pas' {Form1},
Myc.Trade.Core.DataPoint in '..\Src\Myc.Trade.Core.DataPoint.pas',
Myc.Aura.Module in '..\Src\Myc.Aura.Module.pas',
Myc.Aura.Parameter in '..\Src\Myc.Aura.Parameter.pas',
TestModule in 'TestModule.pas',
DynamicFMXControl in 'DynamicFMXControl.pas',
FirstStrategy in 'FirstStrategy.pas',
Myc.Fmx.Chart in 'Myc.Fmx.Chart.pas',
Myc.Trade.DataArray in '..\Src\Myc.Trade.DataArray.pas';
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
+242 -234
View File
@@ -3,135 +3,143 @@ unit DynamicFMXControl;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
FMX.Controls, FMX.Graphics, FMX.Forms, FMX.StdCtrls, FMX.Types;
System.SysUtils,
System.Types,
System.UITypes,
System.Classes,
FMX.Controls,
FMX.Graphics,
FMX.Forms,
FMX.StdCtrls,
FMX.Types;
type
// Dezidierte Event-Typen für virtuelle Methoden von TControl
TControlPaintEvent = reference to procedure;
TControlMouseEvent = reference to procedure(Button: TMouseButton; Shift: TShiftState; X, Y: Single);
TControlMouseMoveEvent = reference to procedure(Shift: TShiftState; X, Y: Single);
TControlMouseWheelEvent = reference to procedure(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);
TControlKeyEvent = reference to procedure(var Key: Word; var KeyChar: WideChar; Shift: TShiftState);
TControlDragEvent = reference to procedure(const Data: TDragObject; const Point: TPointF);
TControlDragOverEvent = reference to procedure(const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation);
TControlNotifyEvent = reference to procedure;
TControlCanFocusEvent = reference to function: Boolean;
TControlShowContextMenuEvent = reference to function(const ScreenPosition: TPointF): Boolean;
TControlSetHintEvent = reference to procedure(const AHint: string);
TControlGetHintStringEvent = reference to function: string;
TControlHasHintEvent = reference to function: Boolean;
TControlCanShowHintEvent = reference to function: Boolean;
TControlGetDefaultSizeEvent = reference to function: TSizeF;
TControlSetVisibleEvent = reference to procedure(const Value: Boolean);
TControlSetEnabledEvent = reference to procedure(const Value: Boolean);
TControlDoAbsoluteChangedEvent = reference to procedure;
// Dezidierte Event-Typen für virtuelle Methoden von TControl
TControlPaintEvent = reference to procedure;
TControlMouseEvent = reference to procedure(Button: TMouseButton; Shift: TShiftState; X, Y: Single);
TControlMouseMoveEvent = reference to procedure(Shift: TShiftState; X, Y: Single);
TControlMouseWheelEvent = reference to procedure(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);
TControlKeyEvent = reference to procedure(var Key: Word; var KeyChar: WideChar; Shift: TShiftState);
TControlDragEvent = reference to procedure(const Data: TDragObject; const Point: TPointF);
TControlDragOverEvent = reference to procedure(const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation);
TControlNotifyEvent = reference to procedure;
TControlCanFocusEvent = reference to function: Boolean;
TControlShowContextMenuEvent = reference to function(const ScreenPosition: TPointF): Boolean;
TControlSetHintEvent = reference to procedure(const AHint: string);
TControlGetHintStringEvent = reference to function: string;
TControlHasHintEvent = reference to function: Boolean;
TControlCanShowHintEvent = reference to function: Boolean;
TControlGetDefaultSizeEvent = reference to function: TSizeF;
TControlSetVisibleEvent = reference to procedure(const Value: Boolean);
TControlSetEnabledEvent = reference to procedure(const Value: Boolean);
TControlDoAbsoluteChangedEvent = reference to procedure;
TDynamicControl = class(TControl)
private
// Private Felder für die Event-Handler
FPaintEvent: TControlPaintEvent;
FMouseDownEvent: TControlMouseEvent;
FMouseUpEvent: TControlMouseEvent;
FMouseMoveEvent: TControlMouseMoveEvent;
FMouseWheelEvent: TControlMouseWheelEvent;
FKeyDownEvent: TControlKeyEvent;
FKeyUpEvent: TControlKeyEvent;
FClickEvent: TControlNotifyEvent;
FDblClickEvent: TControlNotifyEvent;
FDragEnterEvent: TControlDragEvent;
FDragOverEvent: TControlDragOverEvent;
FDragDropEvent: TControlDragEvent;
FDragLeaveEvent: TControlNotifyEvent;
FDragEndEvent: TControlNotifyEvent;
FEnterEvent: TControlNotifyEvent;
FExitEvent: TControlNotifyEvent;
FMouseEnterEvent: TControlNotifyEvent;
FMouseLeaveEvent: TControlNotifyEvent;
FResizeEvent: TControlNotifyEvent;
FResizedEvent: TControlNotifyEvent;
FCanFocusEvent: TControlCanFocusEvent;
FShowContextMenuEvent: TControlShowContextMenuEvent;
FSetHintEvent: TControlSetHintEvent;
FGetHintStringEvent: TControlGetHintStringEvent;
FHasHintEvent: TControlHasHintEvent;
FCanShowHintEvent: TControlCanShowHintEvent;
FGetDefaultSizeEvent: TControlGetDefaultSizeEvent;
FRecalculateAbsoluteMatricesEvent: TControlNotifyEvent;
FSetVisibleEvent: TControlSetVisibleEvent;
FSetEnabledEvent: TControlSetEnabledEvent;
FDoAbsoluteChangedEvent: TControlDoAbsoluteChangedEvent;
TDynamicControl = class(TControl)
private
// Private Felder für die Event-Handler
FPaintEvent: TControlPaintEvent;
FMouseDownEvent: TControlMouseEvent;
FMouseUpEvent: TControlMouseEvent;
FMouseMoveEvent: TControlMouseMoveEvent;
FMouseWheelEvent: TControlMouseWheelEvent;
FKeyDownEvent: TControlKeyEvent;
FKeyUpEvent: TControlKeyEvent;
FClickEvent: TControlNotifyEvent;
FDblClickEvent: TControlNotifyEvent;
FDragEnterEvent: TControlDragEvent;
FDragOverEvent: TControlDragOverEvent;
FDragDropEvent: TControlDragEvent;
FDragLeaveEvent: TControlNotifyEvent;
FDragEndEvent: TControlNotifyEvent;
FEnterEvent: TControlNotifyEvent;
FExitEvent: TControlNotifyEvent;
FMouseEnterEvent: TControlNotifyEvent;
FMouseLeaveEvent: TControlNotifyEvent;
FResizeEvent: TControlNotifyEvent;
FResizedEvent: TControlNotifyEvent;
FCanFocusEvent: TControlCanFocusEvent;
FShowContextMenuEvent: TControlShowContextMenuEvent;
FSetHintEvent: TControlSetHintEvent;
FGetHintStringEvent: TControlGetHintStringEvent;
FHasHintEvent: TControlHasHintEvent;
FCanShowHintEvent: TControlCanShowHintEvent;
FGetDefaultSizeEvent: TControlGetDefaultSizeEvent;
FRecalculateAbsoluteMatricesEvent: TControlNotifyEvent;
FSetVisibleEvent: TControlSetVisibleEvent;
FSetEnabledEvent: TControlSetEnabledEvent;
FDoAbsoluteChangedEvent: TControlDoAbsoluteChangedEvent;
protected
// Überschriebene virtuelle Methoden, die die Events auslösen
procedure Paint; override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
procedure MouseMove(Shift: TShiftState; X, Y: Single); override;
procedure MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean); override;
procedure Click; override;
procedure DblClick; override;
procedure KeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); override;
procedure KeyUp(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); override;
procedure DragEnter(const Data: TDragObject; const Point: TPointF); override;
procedure DragOver(const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation); override;
procedure DragDrop(const Data: TDragObject; const Point: TPointF); override;
procedure DragLeave; override;
procedure DragEnd; override;
procedure DoEnter; override;
procedure DoExit; override;
procedure DoMouseEnter; override;
procedure DoMouseLeave; override;
procedure Resize; override;
procedure DoResized; override;
function GetCanFocus: Boolean; override;
function ShowContextMenu(const ScreenPosition: TPointF): Boolean; override;
procedure SetHint(const AHint: string); override;
function GetHintString: string; override;
function HasHint: Boolean; override;
function CanShowHint: Boolean; override;
function GetDefaultSize: TSizeF; override;
procedure RecalculateAbsoluteMatrices; override;
procedure SetVisible(const Value: Boolean); override;
procedure SetEnabled(const Value: Boolean); override;
procedure DoAbsoluteChanged; override;
protected
// Überschriebene virtuelle Methoden, die die Events auslösen
procedure Paint; override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Single); override;
procedure MouseMove(Shift: TShiftState; X, Y: Single); override;
procedure MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean); override;
procedure Click; override;
procedure DblClick; override;
procedure KeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); override;
procedure KeyUp(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); override;
procedure DragEnter(const Data: TDragObject; const Point: TPointF); override;
procedure DragOver(const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation); override;
procedure DragDrop(const Data: TDragObject; const Point: TPointF); override;
procedure DragLeave; override;
procedure DragEnd; override;
procedure DoEnter; override;
procedure DoExit; override;
procedure DoMouseEnter; override;
procedure DoMouseLeave; override;
procedure Resize; override;
procedure DoResized; override;
function GetCanFocus: Boolean; override;
function ShowContextMenu(const ScreenPosition: TPointF): Boolean; override;
procedure SetHint(const AHint: string); override;
function GetHintString: string; override;
function HasHint: Boolean; override;
function CanShowHint: Boolean; override;
function GetDefaultSize: TSizeF; override;
procedure RecalculateAbsoluteMatrices; override;
procedure SetVisible(const Value: Boolean); override;
procedure SetEnabled(const Value: Boolean); override;
procedure DoAbsoluteChanged; override;
public
constructor Create(AOwner: TComponent); override;
public
constructor Create(AOwner: TComponent); override;
// Public Properties, die die Events exponieren
property OnPaint: TControlPaintEvent read FPaintEvent write FPaintEvent;
property OnMouseDown: TControlMouseEvent read FMouseDownEvent write FMouseDownEvent;
property OnMouseUp: TControlMouseEvent read FMouseUpEvent write FMouseUpEvent;
property OnMouseMove: TControlMouseMoveEvent read FMouseMoveEvent write FMouseMoveEvent;
property OnMouseWheel: TControlMouseWheelEvent read FMouseWheelEvent write FMouseWheelEvent;
property OnClick: TControlNotifyEvent read FClickEvent write FClickEvent;
property OnDblClick: TControlNotifyEvent read FDblClickEvent write FDblClickEvent;
property OnKeyDown: TControlKeyEvent read FKeyDownEvent write FKeyDownEvent;
property OnKeyUp: TControlKeyEvent read FKeyUpEvent write FKeyUpEvent;
property OnDragEnter: TControlDragEvent read FDragEnterEvent write FDragEnterEvent;
property OnDragOver: TControlDragOverEvent read FDragOverEvent write FDragOverEvent;
property OnDragDrop: TControlDragEvent read FDragDropEvent write FDragDropEvent;
property OnDragLeave: TControlNotifyEvent read FDragLeaveEvent write FDragLeaveEvent;
property OnDragEnd: TControlNotifyEvent read FDragEndEvent write FDragEndEvent;
property OnEnter: TControlNotifyEvent read FEnterEvent write FEnterEvent;
property OnExit: TControlNotifyEvent read FExitEvent write FExitEvent;
property OnMouseEnter: TControlNotifyEvent read FMouseEnterEvent write FMouseEnterEvent;
property OnMouseLeave: TControlNotifyEvent read FMouseLeaveEvent write FMouseLeaveEvent;
property OnResize: TControlNotifyEvent read FResizeEvent write FResizeEvent;
property OnResized: TControlNotifyEvent read FResizedEvent write FResizedEvent;
property OnCanFocus: TControlCanFocusEvent read FCanFocusEvent write FCanFocusEvent;
property OnShowContextMenu: TControlShowContextMenuEvent read FShowContextMenuEvent write FShowContextMenuEvent;
property OnSetHint: TControlSetHintEvent read FSetHintEvent write FSetHintEvent;
property OnGetHintString: TControlGetHintStringEvent read FGetHintStringEvent write FGetHintStringEvent;
property OnHasHint: TControlHasHintEvent read FHasHintEvent write FHasHintEvent;
property OnCanShowHint: TControlCanShowHintEvent read FCanShowHintEvent write FCanShowHintEvent;
property OnGetDefaultSize: TControlGetDefaultSizeEvent read FGetDefaultSizeEvent write FGetDefaultSizeEvent;
property OnRecalculateAbsoluteMatrices: TControlNotifyEvent read FRecalculateAbsoluteMatricesEvent write FRecalculateAbsoluteMatricesEvent;
property OnSetVisible: TControlSetVisibleEvent read FSetVisibleEvent write FSetVisibleEvent;
property OnSetEnabled: TControlSetEnabledEvent read FSetEnabledEvent write FSetEnabledEvent;
property OnDoAbsoluteChanged: TControlDoAbsoluteChangedEvent read FDoAbsoluteChangedEvent write FDoAbsoluteChangedEvent;
end;
// Public Properties, die die Events exponieren
property OnPaint: TControlPaintEvent read FPaintEvent write FPaintEvent;
property OnMouseDown: TControlMouseEvent read FMouseDownEvent write FMouseDownEvent;
property OnMouseUp: TControlMouseEvent read FMouseUpEvent write FMouseUpEvent;
property OnMouseMove: TControlMouseMoveEvent read FMouseMoveEvent write FMouseMoveEvent;
property OnMouseWheel: TControlMouseWheelEvent read FMouseWheelEvent write FMouseWheelEvent;
property OnClick: TControlNotifyEvent read FClickEvent write FClickEvent;
property OnDblClick: TControlNotifyEvent read FDblClickEvent write FDblClickEvent;
property OnKeyDown: TControlKeyEvent read FKeyDownEvent write FKeyDownEvent;
property OnKeyUp: TControlKeyEvent read FKeyUpEvent write FKeyUpEvent;
property OnDragEnter: TControlDragEvent read FDragEnterEvent write FDragEnterEvent;
property OnDragOver: TControlDragOverEvent read FDragOverEvent write FDragOverEvent;
property OnDragDrop: TControlDragEvent read FDragDropEvent write FDragDropEvent;
property OnDragLeave: TControlNotifyEvent read FDragLeaveEvent write FDragLeaveEvent;
property OnDragEnd: TControlNotifyEvent read FDragEndEvent write FDragEndEvent;
property OnEnter: TControlNotifyEvent read FEnterEvent write FEnterEvent;
property OnExit: TControlNotifyEvent read FExitEvent write FExitEvent;
property OnMouseEnter: TControlNotifyEvent read FMouseEnterEvent write FMouseEnterEvent;
property OnMouseLeave: TControlNotifyEvent read FMouseLeaveEvent write FMouseLeaveEvent;
property OnResize: TControlNotifyEvent read FResizeEvent write FResizeEvent;
property OnResized: TControlNotifyEvent read FResizedEvent write FResizedEvent;
property OnCanFocus: TControlCanFocusEvent read FCanFocusEvent write FCanFocusEvent;
property OnShowContextMenu: TControlShowContextMenuEvent read FShowContextMenuEvent write FShowContextMenuEvent;
property OnSetHint: TControlSetHintEvent read FSetHintEvent write FSetHintEvent;
property OnGetHintString: TControlGetHintStringEvent read FGetHintStringEvent write FGetHintStringEvent;
property OnHasHint: TControlHasHintEvent read FHasHintEvent write FHasHintEvent;
property OnCanShowHint: TControlCanShowHintEvent read FCanShowHintEvent write FCanShowHintEvent;
property OnGetDefaultSize: TControlGetDefaultSizeEvent read FGetDefaultSizeEvent write FGetDefaultSizeEvent;
property OnRecalculateAbsoluteMatrices: TControlNotifyEvent
read FRecalculateAbsoluteMatricesEvent write FRecalculateAbsoluteMatricesEvent;
property OnSetVisible: TControlSetVisibleEvent read FSetVisibleEvent write FSetVisibleEvent;
property OnSetEnabled: TControlSetEnabledEvent read FSetEnabledEvent write FSetEnabledEvent;
property OnDoAbsoluteChanged: TControlDoAbsoluteChangedEvent read FDoAbsoluteChangedEvent write FDoAbsoluteChangedEvent;
end;
implementation
@@ -139,241 +147,241 @@ implementation
constructor TDynamicControl.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Width := 150;
Height := 100;
HitTest := True;
inherited Create(AOwner);
Width := 150;
Height := 100;
HitTest := True;
end;
function TDynamicControl.CanShowHint: Boolean;
begin
if Assigned(FCanShowHintEvent) then
Result := FCanShowHintEvent
else
Result := inherited CanShowHint;
if Assigned(FCanShowHintEvent) then
Result := FCanShowHintEvent
else
Result := inherited CanShowHint;
end;
procedure TDynamicControl.Click;
begin
inherited Click;
if Assigned(FClickEvent) then
FClickEvent;
inherited Click;
if Assigned(FClickEvent) then
FClickEvent;
end;
procedure TDynamicControl.DblClick;
begin
inherited DblClick;
if Assigned(FDblClickEvent) then
FDblClickEvent;
inherited DblClick;
if Assigned(FDblClickEvent) then
FDblClickEvent;
end;
procedure TDynamicControl.DoAbsoluteChanged;
begin
inherited DoAbsoluteChanged;
if Assigned(FDoAbsoluteChangedEvent) then
FDoAbsoluteChangedEvent;
inherited DoAbsoluteChanged;
if Assigned(FDoAbsoluteChangedEvent) then
FDoAbsoluteChangedEvent;
end;
procedure TDynamicControl.DragDrop(const Data: TDragObject; const Point: TPointF);
begin
inherited DragDrop(Data, Point);
if Assigned(FDragDropEvent) then
FDragDropEvent(Data, Point);
inherited DragDrop(Data, Point);
if Assigned(FDragDropEvent) then
FDragDropEvent(Data, Point);
end;
procedure TDynamicControl.DragEnd;
begin
inherited DragEnd;
if Assigned(FDragEndEvent) then
FDragEndEvent;
inherited DragEnd;
if Assigned(FDragEndEvent) then
FDragEndEvent;
end;
procedure TDynamicControl.DragEnter(const Data: TDragObject; const Point: TPointF);
begin
inherited DragEnter(Data, Point);
if Assigned(FDragEnterEvent) then
FDragEnterEvent(Data, Point);
inherited DragEnter(Data, Point);
if Assigned(FDragEnterEvent) then
FDragEnterEvent(Data, Point);
end;
procedure TDynamicControl.DragLeave;
begin
inherited DragLeave;
if Assigned(FDragLeaveEvent) then
FDragLeaveEvent;
inherited DragLeave;
if Assigned(FDragLeaveEvent) then
FDragLeaveEvent;
end;
procedure TDynamicControl.DragOver(const Data: TDragObject; const Point: TPointF; var Operation: TDragOperation);
begin
inherited DragOver(Data, Point, Operation);
if Assigned(FDragOverEvent) then
FDragOverEvent(Data, Point, Operation);
inherited DragOver(Data, Point, Operation);
if Assigned(FDragOverEvent) then
FDragOverEvent(Data, Point, Operation);
end;
procedure TDynamicControl.DoEnter;
begin
inherited DoEnter;
if Assigned(FEnterEvent) then
FEnterEvent;
inherited DoEnter;
if Assigned(FEnterEvent) then
FEnterEvent;
end;
procedure TDynamicControl.DoExit;
begin
inherited DoExit;
if Assigned(FExitEvent) then
FExitEvent;
inherited DoExit;
if Assigned(FExitEvent) then
FExitEvent;
end;
procedure TDynamicControl.DoMouseEnter;
begin
inherited DoMouseEnter;
if Assigned(FMouseEnterEvent) then
FMouseEnterEvent;
inherited DoMouseEnter;
if Assigned(FMouseEnterEvent) then
FMouseEnterEvent;
end;
procedure TDynamicControl.DoMouseLeave;
begin
inherited DoMouseLeave;
if Assigned(FMouseLeaveEvent) then
FMouseLeaveEvent;
inherited DoMouseLeave;
if Assigned(FMouseLeaveEvent) then
FMouseLeaveEvent;
end;
procedure TDynamicControl.DoResized;
begin
inherited DoResized;
if Assigned(FResizedEvent) then
FResizedEvent;
inherited DoResized;
if Assigned(FResizedEvent) then
FResizedEvent;
end;
function TDynamicControl.GetCanFocus: Boolean;
begin
if Assigned(FCanFocusEvent) then
Result := FCanFocusEvent
else
Result := inherited GetCanFocus;
if Assigned(FCanFocusEvent) then
Result := FCanFocusEvent
else
Result := inherited GetCanFocus;
end;
function TDynamicControl.GetDefaultSize: TSizeF;
begin
if Assigned(FGetDefaultSizeEvent) then
Result := FGetDefaultSizeEvent
else
Result := inherited GetDefaultSize;
if Assigned(FGetDefaultSizeEvent) then
Result := FGetDefaultSizeEvent
else
Result := inherited GetDefaultSize;
end;
function TDynamicControl.GetHintString: string;
begin
if Assigned(FGetHintStringEvent) then
Result := FGetHintStringEvent
else
Result := inherited GetHintString;
if Assigned(FGetHintStringEvent) then
Result := FGetHintStringEvent
else
Result := inherited GetHintString;
end;
function TDynamicControl.HasHint: Boolean;
begin
if Assigned(FHasHintEvent) then
Result := FHasHintEvent
else
Result := inherited HasHint;
if Assigned(FHasHintEvent) then
Result := FHasHintEvent
else
Result := inherited HasHint;
end;
procedure TDynamicControl.KeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState);
begin
inherited KeyDown(Key, KeyChar, Shift);
if Assigned(FKeyDownEvent) then
FKeyDownEvent(Key, KeyChar, Shift);
inherited KeyDown(Key, KeyChar, Shift);
if Assigned(FKeyDownEvent) then
FKeyDownEvent(Key, KeyChar, Shift);
end;
procedure TDynamicControl.KeyUp(var Key: Word; var KeyChar: WideChar; Shift: TShiftState);
begin
inherited KeyUp(Key, KeyChar, Shift);
if Assigned(FKeyUpEvent) then
FKeyUpEvent(Key, KeyChar, Shift);
inherited KeyUp(Key, KeyChar, Shift);
if Assigned(FKeyUpEvent) then
FKeyUpEvent(Key, KeyChar, Shift);
end;
procedure TDynamicControl.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
inherited MouseDown(Button, Shift, X, Y);
if Assigned(FMouseDownEvent) then
FMouseDownEvent(Button, Shift, X, Y);
inherited MouseDown(Button, Shift, X, Y);
if Assigned(FMouseDownEvent) then
FMouseDownEvent(Button, Shift, X, Y);
end;
procedure TDynamicControl.MouseMove(Shift: TShiftState; X, Y: Single);
begin
inherited MouseMove(Shift, X, Y);
if Assigned(FMouseMoveEvent) then
FMouseMoveEvent(Shift, X, Y);
inherited MouseMove(Shift, X, Y);
if Assigned(FMouseMoveEvent) then
FMouseMoveEvent(Shift, X, Y);
end;
procedure TDynamicControl.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
inherited MouseUp(Button, Shift, X, Y);
if Assigned(FMouseUpEvent) then
FMouseUpEvent(Button, Shift, X, Y);
inherited MouseUp(Button, Shift, X, Y);
if Assigned(FMouseUpEvent) then
FMouseUpEvent(Button, Shift, X, Y);
end;
procedure TDynamicControl.MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);
begin
inherited MouseWheel(Shift, WheelDelta, Handled);
if Assigned(FMouseWheelEvent) then
FMouseWheelEvent(Shift, WheelDelta, Handled);
inherited MouseWheel(Shift, WheelDelta, Handled);
if Assigned(FMouseWheelEvent) then
FMouseWheelEvent(Shift, WheelDelta, Handled);
end;
procedure TDynamicControl.Paint;
begin
inherited Paint;
if Assigned(FPaintEvent) then
FPaintEvent
else
begin
Canvas.Fill.Color := TAlphaColors.LightSteelBlue;
Canvas.FillRect(LocalRect, 0, 0, [], 1);
Canvas.Stroke.Color := TAlphaColors.Gray;
Canvas.Stroke.Thickness := 1;
Canvas.DrawRect(LocalRect, 0, 0, [], 1);
end;
inherited Paint;
if Assigned(FPaintEvent) then
FPaintEvent
else
begin
Canvas.Fill.Color := TAlphaColors.LightSteelBlue;
Canvas.FillRect(LocalRect, 0, 0, [], 1);
Canvas.Stroke.Color := TAlphaColors.Gray;
Canvas.Stroke.Thickness := 1;
Canvas.DrawRect(LocalRect, 0, 0, [], 1);
end;
end;
procedure TDynamicControl.RecalculateAbsoluteMatrices;
begin
inherited RecalculateAbsoluteMatrices;
if Assigned(FRecalculateAbsoluteMatricesEvent) then
FRecalculateAbsoluteMatricesEvent;
inherited RecalculateAbsoluteMatrices;
if Assigned(FRecalculateAbsoluteMatricesEvent) then
FRecalculateAbsoluteMatricesEvent;
end;
procedure TDynamicControl.Resize;
begin
inherited Resize;
if Assigned(FResizeEvent) then
FResizeEvent;
inherited Resize;
if Assigned(FResizeEvent) then
FResizeEvent;
end;
procedure TDynamicControl.SetEnabled(const Value: Boolean);
begin
inherited SetEnabled(Value);
if Assigned(FSetEnabledEvent) then
FSetEnabledEvent(Value);
inherited SetEnabled(Value);
if Assigned(FSetEnabledEvent) then
FSetEnabledEvent(Value);
end;
procedure TDynamicControl.SetHint(const AHint: string);
begin
inherited SetHint(AHint);
if Assigned(FSetHintEvent) then
FSetHintEvent(AHint);
inherited SetHint(AHint);
if Assigned(FSetHintEvent) then
FSetHintEvent(AHint);
end;
procedure TDynamicControl.SetVisible(const Value: Boolean);
begin
inherited SetVisible(Value);
if Assigned(FSetVisibleEvent) then
FSetVisibleEvent(Value);
inherited SetVisible(Value);
if Assigned(FSetVisibleEvent) then
FSetVisibleEvent(Value);
end;
function TDynamicControl.ShowContextMenu(const ScreenPosition: TPointF): Boolean;
begin
if Assigned(FShowContextMenuEvent) then
Result := FShowContextMenuEvent(ScreenPosition)
else
Result := inherited ShowContextMenu(ScreenPosition);
if Assigned(FShowContextMenuEvent) then
Result := FShowContextMenuEvent(ScreenPosition)
else
Result := inherited ShowContextMenu(ScreenPosition);
end;
end.
+33 -41
View File
@@ -158,55 +158,45 @@ begin
var stateText := TWriteable<String>.CreateWriteable.Protect;
var stateLabel := TLabel.Create(Self);
AlignControl( stateLabel );
AlignControl(stateLabel);
stateLabel.Text := 'Initializing...';
var chart := TMycChart.Create(Self);
AlignControl( chart );
chart.Height := Layout.ChildrenRect.Width*9/16;
AlignControl(chart);
chart.Height := Layout.ChildrenRect.Width * 9 / 16;
chart.Lookback.Value := 50000;
/////
var OhlcPoint: ITicksToTimeframe := TTicksToTimeframe.Create( H1, stateText );
var OhlcPoint: ITicksToTimeframe := TTicksToTimeframe.Create(H1, stateText);
var Ohlc: IMycConverter<TDataPoint<TOhlcItem>, TOhlcItem> := TMycGenericConverter<TDataPoint<TOhlcItem>, TOhlcItem>.Create(
function( const Ohlc: TDataPoint<TOhlcItem> ): TOhlcItem
begin
Result := Ohlc.Data;
end );
var Ohlc: IMycConverter<TDataPoint<TOhlcItem>, TOhlcItem> :=
TMycGenericConverter<TDataPoint<TOhlcItem>, TOhlcItem>
.Create(function(const Ohlc: TDataPoint<TOhlcItem>): TOhlcItem begin Result := Ohlc.Data; end);
OhlcPoint.Sender.Link(Ohlc);
var Closes: IMycConverter<TOhlcItem, Double> := TMycGenericConverter<TOhlcItem, Double>.Create(
function( const Ohlc: TOhlcItem ): Double
begin
Result := Ohlc.Close;
end );
var Closes: IMycConverter<TOhlcItem, Double> :=
TMycGenericConverter<TOhlcItem, Double>.Create(function(const Ohlc: TOhlcItem): Double begin Result := Ohlc.Close; end);
Ohlc.Sender.Link( Closes );
Ohlc.Sender.Link(Closes);
var Hull: IMycConverter<Double, Double> := THullMovingAverage.Create( 250 );
var Hull: IMycConverter<Double, Double> := THullMovingAverage.Create(250);
Closes.Sender.Link( Hull );
Closes.Sender.Link(Hull);
chart.AddDoubleSeries( Hull.Sender );
chart.AddDoubleSeries(Hull.Sender);
var done := ExecuteStrategy( Symbol, OhlcPoint );
var done := ExecuteStrategy(Symbol, OhlcPoint);
/////
stateLabel.ProcessSignal(
stateText.Changed, done,
procedure
begin
stateLabel.Text := stateText.Value;
end );
stateLabel.ProcessSignal(stateText.Changed, done, procedure begin stateLabel.Text := stateText.Value; end);
FProcessDone := TState.All([FProcessDone, done]);
chart.AddOhlcSeries( OhlcPoint.Sender );
chart.AddOhlcSeries(OhlcPoint.Sender);
end;
procedure TForm1.TreeViewDblClick(Sender: TObject);
@@ -272,7 +262,6 @@ begin
// Create an instance of the TAuraTABFileServer. The server can be reused for multiple stream creations. [364]
FServer := TAuraTABFileServer.Create('\\COFFEE\TickData\Pepperstone');
SymbolsComboBox.Enabled := false;
ChartButton.Enabled := false;
LoadButton.Enabled := false;
@@ -418,7 +407,7 @@ begin
Control.Parent := Layout;
Control.Width := Layout.Width;
Control.Position.Y := Layout.ChildrenRect.Bottom+1;
Control.Position.Y := Layout.ChildrenRect.Bottom + 1;
Control.Anchors := [TAnchorKind.akLeft, TAnchorKind.akRight];
Control.Align := TAlignLayout.Top;
end;
@@ -471,7 +460,8 @@ begin
PathData.ClosePath;
currPathData.Value := TObjectRef<TPathData>.Create(PathData);
end )
end
)
);
end
);
@@ -520,21 +510,23 @@ var
begin
var terminated := TFlag.CreateObserver(FTerminate.Signal).State;
dataProvider := TMycGenericConverter<TArray<TDataPoint<TAuraAskBidFileItem>>, TArray<TDataPoint<TAskBidItem>>>.Create(
function( const Values: TArray<TDataPoint<TAuraAskBidFileItem>> ): TArray<TDataPoint<TAskBidItem>>
begin
SetLength( Result, Length( Values ) );
for var i:=0 to High(Result) do
dataProvider :=
TMycGenericConverter<TArray<TDataPoint<TAuraAskBidFileItem>>, TArray<TDataPoint<TAskBidItem>>>.Create(
function(const Values: TArray<TDataPoint<TAuraAskBidFileItem>>): TArray<TDataPoint<TAskBidItem>>
begin
Result[i].Time := Values[i].Time;
Result[i].Data.Ask := Values[i].Data.Ask;
Result[i].Data.Bid := Values[i].Data.Bid;
end;
end );
SetLength(Result, Length(Values));
for var i := 0 to High(Result) do
begin
Result[i].Time := Values[i].Time;
Result[i].Data.Ask := Values[i].Data.Ask;
Result[i].Data.Bid := Values[i].Data.Bid;
end;
end
);
dataProvider.Sender.Link( Processor );
dataProvider.Sender.Link(Processor);
Result := FServer.ProcessData( Symbol, terminated, dataProvider );
Result := FServer.ProcessData(Symbol, terminated, dataProvider);
end;
function TForm1.SelectedSymbol: String;
+1 -1
View File
@@ -6,7 +6,7 @@ uses
Myc.Aura.Module;
type
TTestModule = class( TMycAuraNode, IAuraModule )
TTestModule = class(TMycAuraNode, IAuraModule)
private
FId: Integer;
public