📄 teeediseri.pas
字号:
{**************************************************}
{ TCustomChartSeries (or derived) Editor Dialog }
{ Copyright (c) 1996-2004 by David Berneda }
{**************************************************}
unit TeeEdiSeri;
{$I TeeDefs.inc}
interface
uses {$IFNDEF LINUX}
Windows, Messages,
{$ENDIF}
SysUtils, Classes,
{$IFDEF CLX}
QGraphics, QControls, QForms, QDialogs, QStdCtrls, QExtCtrls, QComCtrls,
QButtons, QGrids, QTypes,
{$ELSE}
Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, Buttons,
Grids,
{$ENDIF}
{$IFDEF LINUX}
Types,
{$ENDIF}
TeEngine, TeeCustomShapeEditor, TeeProcs, TeCanvas, TeePenDlg,
Chart, TeeSourceEdit, TeeChartGrid, TeeNavigator, TeeLisB;
type
TFormTeeSeries = class(TForm,ITeeEventListener)
CBPersistent: TCheckBox;
PageSeries: TPageControl;
TheTabSheet: TTabSheet;
TabGeneral: TTabSheet;
GB5: TGroupBox;
L27: TLabel;
CBShowInLegend: TCheckBox;
CBCursor: TComboFlat;
GB2: TGroupBox;
L15: TLabel;
L21: TLabel;
EPercentFormat: TEdit;
TabMarks: TTabSheet;
TabDataSource: TTabSheet;
GBHorizAxis: TGroupBox;
CBHorizAxis: TComboFlat;
CBXDateTime: TCheckBox;
GBVertAxis: TGroupBox;
CBVertAxis: TComboFlat;
CBYDateTime: TCheckBox;
PageControlMarks: TPageControl;
TabSheet1: TTabSheet;
CBMarksVisible: TCheckBox;
CBMarkClip: TCheckBox;
L23: TLabel;
SEMarksAngle: TEdit;
UDMarksAngle: TUpDown;
Label3: TLabel;
EMarksEvery: TEdit;
UDEvery: TUpDown;
CBMultiLine: TCheckBox;
LSort: TLabel;
CBSort: TComboFlat;
CBSeries: TComboFlat;
ImageSeries: TImage;
LabelSeriesClass: TLabel;
Panel1: TPanel;
CBFormat: TComboFlat;
Panel2: TPanel;
PanTop: TPanel;
CBDataSourcestyle: TComboFlat;
LDepth: TLabel;
EDepth: TEdit;
UDDepth: TUpDown;
CBDepth: TCheckBox;
CBAllVisible: TCheckBox;
PaintBox1: TPaintBox;
Panel3: TPanel;
RGMarkStyle: TComboFlat;
Label1: TLabel;
NewDataButton: TButton;
EditDataButton: TButton;
DeleteDataButton: TButton;
ChartGrid1: TChartGrid;
ChartGridNavigator1: TChartGridNavigator;
Panel4: TPanel;
Label2: TLabel;
ESamples: TEdit;
CBSamplesDefault: TCheckBox;
BApplyRandom: TButton;
TabSheet2: TTabSheet;
BMarkLinCol: TButtonPen;
L32: TLabel;
SEArrowLength: TEdit;
UDArrowsLength: TUpDown;
Label4: TLabel;
EArrowDist: TEdit;
UDArrowDist: TUpDown;
BCalloutPointer: TButton;
Label11: TLabel;
CBHead: TComboFlat;
Label12: TLabel;
Edit1: TEdit;
UDHeadSize: TUpDown;
Timer1: TTimer;
TabSymbol: TTabSheet;
CBZDateTime: TCheckBox;
Button1: TButton;
Button2: TButton;
procedure EPercentFormatChange(Sender: TObject);
procedure PageSeriesChange(Sender: TObject);
procedure CBSeriesChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RGMarkStyleClick(Sender: TObject);
procedure CBPersistentClick(Sender: TObject);
procedure CBYDateTimeClick(Sender: TObject);
procedure CBXDateTimeClick(Sender: TObject);
procedure CBDataSourcestyleChange(Sender: TObject);
procedure CBShowInLegendClick(Sender: TObject);
procedure CBCursorChange(Sender: TObject);
procedure SEArrowLengthChange(Sender: TObject);
procedure CBMarkClipClick(Sender: TObject);
procedure CBMarksVisibleClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SEMarksAngleChange(Sender: TObject);
procedure CBHorizAxisChange(Sender: TObject);
procedure CBVertAxisChange(Sender: TObject);
procedure EMarksEveryChange(Sender: TObject);
procedure CBMultiLineClick(Sender: TObject);
procedure CBSortChange(Sender: TObject);
procedure CBFormatChange(Sender: TObject);
procedure PageSeriesChanging(Sender: TObject;
var AllowChange: Boolean);
procedure CBDepthClick(Sender: TObject);
procedure EDepthChange(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure CBAllVisibleClick(Sender: TObject);
procedure PaintBox1Paint(Sender: TObject);
procedure PaintBox1Click(Sender: TObject);
procedure CBSamplesDefaultClick(Sender: TObject);
procedure ESamplesChange(Sender: TObject);
procedure BApplyRandomClick(Sender: TObject);
procedure EArrowDistChange(Sender: TObject);
procedure BCalloutPointerClick(Sender: TObject);
procedure CBHeadChange(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure ChartGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
procedure Timer1Timer(Sender: TObject);
procedure CBZDateTimeClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
TheChart : TCustomAxisPanel;
TheSeriesForms : Array[1..4] of TForm;
NumSeriesForms : Integer;
CreatingForm : Boolean;
ChangingPage : Boolean;
IMarksObject : TFormTeeShape;
IMarksSymbol : TFormTeeShape;
LastSeries : TChartSeries;
Function AddToTab(AForm:TForm; ATab:TTabSheet; AObject:TPersistent):TForm;
Function AllSeriesMarksVisible:Boolean;
Function CanModifySeries:Boolean;
Function CheckCanClose:Boolean;
procedure CheckCBSamples;
procedure DestroyDataSourceForm;
procedure EnableMultiLine;
procedure FillAxis(Items:TStrings; Horizontal:Boolean);
Function FindZList:TChartValueList; // 7.0
procedure SetTabDataSource;
{$IFDEF CLR}
protected
{$ENDIF}
procedure TeeEvent(Event: TTeeEvent); { interface }
protected
procedure CreateDataSourceForm;
public
{ Public declarations }
TheSeries : TChartSeries;
IsDssGraph : Boolean;
ShowTabDataSource : Boolean;
ShowTabGeneral : Boolean;
ShowTabMarks : Boolean;
DataSourceStyle : TBaseSourceEditor;
TheListBox : TChartListBox;
procedure DestroySeriesForms;
Procedure FillAxes;
Function InsertSeriesForm( EditorClass:TFormClass;
Position:Integer;
Const EditorTabName:String;
AnObject:TPersistent):TCustomForm;
class Function MarkSymbolsForm(AOwner: TComponent;
Symbol:TSeriesMarksSymbol;
AParent:TWinControl=nil):TFormTeeShape;
Procedure SetCBSeries;
end;
{ Used by TeeChart Pro ActiveX and TeeChartOffice }
TOnCreateEditSeries=Procedure(Sender:TFormTeeSeries; AChart:TCustomChart);
TOnCreateEditSeriesObj=Procedure(Sender:TFormTeeSeries; AChart:TCustomChart) of object;
var InternalOnCreateEditSeries:TOnCreateEditSeries=nil;
InternalOnCreateEditSeriesObj:TOnCreateEditSeriesObj=nil;
Function SeriesEditorForm(Series:TChartSeries):TFormClass;
implementation
{$IFNDEF CLX}
{$R *.DFM}
{$ELSE}
{$R *.xfm}
{$ENDIF}
Uses TeeConst, TeeGally, TeeBrushDlg, TeeFuncEdit,
TeePoEdi, TeeFormatting,
Series {<-because TPointSeries editor trick} ;
{ TFormTeeSeries}
procedure TFormTeeSeries.EPercentFormatChange(Sender: TObject);
begin
TheSeries.PercentFormat:=LocalToDelphiFormat(EPercentFormat.Text);
end;
Procedure TFormTeeSeries.SetCBSeries;
begin
if Assigned(TheSeries) then
begin
CBSeries.ItemIndex:=CBSeries.Items.IndexOfObject(TheSeries);
CBSeriesChange(Self);
end
else PageSeries.Visible:=False;
end;
procedure TFormTeeSeries.EnableMultiLine;
begin
CBMultiLine.Enabled:=TheSeries.Marks.Style in
[smsLabelPercent,smsLabelValue,smsPercentTotal,smsLabelPercentTotal,smsXY];
end;
procedure TFormTeeSeries.FillAxis(Items:TStrings; Horizontal:Boolean);
var t : Integer;
begin
With Items do While Count>3 do Delete(Count-1);
With TheSeries.ParentChart do
begin
for t:=TeeInitialCustomAxis to Axes.Count-1 do
if (Axes[t].Horizontal and Horizontal) or
((not Axes[t].Horizontal) and (not Horizontal)) then
Items.AddObject(TeeMsg_CustomAxesEditor+' '+IntToStr(t-TeeInitialCustomAxis),Axes[t]);
end;
end;
Function TFormTeeSeries.AllSeriesMarksVisible:Boolean;
var t : Integer;
begin
result:=True;
With TheSeries.ParentChart do
for t:=0 to SeriesCount-1 do
if not Series[t].Marks.Visible then
begin
result:=False;
exit;
end;
end;
class Function TFormTeeSeries.MarkSymbolsForm(AOwner: TComponent;
Symbol:TSeriesMarksSymbol; AParent:TWinControl=nil):TFormTeeShape;
var tmp : TCheckBox;
begin
result:=TFormTeeShape.CreateForm(AOwner,Symbol,AParent); // 7.0
with result do
begin
BBackColor.Hide;
PC1.HandleNeeded;
TabText.TabVisible:=False;
tmp:=TCheckBox.Create(result);
with tmp do
begin
Left:=BBackColor.Left;
Top:=BBackColor.Top;
Width:=BBackColor.Width;
Caption:='&Visible';
Checked:=Symbol.Visible;
OnClick:=CBVisibleChecked;
Parent:=TabFormat;
end;
end;
end;
procedure TFormTeeSeries.PageSeriesChange(Sender: TObject);
procedure SetTabSeriesMarks;
begin
if not Assigned(IMarksObject) then
begin
IMarksObject:=InsertTeeObjectForm(PageControlMarks,nil);
IMarksSymbol:=MarkSymbolsForm(Self,TheSeries.Marks.Symbol,TabSymbol);
end;
With TheSeries.Marks do
begin
RGMarkStyle.ItemIndex :=Ord(Style);
UDArrowsLength.Position:=Callout.Length;
UDArrowDist.Position :=Callout.Distance;
UDMarksAngle.Position :=Angle;
CBMarkClip.Checked :=Clip;
UDEvery.Position :=DrawEvery;
CBMultiLine.Checked :=MultiLine;
CBMarksVisible.Checked :=Visible;
BMarkLinCol.LinkPen(Callout.Arrow);
CBHead.ItemIndex :=Ord(Callout.ArrowHead);
UDHeadSize.Position :=Callout.ArrowHeadSize;
end;
CBAllVisible.Checked:=AllSeriesMarksVisible;
EnableMultiLine;
IMarksObject.RefreshControls(TheSeries.Marks);
IMarksSymbol.RefreshControls(TheSeries.Marks.Symbol);
end;
procedure SetTabSeriesGeneral;
var tmpSt : String;
tmpCursor : TCursor;
tmpList : TChartValueList;
begin
if Assigned(TheSeries) then
With TheSeries do
begin
CBShowInLegend.Checked :=ShowInLegend;
CBDepth.Checked :=Depth=-1;
if Depth=-1 then UDDepth.Position:=0
else UDDepth.Position:=Depth;
AddDefaultValueFormats(CBFormat.Items);
tmpSt:=DelphiToLocalFormat(ValueFormat);
With CBFormat.Items do if IndexOf(tmpSt)=-1 then Add(tmpSt);
CBFormat.Text:=tmpSt;
EPercentFormat.Text:=DelphiToLocalFormat(PercentFormat);
FillAxes;
With CBHorizAxis do
Case TheSeries.HorizAxis of
aTopAxis: ItemIndex:=0;
aBottomAxis: ItemIndex:=1;
aBothHorizAxis: ItemIndex:=2;
else
ItemIndex:=Items.IndexOfObject(TheSeries.CustomHorizAxis);
end;
With CBVertAxis do
Case TheSeries.VertAxis of
aLeftAxis: ItemIndex:=0;
aRightAxis: ItemIndex:=1;
aBothVertAxis: ItemIndex:=2;
else
ItemIndex:=Items.IndexOfObject(TheSeries.CustomVertAxis);
end;
CBXDateTime.Checked:=XValues.DateTime;
CBYDateTime.Checked:=YValues.DateTime;
tmpList:=FindZList;
CBZDateTime.Visible:=Assigned(tmpList);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -