📄 teengine.pas
字号:
TCustomChartSeries=class(TCustomChartElement)
private
FShowInLegend : Boolean;
FTitle : String;
FIdentifier : String; { DecisionCube }
FStyle : TChartSeriesStyle; { DecisionCube }
procedure ReadIdentifier(Reader: TReader);
procedure WriteIdentifier(Writer: TWriter);
procedure ReadStyle(Reader: TReader);
procedure WriteStyle(Writer: TWriter);
Procedure RepaintDesigner;
Procedure SetShowInLegend(Value:Boolean);
Procedure SetTitle(Const Value:String);
protected
InternalUse : Boolean;
Procedure Added; dynamic;
Procedure CalcHorizMargins(Var LeftMargin,RightMargin:Integer); virtual;
Procedure CalcVerticalMargins(Var TopMargin,BottomMargin:Integer); virtual;
procedure DefineProperties(Filer: TFiler); override;
procedure DoBeforeDrawChart; virtual;
Procedure GalleryChanged3D(Is3D:Boolean); dynamic;
Procedure Removed; dynamic;
Procedure SetActive(Value:Boolean); override;
public
Constructor Create(AOwner: TComponent); override;
procedure Assign(Source:TPersistent); override;
Function SameClass(tmpSeries:TChartSeries):Boolean;
property ShowInLegend:Boolean read FShowInLegend write SetShowInLegend default True;
property Title:String read FTitle write SetTitle;
{ DSS, hidden }
property Identifier:String read FIdentifier write FIdentifier;
property Style:TChartSeriesStyle read FStyle write FStyle default [];
end;
TSeriesRandomBounds=packed record
tmpX,StepX,tmpY,MinY,DifY:Double;
end;
TTeeFunctionClass=class of TTeeFunction;
TTeeSeriesType=class(TObject)
SeriesClass : TChartSeriesClass;
FunctionClass : TTeeFunctionClass;
Description : PString;
GalleryPage : PString;
NumGallerySeries : Integer;
end;
TChartSubGalleryProc=Function(Const AName:String):TCustomAxisPanel of object;
TLegendTextStyle=( ltsPlain,ltsLeftValue,ltsRightValue,
ltsLeftPercent,ltsRightPercent,ltsXValue,ltsValue,
ltsPercent,ltsXAndValue,ltsXAndPercent);
TeeFormatFlags = (tfNoMandatory,tfColor,tfLabel,tfMarkPosition);
TeeFormatFlag = set of TeeFormatFlags;
TLabelsList=class(TList)
private
Series : TChartSeries;
Procedure DeleteLabel(ValueIndex:Integer);
Function GetLabel(ValueIndex:Integer):String;
Procedure SetLabel(ValueIndex:Integer; Const ALabel:String);
Procedure InsertLabel(ValueIndex:Integer; Const ALabel:String);
public
procedure Assign(Source:TLabelsList);
procedure Clear; override;
Function IndexOfLabel(const ALabel:String; CaseSensitive:Boolean=True):Integer;
property Labels[Index:Integer]:String read GetLabel write SetLabel; default;
end;
TChartSeries=class(TCustomChartSeries)
private
FColor : TColor;
FColorEachPoint : Boolean;
FColors : TList;
FColorSource : String;
FCursor : TCursor;
FDataSources : TList;
FDepth : Integer;
FFirstVisibleIndex : Integer;
FGetHorizAxis : TChartAxis;
FGetVertAxis : TChartAxis;
FLabelsSource : String;
FLastVisibleIndex : Integer;
FLinkedSeries : TChartSeriesList;
FMarks : TSeriesMarks;
FPercentFormat : String;
FTempDataSources : TStringList;
FValueFormat : String;
FValuesList : TChartValueLists;
FX : TChartValueList;
FLabels : TLabelsList;
FY : TChartValueList;
FHorizAxis : THorizAxis;
FCustomHorizAxis : TChartAxis;
FCustomVertAxis : TChartAxis;
FZOrder : Integer;
FVertAxis : TVertAxis;
FRecalcOptions : TSeriesRecalcOptions;
FTeeFunction : TTeeFunction;
{ Private }
IsMouseInside : Boolean;
ILabelOrder : TChartListOrder;
{ Events }
FAfterDrawValues : TNotifyEvent;
FBeforeDrawValues : TNotifyEvent;
FOnAfterAdd : TSeriesOnAfterAdd;
FOnBeforeAdd : TSeriesOnBeforeAdd;
FOnClearValues : TSeriesOnClear;
FOnClick : TSeriesClick;
FOnDblClick : TSeriesClick;
FOnGetMarkText : TSeriesOnGetMarkText;
FOnMouseEnter : TNotifyEvent;
FOnMouseLeave : TNotifyEvent;
Function CanAddRandomPoints:Boolean;
Function CompareLabelIndex(a,b:Integer):Integer;
Function GetDataSource:TComponent;
Function GetZOrder:Integer;
Procedure GrowColors;
Procedure InternalAddDataSource(Value:TComponent);
Function IsPercentFormatStored:Boolean;
Function IsValueFormatStored:Boolean;
procedure ReadCustomHorizAxis(Reader: TReader);
procedure ReadCustomVertAxis(Reader: TReader);
procedure ReadDataSources(Reader: TReader);
Procedure RecalcGetAxis;
Procedure RemoveAllLinkedSeries;
Procedure SetColorSource(Const Value:String);
Procedure SetCustomHorizAxis(Value:TChartAxis);
Procedure SetCustomVertAxis(Value:TChartAxis);
Procedure SetDataSource(Value:TComponent);
procedure SetDepth(const Value: Integer);
Procedure SetHorizAxis(const Value:THorizAxis);
Procedure SetLabelsSource(Const Value:String);
procedure SetMarks(Value:TSeriesMarks);
Procedure SetPercentFormat(Const Value:String);
Procedure SetValueColor(ValueIndex:Integer; AColor:TColor);
Procedure SetValueFormat(Const Value:String);
Procedure SetVertAxis(const Value:TVertAxis);
Procedure SetXValue(Index:Integer; Const Value:Double);
Procedure SetYValue(Index:Integer; Const Value:Double);
Procedure SetZOrder(Value:Integer);
procedure WriteCustomHorizAxis(Writer: TWriter);
procedure WriteCustomVertAxis(Writer: TWriter);
procedure WriteDataSources(Writer: TWriter);
function GetXLabel(Index: Integer): String;
procedure SetXLabel(Index: Integer; const Value: String);
protected
DontSaveData : Boolean;
ForceSaveData : Boolean;
ManualData : Boolean;
INumSampleValues : Integer;
IUpdating : Integer;
IUseSeriesColor : Boolean;
IUseNotMandatory : Boolean;
IZOrder : Integer;
ILegend : TTeeCustomShape;
IFirstDrawIndex : Integer;
Function AddChartValue(Source:TChartSeries; ValueIndex:Integer):Integer; virtual;
Procedure Added; override;
Procedure AddedValue(Source:TChartSeries; ValueIndex:Integer); virtual;
Procedure AddLinkedSeries(ASeries:TChartSeries);
Procedure AddSampleValues(NumValues:Integer); dynamic;
Procedure AddValues(Source:TChartSeries); virtual;
Procedure CalcFirstLastVisibleIndex;
Procedure CalcZOrder; virtual;
Function CheckMouse(x,y:Integer):Boolean;
Procedure ClearLists; virtual;
class Procedure CreateSubGallery(AddSubChart:TChartSubGalleryProc); virtual;
procedure DefineProperties(Filer: TFiler); override;
Procedure DeletedValue(Source:TChartSeries; ValueIndex:Integer); virtual;
procedure DoAfterDrawValues; virtual;
procedure DoBeforeDrawValues; virtual;
procedure DrawAllValues; virtual;
Procedure DrawLegendShape(ValueIndex:Integer; Const Rect:TRect); virtual;
Procedure DrawMark(ValueIndex:Integer; Const St:String; APosition:TSeriesMarkPosition); virtual;
procedure DrawMarks;
procedure DrawValue(ValueIndex:Integer); virtual;
Function FirstInZOrder:Boolean;
Procedure GetChildren(Proc:TGetChildProc; Root:TComponent); override;
Function GetMarkText(ValueIndex:Integer):String;
Function GetValueColor(ValueIndex:Integer):TColor; virtual;
Function GetxValue(ValueIndex:Integer):Double; virtual; { conflicts with c++ wingdi.h }
Function GetyValue(ValueIndex:Integer):Double; virtual; { conflicts with c++ wingdi.h }
Function InternalColor(ValueIndex:Integer):TColor;
Procedure Loaded; override;
procedure Notification( AComponent: TComponent;
Operation: TOperation); override;
Procedure NotifyNewValue(Sender:TChartSeries; ValueIndex:Integer); virtual;
Procedure NotifyValue(ValueEvent:TValueEvent; ValueIndex:Integer); virtual;
Function MoreSameZOrder:Boolean; virtual;
Procedure PrepareForGallery(IsEnabled:Boolean); dynamic;
Procedure PrepareLegendCanvas( ValueIndex:Integer; Var BackColor:TColor;
Var BrushStyle:TBrushStyle); virtual;
procedure ReadData(Stream: TStream);
Procedure Removed; override;
Procedure RemoveLinkedSeries(ASeries:TChartSeries);
Procedure SetChartValueList( AValueList:TChartValueList;
Value:TChartValueList);
Procedure SetColorEachPoint(Value:Boolean); virtual;
Procedure SetHorizontal;
Procedure SetParentChart(Const Value:TCustomAxisPanel); override;
Procedure SetSeriesColor(AColor:TColor); virtual;
class Procedure SetSubGallery(ASeries:TChartSeries; Index:Integer); virtual;
Procedure SetXValues(Value:TChartValueList);
Procedure SetYValues(Value:TChartValueList);
procedure WriteData(Stream: TStream); dynamic;
public
CalcVisiblePoints : Boolean;
DrawBetweenPoints : Boolean;
AllowSinglePoint : Boolean;
HasZValues : Boolean;
StartZ : Integer;
MiddleZ : Integer;
EndZ : Integer;
MandatoryValueList : TChartValueList;
NotMandatoryValueList : TChartValueList;
YMandatory : Boolean;
Constructor Create(AOwner: TComponent); override;
Destructor Destroy; override;
Function Add(Const AValue:Double; Const ALabel:String='';
AColor:TColor=clTeeColor):Integer; virtual;
Function AddArray(Const Values:Array of TChartValue):Integer; overload;
Function AddNull(Const Value:Double):Integer; overload;
Function AddNull(Const ALabel:String=''):Integer; overload; virtual;
Function AddNullXY(Const X,Y:Double; Const ALabel:String=''):Integer; virtual;
Function AddX(Const AXValue:Double; Const ALabel:String='';
AColor:TColor=clTeeColor):Integer;
Function AddXY(Const AXValue,AYValue:Double; Const ALabel:String='';
AColor:TColor=clTeeColor):Integer; virtual;
Function AddY(Const AYValue:Double; Const ALabel:String='';
AColor:TColor=clTeeColor):Integer;
procedure Assign(Source:TPersistent); override;
procedure AssignFormat(Source:TChartSeries);
Function AssociatedToAxis(Axis:TChartAxis):Boolean; virtual;
Procedure BeginUpdate;
Procedure CheckOrder; dynamic;
Procedure Clear; virtual;
Function Count:Integer;
Function CountLegendItems:Integer; virtual;
Procedure Delete(ValueIndex:Integer); overload; virtual;
Procedure Delete(Start,Quantity:Integer); overload; virtual;
Procedure EndUpdate;
Procedure FillSampleValues(NumValues:Integer=0); dynamic;
Function IsNull(ValueIndex:Integer):Boolean;
Function IsValidSourceOf(Value:TChartSeries):Boolean; dynamic;
Function IsValidSeriesSource(Value:TChartSeries):Boolean; dynamic;
Function LegendToValueIndex(LegendIndex:Integer):Integer; virtual;
Function LegendItemColor(LegendIndex:Integer):TColor; virtual;
Function LegendString(LegendIndex:Integer; LegendTextStyle:TLegendTextStyle):String; virtual;
property LinkedSeries:TChartSeriesList read FLinkedSeries;
Function MaxXValue:Double; virtual;
Function MaxYValue:Double; virtual;
Function MaxZValue:Double; virtual;
Function MinXValue:Double; virtual;
Function MinYValue:Double; virtual;
Function MinZValue:Double; virtual;
Function NumSampleValues:Integer; dynamic;
Function RandomBounds(NumValues:Integer):TSeriesRandomBounds;
Procedure RemoveDataSource(Value:TComponent);
Procedure SetNull(ValueIndex:Integer; Null:Boolean=True); // 6.0
Procedure SortByLabels(Order:TChartListOrder=loAscending); // 6.0
Function VisibleCount:Integer; { <-- Number of VISIBLE points (Last-First+1) }
property ValuesList:TChartValueLists read FValuesList;
property XValue[Index:Integer]:Double read GetxValue write SetXValue;
property YValue[Index:Integer]:Double read GetyValue write SetYValue;
property ZOrder:Integer read GetZOrder write SetZOrder default TeeAutoZOrder;
Function MaxMarkWidth:Integer;
Function CalcXPos(ValueIndex:Integer):Integer; virtual;
Function CalcXPosValue(Const Value:Double):Integer;
Function CalcXSizeValue(Const Value:Double):Integer;
Function CalcYPos(ValueIndex:Integer):Integer; virtual;
Function CalcYPosValue(Const Value:Double):Integer;
Function CalcYSizeValue(Const Value:Double):Integer;
Function CalcPosValue(Const Value:Double):Integer;
Function XScreenToValue(ScreenPos:Integer):Double;
Function YScreenToValue(ScreenPos:Integer):Double;
Function XValueToText(Const AValue:Double):String;
Function YValueToText(Const AValue:Double):String;
Procedure ColorRange( AValueList:TChartValueList;
Const FromValue,ToValue:Double;
AColor:TColor);
Procedure CheckDataSource;
{ Public Properties }
property Labels:TLabelsList read FLabels;
property XLabel[Index:Integer]:String read GetXLabel write SetXLabel; // deprecated (obsolete)
property ValueMarkText[Index:Integer]:String read GetMarkText;
property ValueColor[Index:Integer]:TColor read GetValueColor write SetValueColor;
property XValues:TChartValueList read FX write SetXValues;
property YValues:TChartValueList read FY writ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -