📄 teeediseri.pas
字号:
begin
ChartGrid1.Chart:=TCustomChart(TheSeries.ParentChart);
ChartGrid1.Series:=TheSeries;
ChartGrid1.Visible:=True;
ChartGridNavigator1.Visible:=True;
end;
Panel4.Visible:=False;
if CBDataSourceStyle.ItemIndex=1 then
begin
Panel4.Visible:=True;
tmpNum:=TChartSeriesAccess(TheSeries).INumSampleValues;
CheckCBSamples;
if tmpNum=0 then tmpNum:=TheSeries.NumSampleValues;
ESamples.Text:=IntToStr(tmpNum);
end
else
if CBDataSourceStyle.ItemIndex>1 then
begin
With CBDataSourceStyle do
if ItemIndex=2 then
tmpForm:=TFormClass(Items.Objects[2]).Create(Self)
else
begin
tmpSource:=TTeeSeriesSourceClass(Items.Objects[ItemIndex]);
if tmpSource.HasNew then
begin
EnableButton(NewDataButton);
EnableButton(EditDataButton);
EnableButton(DeleteDataButton);
end;
tmpForm:=TFormClass(tmpSource.Editor).Create(Self);
end;
DataSourceStyle:=TBaseSourceEditor(tmpForm);
DataSourceStyle.Align:=alClient;
AddFormTo(DataSourceStyle,Panel2,TheSeries);
TeeTranslateControl(tmpForm); // 7.02
// Hack.
Timer1.Enabled:=True;
end;
end;
end;
procedure TFormTeeSeries.CBShowInLegendClick(Sender: TObject);
begin
TheSeries.ShowInLegend:=CBShowInLegend.Checked;
end;
procedure TFormTeeSeries.CBCursorChange(Sender: TObject);
begin
with TheSeries do
Cursor:=TeeSetCursor(Cursor,CBCursor.Items[CBCursor.ItemIndex]);
end;
procedure TFormTeeSeries.SEArrowLengthChange(Sender: TObject);
begin
if CanModifySeries then
TheSeries.Marks.Callout.Length:=UDArrowsLength.Position;
end;
procedure TFormTeeSeries.CBMarkClipClick(Sender: TObject);
begin
TheSeries.Marks.Clip:=CBMarkClip.Checked;
end;
procedure TFormTeeSeries.CBMarksVisibleClick(Sender: TObject);
var Old : Boolean;
begin
TheSeries.Marks.Visible:=CBMarksVisible.Checked;
Old:=ChangingPage;
ChangingPage:=True;
CBAllVisible.Checked:=AllSeriesMarksVisible;
ChangingPage:=Old;
end;
procedure TFormTeeSeries.FormDestroy(Sender: TObject);
begin
DestroySeriesForms;
if Assigned(TheChart) then
{$IFNDEF CLR}TTeePanelAccess{$ENDIF}(TheChart).RemoveListener(Self);
end;
procedure TFormTeeSeries.FormShow(Sender: TObject);
begin
CreatingForm:=False;
if Assigned(InternalOnCreateEditSeries) and Assigned(TheSeries) then
InternalOnCreateEditSeries(Self,TCustomChart(TheSeries.ParentChart));
if Assigned(InternalOnCreateEditSeriesObj) and Assigned(TheSeries) then
InternalOnCreateEditSeriesObj(Self,TCustomChart(TheSeries.ParentChart));
CBShowInEditor.Visible:=csDesigning in TheSeries.ComponentState;
CBShowInEditor.Checked:=TheSeries.ShowInEditor;
end;
procedure TFormTeeSeries.SEMarksAngleChange(Sender: TObject);
begin
if CanModifySeries then
TheSeries.Marks.Angle:=UDMarksAngle.Position;
end;
procedure TFormTeeSeries.CBHorizAxisChange(Sender: TObject);
begin
With CBHorizAxis do
if ItemIndex<3 then
TheSeries.HorizAxis:=THorizAxis(ItemIndex)
else
begin
TheSeries.HorizAxis:=aCustomHorizAxis;
TheSeries.CustomHorizAxis:=TChartAxis(Items.Objects[ItemIndex]);
end;
end;
procedure TFormTeeSeries.CBVertAxisChange(Sender: TObject);
begin
With CBVertAxis do
if ItemIndex<3 then
TheSeries.VertAxis:=TVertAxis(ItemIndex)
else
begin
TheSeries.VertAxis:=aCustomVertAxis;
TheSeries.CustomVertAxis:=TChartAxis(Items.Objects[ItemIndex]);
end;
end;
procedure TFormTeeSeries.EMarksEveryChange(Sender: TObject);
begin
if CanModifySeries then // 5.02
TheSeries.Marks.DrawEvery:=UDEvery.Position;
end;
procedure TFormTeeSeries.CBMultiLineClick(Sender: TObject);
begin
TheSeries.Marks.MultiLine:=CBMultiLine.Checked;
end;
procedure TFormTeeSeries.CBSortChange(Sender: TObject);
begin // Change sorting order...
With TheSeries do
begin
NotMandatoryValueList.Order:=loNone;
if CBSort.ItemIndex=2 then MandatoryValueList.Order:=loNone
else
begin
if CBSort.ItemIndex=0 then MandatoryValueList.Order:=loAscending
else MandatoryValueList.Order:=loDescending;
CheckOrder;
end;
end;
end;
procedure TFormTeeSeries.CBFormatChange(Sender: TObject);
begin
TheSeries.ValueFormat:=LocalToDelphiFormat(CBFormat.Text);
end;
Function TFormTeeSeries.CheckCanClose:Boolean;
begin
if Assigned(DataSourceStyle) then result:=DataSourceStyle.CloseQuery
else result:=True;
end;
procedure TFormTeeSeries.PageSeriesChanging(Sender: TObject;
var AllowChange: Boolean);
begin
AllowChange:=CheckCanClose;
if Sender<>Owner then
ChangingPage:=AllowChange;
end;
procedure TFormTeeSeries.CBDepthClick(Sender: TObject);
begin
if CanModifySeries then
if CBDepth.Checked then TheSeries.Depth:=-1
else TheSeries.Depth:=UDDepth.Position;
end;
Function TFormTeeSeries.CanModifySeries:Boolean;
begin
result:=(not CreatingForm) and (not ChangingPage) and Assigned(TheSeries); // 7.0
end;
procedure TFormTeeSeries.EDepthChange(Sender: TObject);
begin
if CanModifySeries then
begin
TheSeries.Depth:=UDDepth.Position;
CBDepth.Checked:=False;
end;
end;
procedure TFormTeeSeries.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose:=CheckCanClose;
end;
procedure TFormTeeSeries.CBAllVisibleClick(Sender: TObject);
var t : Integer;
begin
if CanModifySeries then
begin
With TheSeries.ParentChart do
for t:=0 to SeriesCount-1 do
Series[t].Marks.Visible:=CBAllVisible.Checked;
CBMarksVisible.Checked:=CBAllVisible.Checked;
end;
end;
procedure TFormTeeSeries.PaintBox1Paint(Sender: TObject);
var R : TRect;
begin
if Assigned(TheSeries) then
begin
with PaintBox1.Canvas do
begin
Brush.Style:=bsSolid;
Brush.Color:=PaintBox1.Color;
R:=PaintBox1.ClientRect;
InflateRect(R,0,-4);
FillRect(R);
end;
PaintSeriesLegend(TheSeries,PaintBox1.Canvas,R);
end;
end;
procedure TFormTeeSeries.PaintBox1Click(Sender: TObject);
var tmp : TColor;
begin
if Assigned(TheSeries) then
begin
tmp:=TheSeries.SeriesColor;
if EditColorDialog(Self,tmp) then
begin
TheSeries.SeriesColor:=tmp;
PaintBox1.Repaint;
end;
end;
end;
procedure TFormTeeSeries.CBSamplesDefaultClick(Sender: TObject);
begin
if CBSamplesDefault.Checked then
begin
ESamples.Text:=IntToStr(TheSeries.NumSampleValues);
CBSamplesDefault.Enabled:=False;
end;
end;
procedure TFormTeeSeries.CheckCBSamples;
var tmpNum : Integer;
begin
tmpNum:=TChartSeriesAccess(TheSeries).INumSampleValues;
CBSamplesDefault.Checked:=(tmpNum=0) or (tmpNum=TheSeries.NumSampleValues);
CBSamplesDefault.Enabled:=not CBSamplesDefault.Checked;
end;
procedure TFormTeeSeries.ESamplesChange(Sender: TObject);
var tmpNum : Integer;
begin
tmpNum:=StrToIntDef(ESamples.Text,0);
TChartSeriesAccess(TheSeries).INumSampleValues:=tmpNum;
CheckCBSamples;
BApplyRandom.Enabled:=True;
end;
procedure TFormTeeSeries.BApplyRandomClick(Sender: TObject);
var tmpNum : Integer;
begin
tmpNum:=TChartSeriesAccess(TheSeries).INumSampleValues;
if tmpNum=0 then TheSeries.FillSampleValues
else TheSeries.FillSampleValues(tmpNum);
end;
procedure TFormTeeSeries.TeeEvent(Event:TTeeEvent);
begin
if not (csDestroying in ComponentState) then
if Event is TTeeSeriesEvent then
With TTeeSeriesEvent(Event) do
if Event=seChangeColor then PaintBox1.Invalidate
else
if (Event=seRemove) and (Series=TheSeries) then
begin
DestroySeriesForms;
TheSeries:=nil;
CBSeriesChange(Self);
end;
end;
procedure TFormTeeSeries.EArrowDistChange(Sender: TObject);
begin
if CanModifySeries then
TheSeries.Marks.Callout.Distance:=UDArrowDist.Position;
end;
procedure TFormTeeSeries.BCalloutPointerClick(Sender: TObject);
begin
EditSeriesPointer(Self,TheSeries.Marks.Callout);
end;
procedure TFormTeeSeries.CBHeadChange(Sender: TObject);
begin
if CanModifySeries then
TheSeries.Marks.Callout.ArrowHead:=TArrowHeadStyle(CBHead.ItemIndex);
end;
procedure TFormTeeSeries.Edit1Change(Sender: TObject);
begin
if CanModifySeries then
TheSeries.Marks.Callout.ArrowHeadSize:=UDHeadSize.Position;
end;
procedure TFormTeeSeries.ChartGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
begin
if ChartGrid1.Series<>nil then
ChartGrid1.Series.RefreshSeries;
end;
procedure TFormTeeSeries.Timer1Timer(Sender: TObject);
begin
// VCL bug workaround:
// Force pagecontrol to re-show again our tab with the correct controls on it.
// This must be done using a timer to delay until parent form is totally
// visible. Anybody knows a better solution?
Timer1.Enabled:=False;
{$IFNDEF CLX}
PageSeries.ActivePage:=nil;
PageSeries.ActivePage:=TabDataSource;
{$ENDIF}
end;
Function TFormTeeSeries.FindZList:TChartValueList;
begin
result:=TChartSeriesAccess(TheSeries).ValueListOfAxis(TheSeries.ParentChart.DepthAxis);
if not Assigned(result) then
result:=TChartSeriesAccess(TheSeries).ValueListOfAxis(TheSeries.ParentChart.DepthTopAxis);
end;
procedure TFormTeeSeries.CBZDateTimeClick(Sender: TObject);
var tmpList : TChartValueList;
begin
tmpList:=FindZList;
if Assigned(tmpList) then
tmpList.DateTime:=CBZDateTime.Checked
else
CBZDateTime.Hide;
end;
procedure TFormTeeSeries.Button1Click(Sender: TObject);
begin
CBFormat.Text:=TFormatEditor.Change(Self,CBFormat.Text);
CBFormatChange(Self);
end;
procedure TFormTeeSeries.Button2Click(Sender: TObject);
begin
EPercentFormat.Text:=TFormatEditor.Change(Self,EPercentFormat.Text);
EPercentFormatChange(Self);
end;
procedure TFormTeeSeries.Button3Click(Sender: TObject);
begin
TheSeries.Clear;
CBDataSourcestyle.ItemIndex:=0;
CBDataSourcestyleChange(Self);
end;
procedure TFormTeeSeries.CBShowInEditorClick(Sender: TObject);
begin
TheSeries.ShowInEditor:=CBShowInEditor.Checked;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -