📄 teeeditcha.pas
字号:
tmpSeries:=Chart.GetASeries;
With TFormTee3D(Tab3D.Controls[0]) do
begin
AllowRotation:=TheChart.Canvas.SupportsFullRotation or
(not Assigned(tmpSeries)) or
(not (tmpSeries is TPieSeries));
CheckRotation;
end;
end;
end;
procedure TChartEditForm.BCloseClick(Sender: TObject);
begin
ModalResult:=mrCancel;
end;
procedure TChartEditForm.BMoveUPClick(Sender: TObject);
begin
LBSeries.MoveCurrentUp;
end;
procedure TChartEditForm.BMoveDownClick(Sender: TObject);
begin
LBSeries.MoveCurrentDown;
end;
procedure TChartEditForm.BAddSeriesClick(Sender: TObject);
var tmpSeries : TChartSeries;
begin
tmpSeries:=LBSeries.AddSeriesGallery;
if Assigned(tmpSeries) and Assigned(tmpSeries.FunctionType) then
begin
TheSeries:=tmpSeries;
MainPage.ActivePage:=TabSeries;
SetTabSeries;
With TheFormSeries do
begin
PageSeries.ActivePage:=TabDataSource;
PageSeriesChange(Self);
CBDataSourcestyleChange(Self);
end;
end;
end;
procedure TChartEditForm.BDeleteSeriesClick(Sender: TObject);
begin
LBSeries.DeleteSeries;
if Assigned(TheFormSeries) then
begin
TheFormSeries.TheSeries:=nil;
TheFormSeries.DestroySeriesForms;
TheFormSeries.TheSeries:=Self.LBSeries.SelectedSeries;
end;
end;
procedure TChartEditForm.BRenameSeriesClick(Sender: TObject);
begin
LBSeries.RenameSeries;
if (Parent=nil) and LBSeries.CanFocus then ActiveControl:=LBSeries; { 5.01 }
end;
procedure TChartEditForm.BCloneSeriesClick(Sender: TObject);
begin
LBSeries.CloneSeries;
end;
procedure TChartEditForm.SetTabSeries;
begin
if Assigned(TheFormSeries) then
begin
TheFormSeries.TheSeries:=LBSeries.SelectedSeries;
end
else
begin
TheFormSeries:=TFormTeeSeries.Create(Self);
With TheFormSeries do
begin
Self.LBSeries.OtherItems:=CBSeries.Items;
TheListBox:=Self.LBSeries;
BorderIcons:=[];
BorderStyle:=TeeFormBorderStyle;
Parent:=TabSeries;
Align:=alClient;
ShowTabDataSource:=ceDataSource in EditorOptions;
ShowTabGeneral:=not (cetSeriesGeneral in TheHiddenTabs);
ShowTabMarks:=not (cetSeriesMarks in TheHiddenTabs);
IsDssGraph:=Self.IsDssGraph;
TheSeries:=Self.LBSeries.SelectedSeries;
Self.LBSeries.FillSeries(TheSeries);
{$IFDEF CLX}
TeeFixParentedForm(TheFormSeries);
{$ENDIF}
Show;
end;
TeeTranslateControl(TheFormSeries);
end;
TheFormSeries.SetCBSeries;
end;
procedure TChartEditForm.GridMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
begin
if (Button=mbRight) and (ssAlt in Shift) then
if (Chart.SeriesCount>0) and Chart[0].HasZValues then
with (Sender as TChartGrid) do
Grid3DMode:=not Grid3DMode;
end;
procedure TChartEditForm.MainPageChange(Sender: TObject);
Procedure SetTabPrint;
begin
if not Assigned(FPreview) then
begin
Screen.Cursor:=crHourGlass;
try
FPreview:=TChartPreview.Create(Self);
with FPreview do
begin
GBMargins.Visible:=False;
PanelMargins.Visible:=False;
BClose.Visible:=False;
Align:=alClient;
end;
AddFormTo(FPreview,TabPrint,Integer(Chart));
finally
Screen.Cursor:=crDefault;
end;
end
else FPreview.TeePreviewPanel1.Invalidate; // 5.03
end;
Procedure SetTabTools;
var tmp : TFormTeeTools;
tmpTool : Integer;
begin
if TabTools.ControlCount=0 then
begin
tmp:=TFormTeeTools.Create(Self);
tmp.Align:=alClient;
AddFormTo(tmp,TabTools,Integer(Chart));
if Assigned(TheTool) then
begin
tmpTool:=tmp.LBTools.Items.IndexOfObject(TheTool);
if tmpTool<>-1 then
begin
tmp.LBTools.ItemIndex:=tmpTool;
tmp.LBToolsClick(Self);
end;
TheTool:=nil;
end;
end
else // Refresh the tool form, if any...
TFormTeeTools(TabTools.Controls[0]).Reload;
end;
Procedure SetTabExport;
var tmp : TTeeExportForm;
begin
if TabExport.ControlCount=0 then
begin
tmp:=TTeeExportForm.Create(Self);
AddFormTo(tmp,TabExport,Integer(Chart));
with tmp do
begin
Align:=alClient;
BClose.Visible:=False;
end;
end
else tmp:=TTeeExportForm(TabExport.Controls[0]);
with tmp do
begin
CBFileSize.Checked:=False;
EnableButtons;
end;
end;
Procedure SetTabData;
begin
with ChartGrid1 do
begin
Chart:=Self.Chart;
ShowColors:=(Chart.SeriesCount>0) and HasColors(Chart[0]);
RecalcDimensions;
SBGridCol.Down:=ShowColors;
SBGridText.Down:=ShowLabels;
SBGrid3D.Down:=Grid3DMode;
SBGrid3D.Enabled:=(Chart.SeriesCount>0) and Chart[0].HasZValues;
SBGridX.Down:=(Chart.SeriesCount>0) and HasNoMandatoryValues(Chart[0]);
{$IFNDEF TEEOCX}
SetFocus;
{$ENDIF}
OnMouseDown:=GridMouseDown;
end;
end;
begin
{$IFDEF D5}
if HighLightTabs then MainPage.ActivePage.HighLighted:=True;
{$ENDIF}
if MainPage.ActivePage=TabSeries then SetTabSeries
else
if MainPage.ActivePage=TabData then SetTabData
else
if MainPage.ActivePage=TabTools then SetTabTools
else
if MainPage.ActivePage=TabExport then SetTabExport
else
if MainPage.ActivePage=TabPrint then SetTabPrint
{$IFDEF CLX}
// Workaround for CLX ListBox MultiSelect + ItemIndex=-1 bug
else
if MainPage.ActivePage=TabChart then
if (not LBSeries.Focused) and (LBSeries.CanFocus) then
begin
LBSeries.SetFocus;
LBSeriesRefreshButtons(LBSeries);
end;
{$ENDIF}
end;
{$IFNDEF CLX}
procedure TChartEditForm.WMHelp(var Message: TWMHelp);
var Control : TWinControl;
begin
if biHelp in BorderIcons then
with Message.HelpInfo^ do
begin
if iContextType = HELPINFO_WINDOW then
begin
Control := FindControl(hItemHandle);
while Assigned(Control) and (Control.HelpContext = 0) do
Control := Control.Parent;
if Assigned(Control) then
Application.HelpContext(Control.HelpContext);
end;
end
else inherited;
end;
{$ENDIF}
procedure TChartEditForm.SetChart(Value:TCustomChart);
begin
TheChart:=Value;
if Assigned(TheChart) then TheChart.FreeNotification(Self);
LBSeries.Chart:=TheChart;
MainPage.Enabled:=Assigned(TheChart);
SubPage.Enabled:=Assigned(TheChart);
{$IFNDEF LINUX}
if Assigned(TheChart) then
begin
if not RememberPosition then
RememberPosition:=(csDesigning in TheChart.ComponentState);
if RememberPosition then
begin
with TRegistry.Create do
try
if OpenKeyReadOnly(TeeMsg_EditorKey) then
if ValueExists('Left') then
begin
Self.Position:=poDesigned;
Self.Left:=Math.Max(0,ReadInteger('Left'));
Self.Top:=Math.Max(0,ReadInteger('Top'));
end;
finally
Free;
end;
end;
end;
{$ENDIF}
end;
procedure TChartEditForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
{$IFNDEF LINUX}
if Assigned(Chart) and RememberPosition then
begin
with TRegistry.Create do
try
if OpenKey(TeeMsg_EditorKey,True) then
begin
WriteInteger('Left',Self.Left);
WriteInteger('Top',Self.Top);
end;
finally
Free;
end;
end;
{$ENDIF}
if Assigned(TheFormSeries) then
begin
TheFormSeries.FormCloseQuery(Sender,CanClose);
if CanClose then Close;
end;
end;
procedure TChartEditForm.LBSeriesEditSeries(Sender: TChartListBox;
Index: Integer);
begin
if LBSeries.ItemIndex<>-1 then
begin
MainPage.ActivePage:=TabSeries;
{$IFNDEF CLX}
SetTabSeries;
{$ENDIF}
end;
end;
procedure TChartEditForm.LBSeriesOtherItemsChange(Sender: TObject);
begin
if Assigned(TheFormSeries) then
TheFormSeries.CBSeries.ItemIndex:=LBSeries.ItemIndex;
end;
procedure TChartEditForm.LBSeriesRefreshButtons(Sender: TObject);
var tmp : Boolean;
tmpInherited : Boolean;
tmpSeries : TChartSeries;
begin
tmp:=(Chart.SeriesCount>0) and (LBSeries.ItemIndex<>-1);
if tmp then tmpSeries:=Chart.Series[LBSeries.ItemIndex]
else tmpSeries:=nil;
tmpInherited:=tmp and (csAncestor in tmpSeries.ComponentState);
BAddSeries.Enabled:=(ceAdd in EditorOptions);
BDeleteSeries.Enabled:= tmp and
(not tmpInherited) and
(ceDelete in EditorOptions)
and
(not (tssIsTemplate in tmpSeries.Style)) and
(not (tssDenyDelete in tmpSeries.Style)) ;
BRenameSeries.Enabled:=tmp and (LBSeries.SelCount<2) and (ceTitle in EditorOptions);
BChangeTypeSeries.Enabled:= tmp and
(not tmpInherited) and
(ceChange in EditorOptions)
and
(not (tssDenyChangeType in tmpSeries.Style));
BCloneSeries.Enabled:= tmp and
(LBSeries.SelCount<2) and
(ceClone in EditorOptions)
and
(not (tssIsTemplate in tmpSeries.Style)) and
(not (tssDenyClone in tmpSeries.Style));
if tmp and (LBSeries.SelCount<=1) then
begin
BMoveDown.Enabled:=LBSeries.ItemIndex<LBSeries.Items.Count-1;
BMoveUp.Enabled:=LBSeries.ItemIndex>0;
end
else
begin
BMoveDown.Enabled:=False;
BMoveUp.Enabled:=False;
end;
end;
procedure TChartEditForm.BChangeTypeSeriesClick(Sender: TObject);
begin
LBSeries.ChangeTypeSeries(Self);
if Assigned(TheFormSeries) then
begin
TheFormSeries.DestroySeriesForms;
TheFormSeries.TheSeries:=LBSeries.SelectedSeries; { 5.01 }
end;
end;
procedure TChartEditForm.LabelWWWClick(Sender: TObject);
begin
GotoURL(Handle,LabelWWW.Caption);
end;
procedure TChartEditForm.ButtonHelpClick(Sender: TObject);
begin
{$IFNDEF CLX}
Application.HelpCommand(HELP_CONTEXT, HelpContext);
{$ENDIF}
end;
procedure TChartEditForm.MainPageChanging(Sender: TObject;
var AllowChange: Boolean);
begin
if Assigned(TheFormSeries) then
TheFormSeries.PageSeriesChanging(Self,AllowChange)
else
AllowChange:=True;
{$IFDEF D5}
if AllowChange and HighLightTabs then MainPage.ActivePage.HighLighted:=False;
{$ENDIF}
end;
procedure TChartEditForm.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited;
if (Operation=opRemove) and Assigned(TheChart) and (AComponent=TheChart) then
TheChart:=nil;
end;
procedure TChartEditForm.SubPageChanging(Sender: TObject;
var AllowChange: Boolean);
begin
{$IFDEF D5}
if HighLightTabs then SubPage.ActivePage.Highlighted:=False;
{$ENDIF}
end;
procedure TChartEditForm.SBGridTextClick(Sender: TObject);
begin
ChartGrid1.ShowLabels:=SBGridText.Down;
end;
procedure TChartEditForm.SBGridColClick(Sender: TObject);
begin
ChartGrid1.ShowColors:=SBGridCol.Down;
end;
procedure TChartEditForm.SBGrid3DClick(Sender: TObject);
begin
ChartGrid1.Grid3DMode:=SBGrid3D.Down;
end;
procedure TChartEditForm.SBGridXClick(Sender: TObject);
begin
if SBGridX.Down then
ChartGrid1.ShowXValues:=cgsYes
else
ChartGrid1.ShowXValues:=cgsNo
end;
procedure TChartEditForm.ChartGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
begin
if Assigned(ChartGrid1.Series) then
ChartGrid1.Series.RefreshSeries; // else ?
end;
procedure TChartEditForm.Deleterow1Click(Sender: TObject);
begin
ChartGrid1.Delete
end;
initialization
RegisterClass(TChartEditForm);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -