📄 teeeditcha.pas
字号:
end;
procedure TChartEditForm.SBGridXClick(Sender: TObject);
begin
if SBGridX.Down then
ChartGrid1.ShowXValues:=cgsYes
else
ChartGrid1.ShowXValues:=cgsNo
end;
procedure TChartEditForm.Deleterow1Click(Sender: TObject);
begin
ChartGrid1.Delete
end;
Function TChartEditForm.CurrentGroup:TSeriesGroup;
begin
if Groups.ItemIndex=-1 then
result:=nil
else
if (DeltaGroup=1) and (Groups.ItemIndex=0) then
result:=nil
else
result:=Chart.SeriesList.Groups[Groups.ItemIndex-DeltaGroup];
end;
procedure TChartEditForm.GroupsClick(Sender: TObject);
begin
LBSeries.SeriesGroup:=CurrentGroup;
EnableGroupButtons;
end;
procedure TChartEditForm.EnableGroupButtons;
begin
BDeleteGroup.Enabled:=Groups.ItemIndex>=DeltaGroup;
BRenameGroup.Enabled:=BDeleteGroup.Enabled;
end;
procedure TChartEditForm.GroupsClickCheck(Sender: TObject);
begin
if (DeltaGroup=1) and (Groups.ItemIndex=0) then
begin
Chart.SeriesList.AllActive:=Groups.Checked[Groups.ItemIndex];
FillGroups;
end
else
begin
{$IFDEF LCL}
if Groups.Checked[Groups.ItemIndex] then
CurrentGroup.Active:=gaYes
else
CurrentGroup.Active:=gaNo;
{$ELSE}
case Groups.State[Groups.ItemIndex] of
cbChecked: CurrentGroup.Active:=gaYes;
cbUnChecked: CurrentGroup.Active:=gaNo;
cbGrayed: CurrentGroup.Active:=gaSome;
end;
{$ENDIF}
if DeltaGroup=1 then
Groups.Checked[0]:=Chart.SeriesList.AllActive;
end;
EnableGroupButtons;
end;
procedure TChartEditForm.LBSeriesChangeActive(Sender: TChartListBox;
Series: TCustomChartSeries);
begin
FillGroups;
end;
procedure TChartEditForm.GroupsDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
var tmp : Integer;
begin
tmp:=Groups.ItemAtPos(TeePoint(X,Y),True);
Accept:=(tmp<>-1) and (Source is TChartListBox);
if Accept and (tmp>=DeltaGroup) then
Accept:=Accept and
(Chart.SeriesList.Groups[tmp-DeltaGroup].Series.IndexOf(TChartListBox(Source).SelectedSeries)=-1);
end;
procedure TChartEditForm.GroupsDragDrop(Sender, Source: TObject; X,
Y: Integer);
Procedure RefreshGroups(Index:Integer);
begin
FillGroups;
Groups.ItemIndex:=Index;
GroupsClick(Groups);
end;
var tmp : Integer;
tmpSeries : TChartSeries;
begin
tmp:=Groups.ItemAtPos(TeePoint(X,Y),True);
if (tmp<>-1) and (Source is TChartListBox) then
begin
tmpSeries:=TChartListBox(Source).SelectedSeries;
if (tmp=0) and (DeltaGroup=1) then
begin
if Groups.ItemIndex>=DeltaGroup then
CurrentGroup.Series.Remove(tmpSeries);
RefreshGroups(tmp);
end
else
with Chart.SeriesList.Groups[tmp-DeltaGroup].Series do
begin
if IndexOf(tmpSeries)=-1 then
begin
Add(tmpSeries);
if Groups.ItemIndex>=DeltaGroup then
CurrentGroup.Series.Remove(tmpSeries);
RefreshGroups(tmp);
end;
end;
end;
end;
procedure TChartEditForm.BAddGroupClick(Sender: TObject);
var tmpSt : String;
begin
tmpSt:='';
repeat
if not InputQuery(TeeMsg_AddNewGroup,TeeMsg_GroupName,tmpSt) then
break;
until tmpSt<>'';
if tmpSt<>'' then
begin
Chart.SeriesList.AddGroup(tmpSt);
FillGroups;
Groups.ItemIndex:=Groups.Items.Count-1;
GroupsClick(Self);
end;
end;
procedure TChartEditForm.BRenameGroupClick(Sender: TObject);
var tmpSt : String;
begin
tmpSt:=Groups.Items[Groups.ItemIndex];
if InputQuery(TeeMsg_ChangeGroupName,TeeMsg_GroupName,tmpSt) then
begin
CurrentGroup.Name:=tmpSt;
FillGroups;
end;
end;
procedure TChartEditForm.BDeleteGroupClick(Sender: TObject);
begin
if TeeYesNoDelete(Groups.Items[Groups.ItemIndex],Self) then
begin
CurrentGroup.Free;
FillGroups;
end;
end;
procedure TChartEditForm.TreeChange(Sender: TObject; Node: TTreeNode);
procedure SetMainTab(TabSheet: TTabSheet; SynchroNode:Boolean=True);
begin
MainPage.ActivePage.Parent:=MainPage;
MainPage.ActivePage:=TabSheet;
if TabSheet=TabTools then ReparentTools;
if SynchroNode then
MainPageChange(MainPage);
end;
procedure SetSubTab(TabSheet: TTabSheet; SynchroNode:Boolean=True);
begin
SubPage.Parent:=TabChart;
if Assigned(SubPage.ActivePage) then
SubPage.ActivePage.Parent:=SubPage;
SubPage.ActivePage:=TabSheet;
if TabSheet=TabAxis then ReparentAxis
else
if TabSheet=TabTitle then ReparentTitle;
if SynchroNode then SubPageChange(SubPage)
else SubPageChange(Self);
end;
//var t : Integer;
begin
{
for t:=0 to TreePanel.ControlCount-1 do
TreePanel.Controls[t].Hide;
}
while TreePanel.ControlCount>0 do
TreePanel.Controls[0].Parent:=nil;
if Assigned(Node.Data) then
if TObject(Node.Data) is TTabSheet then
begin
with TTabSheet(Node.Data) do
begin
if PageControl=MainPage then SetMainTab(TTabSheet(Node.Data))
else
if PageControl=SubPage then SetSubTab(TTabSheet(Node.Data));
Parent:=TreePanel;
Align:=alClient;
Show;
end;
if TTabSheet(Node.Data)=TabSeriesList then
if LBSeries.CanFocus then
begin
LBSeries.SetFocus;
LBSeries.Repaint;
end;
end
else
if TObject(Node.Data) is TChartSeries then
TreeSelectSeries(TChartSeries(Node.Data))
else
if TObject(Node.Data) is TPageControl then
begin
ResetParentTab(SubPage);
SubPage.Parent:=TreePanel;
SubPage.Align:=alClient;
TabSeriesList.TabVisible:=False;
SubPageChange(Self);
end
else
{$IFNDEF TEELITE}
if TObject(Node.Data) is TTeeCustomTool then
begin
SetMainTab(TabTools,False);
if TabTools.ControlCount=0 then // 7.0
CreateToolsForm;
with TFormTeeTools(TabTools.Controls[0]) do
begin
with LBTools do
begin
if Items.Count=0 then FormShow(Self);
ItemIndex:=Items.IndexOfObject(TTeeCustomTool(Node.Data));
end;
LBToolsClick(LBTools);
PanelToolEditor.Parent:=TreePanel;
end;
end
else
{$ENDIF}
if TObject(Node.Data) is TChartAxis then
begin
SetSubTab(TabAxis,False);
with TFormTeeAxis(TabAxis.Controls[0]) do
begin
TheAxis:=TChartAxis(Node.Data);
LBAxes.ItemIndex:=Node.Index;
PageAxisChange(PageAxis);
PageAxis.Parent:=TreePanel;
end;
end
else
if TObject(Node.Data) is TChartTitle then
begin
SetSubTab(TabTitle,False);
with TFormTeeTitle(TabTitle.Controls[0]) do
begin
TheTitle:=TChartTitle(Node.Data);
CBTitles.ItemIndex:=Node.Index;
PageControlTitle.Parent:=TFormTeeTitle(TabTitle.Controls[0]);
CBTitlesChange(CBTitles);
PageControlTitle.Parent:=TreePanel;
end;
end
else
if TObject(Node.Data) is TCustomChartWall then
begin
SetSubTab(TabWalls,False);
with TTabSheet(Node.Parent.Data) do
begin
Parent:=TreePanel;
Align:=alClient;
end;
TFormTeeWall(TabWalls.Controls[0]).RefreshControls(TCustomChartWall(Node.Data));
end;
end;
procedure TChartEditForm.TreeEditing(Sender: TObject; Node: TTreeNode;
var AllowEdit: Boolean);
begin
AllowEdit:=TObject(Node) is TChartSeries;
end;
{$IFNDEF TEELITE}
procedure TChartEditForm.AddedTool(Sender:TObject);
begin
if Assigned(TreeNodeTools) then
Tree.Items.AddChildObject(TreeNodeTools,TTeeCustomTool(Sender).Description,Sender);
end;
procedure TChartEditForm.DeletedTool(Sender:TObject);
var t: Integer;
begin
if Assigned(TreeNodeTools) then
with TreeNodeTools do
for t:=0 to Count-1 do
if {$IFDEF LCL}Items{$ELSE}Item{$ENDIF}[t].Data=Sender then
begin
{$IFDEF LCL}Items{$ELSE}Item{$ENDIF}[t].Free;
break;
end;
end;
{$ENDIF}
procedure TChartEditForm.FormDestroy(Sender: TObject);
begin
// Tree mode fix at destroy
if Assigned(Tree) and Tree.Visible then
begin
ResetParentTab(MainPage);
ResetParentTab(SubPage);
Width:=OldWidth;
end;
{$IFNDEF LINUX}
if Tree.Visible then
TeeSaveIntegerOption(TeeMsg_TreeWidth,Tree.Width);
TeeSaveBoolOption(TeeMsg_SeriesGroups,ceGroups in EditorOptions);
if Assigned(Chart) and (RememberPosition or RememberSize) then
with TRegistry.Create do
try
if OpenKey(TeeMsg_EditorKey,True) then
begin
if RememberPosition then
begin
WriteInteger('Left',Self.Left);
WriteInteger('Top',Self.Top);
end;
if RememberSize then
begin
if Self.Width<>StrToInt(TeeMsg_DefaultEditorSize) then
WriteInteger('Width',Self.Width);
if Self.Height<>StrToInt(TeeMsg_DefaultEditorHeight) then
WriteInteger('Height',Self.Height);
end;
end;
finally
Free;
end;
{$ENDIF}
end;
procedure TChartEditForm.FormResize(Sender: TObject);
begin
if Tree.Visible then
OldWidth:=Width-Tree.Width-TreeSplitter.Width;
end;
procedure TChartEditForm.Insertrow1Click(Sender: TObject);
begin
ChartGrid1.Insert;
end;
procedure TChartEditForm.CBNamesClick(Sender: TObject);
begin
end;
{$IFNDEF CLR}
type
TChartGridAccess=class(TChartGrid);
{$ENDIF}
procedure TChartEditForm.PopupDataPopup(Sender: TObject);
var tmpColor : TColor;
begin
EditColor1.Visible:=Assigned({$IFNDEF CLR}TChartGridAccess{$ENDIF}(ChartGrid1).GetSeriesColor(tmpColor));
DefaultColor1.Visible:=EditColor1.Visible and (tmpColor<>clTeeColor);
Makenullpoint1.Visible:=EditColor1.Visible and (tmpColor<>clNone);
N1.Visible:=EditColor1.Visible;
end;
procedure TChartEditForm.EditColor1Click(Sender: TObject);
begin
ChartGrid1.ChangeColor;
end;
procedure TChartEditForm.DefaultColor1Click(Sender: TObject);
begin
ChartGrid1.ChangeColor(clTeeColor);
end;
procedure TChartEditForm.Makenullpoint1Click(Sender: TObject);
begin
ChartGrid1.ChangeColor(clNone);
end;
procedure TChartEditForm.extfont1Click(Sender: TObject);
begin
EditTeeFont(Self,ChartGrid1.Font);
// 7.01
with TBitmap.Create do
try
Canvas.Font.Assign(ChartGrid1.Font);
ChartGrid1.DefaultRowHeight:=2+Canvas.TextHeight(TeeCharForHeight);
finally
Free;
end;
end;
procedure TChartEditForm.SBCopyDataClick(Sender: TObject);
begin
with TSeriesDataText.Create(TheChart) do // 7.07
try
IncludeHeader:=True;
IncludeIndex:=True;
IncludeLabels:=SBGridText.Down;
IncludeColors:=SBGridCol.Down;
CopyToClipboard;
finally
Free;
end;
end;
procedure TChartEditForm.ViewSeriesNames1Click(Sender: TObject);
begin
with ViewSeriesNames1 do Checked:=not Checked;
// Fix for VCL TCustomComboBoxStrings bug 7.02
if not Assigned(TabSeries.Parent) then
TabSeries.Parent:=MainPage;
LBSeries.ShowSeriesNames:=ViewSeriesNames1.Checked;
if ViewSeriesNames1.Checked then
BRenameSeries.Caption:='&Name...' // do not localize
else
BRenameSeries.Caption:='&Title...'; // do not localize
TeeTranslateControl(BRenameSeries);
SpeedSeries.Down:=False;
end;
procedure TChartEditForm.SpeedSeriesMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var P : TPoint;
begin
P.X:=0;
P.Y:=SpeedSeries.BoundsRect.Bottom;
P:=SpeedSeries.ClientToScreen(P);
PopupSeries.Popup(P.X,P.Y);
end;
procedure TChartEditForm.ViewSeriesGroups1Click(Sender: TObject);
begin
with ViewSeriesGroups1 do Checked:=not Checked;
if ViewSeriesGroups1.Checked then
EditorOptions:=EditorOptions+[ceGroups]
else
EditorOptions:=EditorOptions-[ceGroups];
ShowHideGroups;
SpeedSeries.Down:=False;
end;
initialization
TeeOnShowEditor:=TList.Create;
RegisterClass(TChartEditForm);
finalization
TeeOnShowEditor.Free;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -