1 unit cePointerFrame;
2
3 {$mode objfpc}{$H+}
4
5 interface
6
7 uses
8 Classes, SysUtils, Forms, Controls, StdCtrls, ExtCtrls, Spin,
9 TATypes, TAChartCombos, TAGraph,
10 ceBrushFrame, cePenFrame;
11
12 type
13
14 { TChartPointerFrame }
15
16 TChartPointerFrame = class(TFrame)
17 cbPointerStyle: TChartComboBox;
18 GroupBox1: TGroupBox;
19 gbPointerBrush: TGroupBox;
20 gbPointerPen: TGroupBox;
21 lblPointerSize: TLabel;
22 sePointerSize: TSpinEdit;
23 procedure cbPointerStyleChange(Sender: TObject);
24 procedure sePointerSizeChange(Sender: TObject);
25 private
26 FPointer: TSeriesPointer;
27 FPointerBrushFrame: TChartBrushFrame;
28 FPointerPenFrame: TChartPenFrame;
29 FOnChange: TNotifyEvent;
30 procedure ChangedHandler(Sender: TObject);
31 procedure DoChange;
32 protected
GetChartnull33 function GetChart: TChart;
34 public
35 constructor Create(AOwner: TComponent); override;
36 procedure Prepare(APointer: TSeriesPointer);
37 property OnChange: TNotifyEvent read FOnChange write FOnChange;
38 end;
39
40 implementation
41
42 {$R *.lfm}
43
44 type
45 TSeriesPointerAccess = class(TSeriesPointer);
46
47 constructor TChartPointerFrame.Create(AOwner: TComponent);
48 begin
49 inherited;
50 cbPointerStyle.DropdownCount := DEFAULT_DROPDOWN_COUNT;
51
52 FPointerBrushFrame := TChartBrushFrame.Create(Self);
53 FPointerBrushFrame.Name := '';
54 FPointerBrushFrame.Align := alClient;
55 FPointerBrushFrame.AutoSize := true;
56 FPointerBrushFrame.BorderSpacing.Around := 8;
57 FPointerBrushFrame.OnChange := @ChangedHandler;
58 FPointerBrushFrame.Parent := gbPointerBrush;
59 gbPointerBrush.Caption := 'Fill';
60 gbPointerBrush.AutoSize := true;
61
62 FPointerPenFrame := TChartPenFrame.Create(self);
63 FPointerPenFrame.Name := '';
64 FPointerPenFrame.Align := alClient;
65 FPointerPenFrame.AutoSize := true;
66 FPointerPenFrame.borderspacing.Around := 8;
67 FPointerPenFrame.OnChange := @ChangedHandler;
68 FPointerPenFrame.Parent := gbPointerPen;
69 gbPointerPen.caption := 'Border';
70 gbPointerPen.AutoSize := true;
71
72 AutoSize := true;
73 end;
74
75 procedure TChartPointerFrame.cbPointerStyleChange(Sender: TObject);
76 begin
77 FPointer.Style := cbPointerStyle.PointerStyle;
78 DoChange;
79 end;
80
81 procedure TChartPointerFrame.ChangedHandler(Sender: TObject);
82 begin
83 DoChange;
84 end;
85
86 procedure TChartPointerFrame.sePointerSizeChange(Sender: TObject);
87 begin
88 FPointer.HorizSize := sePointerSize.Value;
89 FPointer.VertSize := sePointerSize.Value;
90 DoChange;
91 end;
92
93 procedure TChartPointerFrame.DoChange;
94 begin
95 if Assigned(FOnChange) then FOnChange(FPointer);
96 end;
97
GetChartnull98 function TChartPointerFrame.GetChart: TChart;
99 begin
100 Result := TSeriesPointerAccess(FPointer).GetOwner as TChart;
101 end;
102
103 procedure TChartPointerFrame.Prepare(APointer: TSeriesPointer);
104 begin
105 FPointer := APointer;
106 cbPointerStyle.PointerStyle := APointer.Style;
107 sePointerSize.Value := APointer.HorizSize;
108 FPointerBrushFrame.Prepare(APointer.Brush);
109 FPointerPenFrame.Prepare(APointer.Pen);
110 end;
111
112 end.
113
114