⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 teeeditcha.pas

📁 TeeChart 7.0 With Source在Delphi 7.0中的安装
💻 PAS
📖 第 1 页 / 共 4 页
字号:
        else
        if TabData.TabVisible then
        begin
          MainPage.ActivePage:=TabData;
          MainPageChange(Self);
        end
        else
        if TabTools.TabVisible then
        begin
          MainPage.ActivePage:=TabTools;
          MainPageChange(Self);
        end
        else
        if TabExport.TabVisible then
        begin
          MainPage.ActivePage:=TabExport;
          MainPageChange(Self);
        end
        else
        if TabPrint.TabVisible then
        begin
          MainPage.ActivePage:=TabPrint;
          MainPageChange(Self);
        end;
      end;
    end;
    end;
  end;

  Procedure SelectFirstSeries;
  begin
    if LBSeries.Items.Count>0 then
    begin
      if LBSeries.CanFocus then
         LBSeries.SetFocus;  // 5.03 CLX fix (unless fails to set ItemIndex)

      LBSeries.ItemIndex:=0;
      if LBSeries.MultiSelect then LBSeries.Selected[0]:=True; { 5.01 }
      LBSeriesRefreshButtons(LBSeries);
    end;
  end;

var St : String;
    tmp : Boolean;
begin
  if not Assigned(Chart) then
     exit;

  CBNames.Visible:=(csDesigning in Chart.ComponentState) or TeeSeriesNamesRuntime;

  TeeLoadArrowBitmaps(BMoveUp.Glyph,BMoveDown.Glyph);

  if TeeIsTrial then
     LabelWWW.Cursor:=crHandPoint
  else
     LabelWWW.Visible:=False;

  if TeeToolTypes.Count=0 then TabTools.TabVisible:=False;

  LBSeries.Chart:=Chart;

  if (Caption='') and Assigned(Chart) then
  begin
    FmtStr(St,TeeMsg_Editing,[Chart.Name]);
    Caption:=St;
  end;

  HideTabs;

  BroadcastShowEditor(nil);  // Before PrepareTree !

  if Assigned(Chart) and Tree.Visible then PrepareTree;

  if TheActivePageIndex<>-1 then ActivatePageIndex;

  // Series Groups
  BAddGroup.Visible:=ceGroups in EditorOptions;
  BDeleteGroup.Visible:=BAddGroup.Visible;
  BRenameGroup.Visible:=BAddGroup.Visible;

  if ceGroups in EditorOptions then
  begin
    PanelGroups.Visible:=True;
    Splitter1.Visible:=True;
    FillGroups;
  end;

  if not BAddGroup.Visible then
     CBNames.Left:=LBSeries.Left;
     
  if Assigned(TheEditSeries) then
  begin
    LBSeries.SelectedSeries:=TheEditSeries;
    LBSeriesEditSeries(LBSeries,0);
  end
  else
  if Assigned(TheTool) and TabTools.TabVisible then
  begin
    MainPage.ActivePage:=TabTools;
    MainPageChange(Self);
  end
  else
  if TheActivePageIndex=-1 then
     SelectFirstSeries;

  if TabSeriesList.Showing and (LBSeries.Items.Count>0) then // 7.0
  Case TChartEditorTab(TheActivePageIndex) of
    cetSeriesGeneral,
    cetSeriesMarks : begin
                       LBSeriesEditSeries(LBSeries,LBSeries.ItemIndex);

                       with TheFormSeries do
                       begin
                         tmp:=True;
                         PageSeriesChanging(PageSeries,tmp);

                         if TChartEditorTab(TheActivePageIndex)=cetSeriesGeneral then
                            PageSeries.ActivePage:=TabGeneral
                         else
                            PageSeries.ActivePage:=TabMarks;

                         PageSeriesChange(PageSeries);
                       end;
                     end;
  else
    SelectFirstSeries;
  end
  else
    LBSeriesRefreshButtons(LBSeries);
end;

procedure TChartEditForm.AddSeriesNodes;
var t : Integer;
    tmpSeries : TChartSeries;
begin
  TreeNodeSeries.DeleteChildren;

  for t:=0 to LBSeries.Items.Count-1 do
  begin
    tmpSeries:=TChartSeries(LBSeries.Items.Objects[t]);

    if (csDesigning in tmpSeries.ComponentState) or tmpSeries.ShowInEditor then
       Tree.Items.AddChildObject(TreeNodeSeries,LBSeries.Items[t],tmpSeries);
  end;
end;

procedure TChartEditForm.PrepareTree;
var tmpNode  : TTreeNode;
    tmpNode2 : TTreeNode;
    t        : Integer;
    tt       : Integer;
begin
  TreeSplitter.Visible:=True;

  OldWidth:=Width;
  Width:=Width+Tree.Width+TreeSplitter.Width;

  ButtonHelp.Left:=16;

  MainPage.Visible:=False;

  TreePanel:=TPanel.Create(Self);
  TreePanel.Parent:=Self;
  TreePanel.Align:=alClient;

  with Tree.Items do
  begin
    Clear;

    TreeNodeSeries:=Tree.Items.AddObject(nil,TabSeriesList.Caption,TabSeriesList);
    AddSeriesNodes;

    TreeNodeSeries.Expanded:=Chart.SeriesCount<11;

    tmpNode:=AddObject(nil,TabChart.Caption,SubPage);

    for t:=1 to SubPage.PageCount-1 do
    if SubPage.Pages[t].TabVisible then
    begin
      tmpNode2:=AddChildObject(tmpNode,SubPage.Pages[t].Caption,SubPage.Pages[t]);

      if SubPage.Pages[t]=TabAxis then
      begin
        AddChildObject(tmpNode2,TeeMsg_LeftAxis,Chart.Axes.Left);
        AddChildObject(tmpNode2,TeeMsg_RightAxis,Chart.Axes.Right);
        AddChildObject(tmpNode2,TeeMsg_TopAxis,Chart.Axes.Top);
        AddChildObject(tmpNode2,TeeMsg_BottomAxis,Chart.Axes.Bottom);
        AddChildObject(tmpNode2,TeeMsg_DepthAxis,Chart.Axes.Depth);
        AddChildObject(tmpNode2,TeeMsg_DepthTopAxis,Chart.Axes.DepthTop);

        for tt:=TeeInitialCustomAxis to Chart.Axes.Count-1 do
            AddChildObject(tmpNode2,
                TeeMsg_CustomAxesEditor+IntToStr(tt-TeeInitialCustomAxis),
                Chart.CustomAxes[tt-TeeInitialCustomAxis]);
      end
      else
      if SubPage.Pages[t]=TabTitle then
      begin
        AddChildObject(tmpNode2,TeeMsg_Title,Chart.Title);
        AddChildObject(tmpNode2,TeeMsg_SubTitle,Chart.SubTitle);
        AddChildObject(tmpNode2,TeeMsg_Foot,Chart.Foot);
        AddChildObject(tmpNode2,TeeMsg_SubFoot,Chart.SubFoot);
      end;
    end;

    tmpNode.Expanded:=True;

    for t:=2 to MainPage.PageCount-1 do
    if MainPage.Pages[t].TabVisible then
    begin
      tmpNode:=AddObject(nil,MainPage.Pages[t].Caption,MainPage.Pages[t]);

      if MainPage.Pages[t]=TabTools then
      begin
        TreeNodeTools:=tmpNode;
        for tt:=0 to Chart.Tools.Count-1 do
            if Chart.Tools[tt].ShowInEditor then
               AddChildObject(TreeNodeTools,Chart.Tools[tt].Description,Chart.Tools[tt]);
      end;
    end;
  end;

  Tree.Selected:=TreeNodeSeries;
  // TreeChange(Tree,Tree.Selected);

  Tree.SetFocus;
end;

procedure TChartEditForm.BroadCastShowEditor(Tab:TTabSheet);
var t : Integer;
begin
  if Assigned(TeeOnShowEditor) then
     for t:=0 to TeeOnShowEditor.Count-1 do
         TTeeOnCreateEditor(TeeOnShowEditor[t])(Self,Tab);
end;

procedure TChartEditForm.FormCreate(Sender: TObject);

  Function AdjustSize(const Value:String):Integer;
  Const PPI={$IFDEF LINUX}75{$ELSE}{$IFDEF CLX}92{$ELSE}96{$ENDIF}{$ENDIF};
  begin
    result:=StrToInt(Value)*Screen.PixelsPerInch div PPI; { 5.03 }
  end;

var tmpH : Integer;
begin
  Width:=AdjustSize(TeeMsg_DefaultEditorSize);

  tmpH:=AdjustSize(TeeMsg_DefaultEditorHeight);
  {$IFNDEF LINUX}
  Inc(tmpH,GetSystemMetrics(SM_CYSIZE)-18); // add big (XP) form caption size
  {$ENDIF}

  Height:=tmpH;

  Chart:=nil;
  Caption:='';
  TheActivePageIndex:=-1;
  EditorOptions:=eoAll;
  MainPage.ActivePage:=TabChart;
  SubPage.ActivePage:=TabSeriesList;
  TheHiddenTabs:=[{$IFDEF TEEOCX}cetOpenGL{$ENDIF}]; { 5.02 }

  RememberPosition:=TeeReadBoolOption(TeeMsg_RememberPosition,True);
  RememberSize:=TeeReadBoolOption(TeeMsg_RememberSize,True);
  Tree.Visible:=TeeReadBoolOption(TeeMsg_TreeMode,False);
end;

procedure TChartEditForm.AxisNotifyCustom(Sender: TObject);  // 6.01
begin
  if Assigned(TheFormSeries) then
     TheFormSeries.FillAxes;
end;

type TCustomFormAccess=class(TCustomForm);

procedure TChartEditForm.SubPageChange(Sender: TObject);
var tmpForm : TForm;
begin
  {$IFDEF D5}
  if HighLightTabs then SubPage.ActivePage.Highlighted:=True;
  {$ENDIF}

  if Tree.Visible and (Sender=SubPage) then
     SelectTreeNodeData(SubPage.ActivePage);

  if Assigned(Chart) then
  With SubPage.ActivePage do
  if ControlCount=0 then
  begin
    Case {$IFNDEF CLX}PageIndex{$ELSE}TabIndex{$ENDIF} of
      teeEditGeneralPage: tmpForm:=TFormTeeGeneral.CreateChart(Self,Chart);
      teeEditAxisPage   : begin
                            if not Assigned(TheAxis) then TheAxis:=Chart.LeftAxis;
                            tmpForm:=TFormTeeAxis.CreateAxis(Self,TheAxis);
                            TFormTeeAxis(tmpForm).NotifyCustom:=AxisNotifyCustom;  // 6.01
                          end;
      teeEditTitlePage  : begin
                            if not Assigned(TheTitle) then TheTitle:=Chart.Title;
                            tmpForm:=TFormTeeTitle.CreateTitle(Self,Chart,TheTitle);
                          end;
      teeEditLegendPage : tmpForm:=TFormTeeLegend.CreateLegend(Self,Chart.Legend);
      teeEditPanelPage  : tmpForm:=TFormTeePanel.CreatePanel(Self,Chart);
      teeEditPagingPage : tmpForm:=TFormTeePage.CreateChart(Self,Chart);
      teeEditWallsPage  : begin
                            if not Assigned(TheWall) then TheWall:=Chart.LeftWall;
                            tmpForm:=TFormTeeWall.CreateWall(Self,TheWall);
                          end;
    else
       tmpForm:=TFormTee3D.CreateChart(Self,Chart);
    end;

    {$IFNDEF CLR}
    with TCustomFormAccess(tmpForm) do
    begin
      {$IFNDEF CLX}
      {$IFDEF D7}
      ParentBackground:=True;
      {$ENDIF}
      {$ENDIF}

      ParentColor:=True;
    end;
    {$ENDIF}

    { show the form... }
    With tmpForm do
    begin
      BorderIcons:=[];
      BorderStyle:=TeeFormBorderStyle;
      Align:=alClient;

      Parent:=Self.SubPage.ActivePage;

      {$IFDEF CLX}
      TeeFixParentedForm(tmpForm);
      {$ENDIF}

      Show;
      Realign;  // 6.0 (fixes Axis tab align bug in VCL)
    end;

    // Translate the form
    case {$IFNDEF CLX}PageIndex{$ELSE}TabIndex{$ENDIF} of
      teeEditGeneralPage:  TeeTranslateControl(tmpForm, [TFormTeeGeneral(tmpForm).CBCursor]);
      teeEditTitlePage:    TeeTranslateControl(tmpForm, [TFormTeeTitle(tmpForm).MText]);
      else
        TeeTranslateControl(tmpForm);
    end;
  end;

  if SubPage.ActivePage=Tab3D then
     TFormTee3D(Tab3D.Controls[0]).CheckControls;
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
  TabSeries.Parent:=MainPage;

  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;


  if LBSeries.CanFocus then // 7.0
     LBSeries.SetFocus;
end;

procedure TChartEditForm.InternalSetupFormSeries;
begin
  TabSeries.Parent:=MainPage;
  TheFormSeries.DestroySeriesForms;
  TheFormSeries.TheSeries:=LBSeries.SelectedSeries;
end;

procedure TChartEditForm.BDeleteSeriesClick(Sender: TObject);
begin
  LBSeries.DeleteSeries;
  if Assigned(TheFormSeries) then
  begin
    TheFormSeries.TheSeries:=nil;
    InternalSetupFormSeries;
  end;
end;

procedure TChartEditForm.BRenameSeriesClick(Sender: TObject);
begin
  if LBSeries.RenameSeries and Tree.Visible then
     TreeNodeCurrentSeries.Text:=LBSeries.Items[LBSeries.ItemIndex];

  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
     TheFormSeries.TheSeries:=LBSeries.SelectedSeries
  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);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -