lazarus/components/tachart/demo/charteditor/cepointerframe.pas
2019-04-04 20:45:48 +00:00

92 lines
2.0 KiB
ObjectPascal

unit cePointerFrame;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, StdCtrls, ExtCtrls, Spin,
TATypes, TAChartCombos, TAGraph,
ceBrushFrame, cePenFrame;
type
{ TPointerFrame }
TPointerFrame = class(TFrame)
Bevel1: TBevel;
Bevel2: TBevel;
Bevel3: TBevel;
cbPointerStyle: TChartComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
lblPointerWidth: TLabel;
lblPointerHeight: TLabel;
PointerPenFrame: TPenFrame;
PointerBrushFrame: TBrushFrame;
sePointerWidth: TSpinEdit;
sePointerHeight: TSpinEdit;
procedure cbPointerStyleChange(Sender: TObject);
procedure sePointerHeightChange(Sender: TObject);
procedure sePointerWidthChange(Sender: TObject);
private
FPointer: TSeriesPointer;
FOnChange: TNotifyEvent;
procedure DoChange;
protected
function GetChart: TChart;
public
procedure Prepare(APointer: TSeriesPointer);
property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;
implementation
{$R *.lfm}
type
TSeriesPointerAccess = class(TSeriesPointer);
procedure TPointerFrame.cbPointerStyleChange(Sender: TObject);
begin
FPointer.Style := cbPointerStyle.PointerStyle;
DoChange;
end;
procedure TPointerFrame.sePointerHeightChange(Sender: TObject);
begin
FPointer.VertSize := sePointerHeight.Value;
DoChange;
end;
procedure TPointerFrame.sePointerWidthChange(Sender: TObject);
begin
FPointer.HorizSize := sePointerWidth.Value;
DoChange;
end;
procedure TPointerFrame.DoChange;
begin
if Assigned(FOnChange) then FOnChange(FPointer);
end;
function TPointerFrame.GetChart: TChart;
begin
Result := TSeriesPointerAccess(FPointer).GetOwner as TChart;
end;
procedure TPointerFrame.Prepare(APointer: TSeriesPointer);
begin
FPointer := APointer;
cbPointerStyle.PointerStyle := APointer.Style;
sePointerWidth.Value := APointer.HorizSize;
sePointerHeight.Value := APointer.VertSize;
PointerBrushFrame.Prepare(APointer.Brush);
PointerPenFrame.Prepare(APointer.Pen);
end;
end.