📄 teeeditcha.pas
字号:
{**********************************************}
{ TCustomChart (or derived) Editor Dialog }
{ Copyright (c) 1996-2005 by David Berneda }
{**********************************************}
unit TeeEditCha;
{$I TeeDefs.inc}
interface
uses {$IFNDEF LINUX}
Windows, Messages,
{$ENDIF}
SysUtils, Classes,
{$IFDEF CLX}
QGraphics, QControls, QForms, QStdCtrls, QExtCtrls, QComCtrls, QButtons,
QDialogs, QGrids, QMenus, QTypes, QCheckLst,
{$ELSE}
Graphics, Controls, Forms, StdCtrls, ExtCtrls, ComCtrls, Buttons,
Dialogs, Grids, Menus, CheckLst,
{$ENDIF}
{$IFDEF D9}
Types,
{$ENDIF}
Chart, TeEngine, TeeProcs, TeeEdiSeri, TeeLisB, TeeChartGrid, TeePrevi,
TeeNavigator;
Const teeEditMainPage =0;
teeEditGeneralPage =1;
teeEditAxisPage =2;
teeEditTitlePage =3;
teeEditLegendPage =4;
teeEditPanelPage =5;
teeEditPagingPage =6;
teeEditWallsPage =7;
teeEdit3DPage =8;
type
TChartEditorOption=( ceAdd,
ceDelete,
ceChange,
ceClone,
ceDataSource,
ceTitle,
ceHelp,
ceGroups, // 6.02
ceGroupAll, // 6.02
ceOrderSeries // 7.06
);
Const
eoAll=[Low(TChartEditorOption)..High(TChartEditorOption)]-[ceGroups];
type
TChartEditorTab=( cetMain,
cetGeneral,
cetAxis,
cetTitles,
cetLegend,
cetPanel,
cetPaging,
cetWalls,
cet3D,
cetSeriesGeneral,
cetSeriesMarks,
cetAllSeries,
cetSeriesData,
cetExport,
cetExportNative, // 7.0
cetTools,
cetPrintPreview
{$IFDEF TEEOCX}
,cetOpenGL
{$ENDIF}
);
TChartEditorOptions=set of TChartEditorOption;
TChartEditorHiddenTabs=set of TChartEditorTab;
TChartEditForm = class(TForm)
MainPage: TPageControl;
TabChart: TTabSheet;
SubPage: TPageControl;
TabSeriesList: TTabSheet;
TabAxis: TTabSheet;
TabGeneral: TTabSheet;
TabTitle: TTabSheet;
TabLegend: TTabSheet;
TabPanel: TTabSheet;
TabPaging: TTabSheet;
TabWalls: TTabSheet;
TabSeries: TTabSheet;
Tab3D: TTabSheet;
TabData: TTabSheet;
TabExport: TTabSheet;
PanBottom: TPanel;
LabelWWW: TLabel;
ButtonHelp: TButton;
TabTools: TTabSheet;
TabPrint: TTabSheet;
PanRight: TPanel;
BMoveUP: TSpeedButton;
BMoveDown: TSpeedButton;
BAddSeries: TButton;
BDeleteSeries: TButton;
BRenameSeries: TButton;
BCloneSeries: TButton;
BChangeTypeSeries: TButton;
PanTop: TPanel;
PanBot: TPanel;
PanLeft: TPanel;
PanClose: TPanel;
BClose: TButton;
ChartGrid1: TChartGrid;
Panel1: TPanel;
ChartGridNavigator1: TChartGridNavigator;
Panel2: TPanel;
SBGridText: TSpeedButton;
SBGridCol: TSpeedButton;
SBGrid3D: TSpeedButton;
SBGridX: TSpeedButton;
PopupData: TPopupMenu;
Deleterow1: TMenuItem;
Groups: TCheckListBox;
Splitter1: TSplitter;
PanelGroups: TPanel;
BAddGroup: TSpeedButton;
BDeleteGroup: TSpeedButton;
BRenameGroup: TSpeedButton;
Tree: TTreeView;
TreeSplitter: TSplitter;
Insertrow1: TMenuItem;
CBNames: TCheckBox;
LBSeries: TChartListBox;
N1: TMenuItem;
EditColor1: TMenuItem;
DefaultColor1: TMenuItem;
Makenullpoint1: TMenuItem;
N2: TMenuItem;
extfont1: TMenuItem;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SubPageChange(Sender: TObject);
procedure BCloseClick(Sender: TObject);
procedure BMoveUPClick(Sender: TObject);
procedure BMoveDownClick(Sender: TObject);
procedure BAddSeriesClick(Sender: TObject);
procedure BDeleteSeriesClick(Sender: TObject);
procedure BRenameSeriesClick(Sender: TObject);
procedure BCloneSeriesClick(Sender: TObject);
procedure MainPageChange(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure LBSeriesEditSeries(Sender: TChartListBox; Index: Integer);
procedure LBSeriesOtherItemsChange(Sender: TObject);
procedure LBSeriesRefreshButtons(Sender: TObject);
procedure BChangeTypeSeriesClick(Sender: TObject);
procedure LabelWWWClick(Sender: TObject);
procedure ButtonHelpClick(Sender: TObject);
procedure MainPageChanging(Sender: TObject; var AllowChange: Boolean);
procedure SubPageChanging(Sender: TObject; var AllowChange: Boolean);
procedure SBGridTextClick(Sender: TObject);
procedure SBGridColClick(Sender: TObject);
procedure SBGrid3DClick(Sender: TObject);
procedure SBGridXClick(Sender: TObject);
procedure Deleterow1Click(Sender: TObject);
procedure GroupsClick(Sender: TObject);
procedure GroupsClickCheck(Sender: TObject);
procedure LBSeriesChangeActive(Sender: TChartListBox;
Series: TCustomChartSeries);
procedure GroupsDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure GroupsDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure BAddGroupClick(Sender: TObject);
procedure BRenameGroupClick(Sender: TObject);
procedure BDeleteGroupClick(Sender: TObject);
procedure TreeChange(Sender: TObject; Node: TTreeNode);
procedure TreeEditing(Sender: TObject; Node: TTreeNode;
var AllowEdit: Boolean);
procedure FormDestroy(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure Insertrow1Click(Sender: TObject);
procedure CBNamesClick(Sender: TObject);
procedure PopupDataPopup(Sender: TObject);
procedure EditColor1Click(Sender: TObject);
procedure DefaultColor1Click(Sender: TObject);
procedure Makenullpoint1Click(Sender: TObject);
procedure extfont1Click(Sender: TObject);
private
{ Private declarations }
OldWidth : Integer;
TheChart : TCustomChart;
FPreview : TChartPreview;
TreePanel : TPanel;
TreeNodeSeries: TTreeNode;
TreeNodeTools : TTreeNode;
{$IFNDEF TEELITE}
procedure AddedTool(Sender:TObject);
procedure DeletedTool(Sender:TObject);
procedure CreateToolsForm;
{$ENDIF}
procedure AddSeriesNodes;
procedure AxisNotifyCustom(Sender: TObject); // 6.01
procedure BroadCastShowEditor(Tab:TTabSheet);
Function CurrentGroup:TSeriesGroup;
Function DeltaGroup:Integer;
procedure EnableGroupButtons;
procedure FillGroups;
procedure GridMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
procedure InternalSetupFormSeries;
procedure PrepareTree;
procedure ReparentAxis;
procedure ReparentTitle;
procedure ReparentTools;
procedure ResetParentTab(PageControl:TPageControl);
procedure SelectTreeNodeData(AObject: TObject);
procedure SetChart(Value:TCustomChart);
Function TreeNodeCurrentSeries:TTreeNode;
procedure TreeSelectSeries(Series: TChartSeries);
protected
procedure Notification(AComponent: TComponent;
Operation: TOperation); override;
{$IFNDEF CLX}
{$IFNDEF LCL}
procedure WMHelp(var Message: TWMHelp); message WM_HELP;
{$ENDIF}
{$ENDIF}
public
{ Public declarations }
TheAxis : TChartAxis;
TheTitle : TChartTitle;
TheTool : TTeeCustomTool;
TheWall : TChartWall;
TheSeries : TChartSeries;
TheEditSeries : TChartSeries;
TheActivePageIndex : Integer;
TheHiddenTabs : TChartEditorHiddenTabs;
EditorOptions : TChartEditorOptions;
IsDssGraph : Boolean;
TheFormSeries : TFormTeeSeries;
HighLightTabs : Boolean;
RememberPosition : Boolean;
RememberSize : Boolean;
Procedure CheckHelpFile;
procedure SetTabSeries;
property Chart : TCustomChart read TheChart write SetChart;
end;
Function GetTeeChartHelpFile:String;
type
TTeeOnCreateEditor=Procedure(Editor:TChartEditForm; Tab:TTabSheet);
var
TeeOnShowEditor:TList=nil;
TeeSeriesNamesRuntime:Boolean=False;
const
TeeMsg_RememberPosition='RememberPosition';
TeeMsg_RememberSize='RememberSize';
TeeMsg_TreeMode='TreeMode';
TeeMsg_DefaultTheme='DefaultTheme';
implementation
{$IFNDEF CLX}
{$IFNDEF LCL}
{$R *.DFM}
{$ENDIF}
{$ELSE}
{$R *.xfm}
{$ENDIF}
uses {$IFNDEF LINUX}
Registry,
{$ENDIF}
TeePenDlg, TeeBrushDlg, TeeConst, Series, TeExport, TeeExport, TeeFunci,
TeeEdiAxis, TeeEdiLege, TeeEdiPane, TeeEdiTitl, TeeEdiWall, TeeEdiGene,
TeeEdiPage, TeeEdi3D,
{$IFNDEF TEELITE}
TeeEditTools,
{$ENDIF}
{$IFDEF D9}
WinHelpViewer,
{$ENDIF}
TeeAbout, TeeGalleryPanel, Math, TeCanvas;
Function GetTeeChartHelpFile:String;
begin
result:=GetRegistryHelpPath(
{$IFDEF TEEOCX}
'TeeChartX'+TeeChartVersion+'.hlp'
{$ELSE}
'TeeChart'+TeeChartVersion+'.hlp'
{$ENDIF}); // <- do not translate
end;
Function GetTeeChartUserHelpFile:String;
begin
result:=GetRegistryHelpPath(
{$IFDEF TEEOCX}
'TeeUserX'+TeeChartVersion+'.hlp'
{$ELSE}
'TeeUser'+TeeChartVersion+'.hlp'
{$ENDIF}); // <- do not translate
end;
{ TChartEditForm }
Procedure TChartEditForm.CheckHelpFile;
begin
if ceHelp in EditorOptions then
begin
if csDesigning in Chart.ComponentState then
HelpFile:=GetTeeChartHelpFile
else
HelpFile:=GetTeeChartUserHelpFile;
if HelpFile<>'' then BorderIcons:=BorderIcons+[biHelp];
end
else HelpFile:='';
ButtonHelp.Visible:=ceHelp in EditorOptions;
end;
Function TChartEditForm.DeltaGroup:Integer;
begin
if ceGroupAll in EditorOptions then result:=1
else result:=0;
end;
procedure TChartEditForm.FillGroups;
var Old : Integer;
t : Integer;
begin
Old:=Groups.ItemIndex;
if Old=-1 then Old:=0;
Groups.Clear;
if ceGroupAll in EditorOptions then
begin
Groups.Items.Add(TeeMsg_All);
Groups.Checked[0]:=Chart.SeriesList.AllActive;
end;
with Chart.SeriesList.Groups do
for t:=0 to Count-1 do
begin
Groups.Items.Add(Items[t].Name);
{$IFDEF LCL}
Groups.Checked[t+DeltaGroup]:=Items[t].Active=gaYes;
{$ELSE}
case Items[t].Active of
gaYes: Groups.State[t+DeltaGroup]:=cbChecked;
gaSome: Groups.State[t+DeltaGroup]:=cbGrayed;
gaNo: Groups.State[t+DeltaGroup]:=cbUnChecked;
end;
{$ENDIF}
end;
if Old>Groups.Items.Count-1 then Old:=Groups.Items.Count-1;
Groups.ItemIndex:=Old;
GroupsClick(Self);
end;
procedure TChartEditForm.FormShow(Sender: TObject);
Procedure HideTabs;
procedure TryHideSubPage; // 6.02
var t : Integer;
begin
for t:=0 to SubPage.PageCount-1 do
if SubPage.Pages[t].TabVisible then exit;
TabChart.TabVisible:=False;
end;
Const Margin=26;
HorizMargin=10;
HorizButtonMargin=5;
begin
if cetMain in TheHiddenTabs then TabSeriesList.TabVisible:=False;
if cetGeneral in TheHiddenTabs then TabGeneral.TabVisible:=False;
if cetAxis in TheHiddenTabs then TabAxis.TabVisible:=False;
if cetTitles in TheHiddenTabs then TabTitle.TabVisible:=False;
if cetLegend in TheHiddenTabs then TabLegend.TabVisible:=False;
if cetPanel in TheHiddenTabs then TabPanel.TabVisible:=False;
if cetPaging in TheHiddenTabs then TabPaging.TabVisible:=False;
if cetWalls in TheHiddenTabs then TabWalls.TabVisible:=False;
if cet3D in TheHiddenTabs then Tab3D.TabVisible:=False;
if cetSeriesData in TheHiddenTabs then TabData.TabVisible:=False;
if cetExport in TheHiddenTabs then TabExport.TabVisible:=False;
if cetTools in TheHiddenTabs then TabTools.TabVisible:=False;
if cetPrintPreview in TheHiddenTabs then TabPrint.TabVisible:=False;
if cetAllSeries in TheHiddenTabs then TabSeries.TabVisible:=False;
TryHideSubPage;
end;
procedure ActivatePageIndex;
var t : Integer;
begin
Case TChartEditorTab(TheActivePageIndex) of
cetSeriesData : begin MainPage.ActivePage:=TabData; MainPageChange(Self); end;
cetExport : begin MainPage.ActivePage:=TabExport; MainPageChange(Self); end;
cetTools : begin MainPage.ActivePage:=TabTools; MainPageChange(Self); end;
cetPrintPreview : begin MainPage.ActivePage:=TabPrint; MainPageChange(Self); end;
else
begin
if TheActivePageIndex<=teeEdit3DPage then // 5.01
begin
t:=TheActivePageIndex;
While not SubPage.Pages[t].TabVisible do
begin
if t<(SubPage.PageCount-1) then // 5.03
Inc(t)
else
begin
t:=TheActivePageIndex;
While not SubPage.Pages[t].TabVisible do
if t>0 then
Dec(t)
else
Break;
break;
end;
end;
TheActivePageIndex:=t;
if SubPage.Pages[TheActivePageIndex].TabVisible then
begin
SubPage.ActivePage:=SubPage.Pages[TheActivePageIndex];
SubPageChange(SubPage);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -