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

📄 teeeditcha.pas

📁 Delphi TeeChartPro.6.01的源代码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{**********************************************}
{  TCustomChart (or derived) Editor Dialog     }
{  Copyright (c) 1996-2003 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,
     {$ELSE}
     Graphics, Controls, Forms, StdCtrls, ExtCtrls, ComCtrls, Buttons,
     Dialogs, Grids, Menus,
     {$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 );

Const eoAll=[Low(TChartEditorOption)..High(TChartEditorOption)];

type
  TChartEditorTab=( cetMain,
                    cetGeneral,
                    cetAxis,
                    cetTitles,
                    cetLegend,
                    cetPanel,
                    cetPaging,
                    cetWalls,
                    cet3D,
                    cetSeriesGeneral,
                    cetSeriesMarks,
                    cetAllSeries,
                    cetSeriesData,
                    cetExport,
                    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;
    LBSeries: TChartListBox;
    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;
    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 ChartGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
      const Value: String);
    procedure Deleterow1Click(Sender: TObject);
  private
    { Private declarations }
    TheChart : TCustomChart;
    FPreview : TChartPreview;

    procedure AxisNotifyCustom(Sender: TObject);  // 6.01
    procedure SetChart(Value:TCustomChart);
    procedure GridMouseDown(Sender: TObject;
                           Button: TMouseButton; Shift: TShiftState;
                           X, Y: Integer);
  protected
    procedure Notification(AComponent: TComponent;
                           Operation: TOperation); override;
    {$IFNDEF CLX}
    procedure WMHelp(var Message: TWMHelp); message WM_HELP;
    {$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;

    Procedure CheckHelpFile;
    procedure SetTabSeries;
    property Chart : TCustomChart read TheChart write SetChart;
  end;

Function GetTeeChartHelpFile:String;

type TTeeOnShowEditor=Procedure(Editor:TChartEditForm);

var TeeOnShowEditor:TTeeOnShowEditor=nil;

implementation

{$IFNDEF CLX}
{$R *.DFM}
{$ELSE}
{$R *.xfm}
{$ENDIF}

uses {$IFNDEF LINUX}
     Registry,
     {$ENDIF}
     TeePenDlg, TeeConst, Series, TeExport, TeeExport, TeeFunci,
     TeeEdiAxis, TeeEdiLege, TeeEdiPane, TeeEdiTitl, TeeEdiWall, TeeEdiGene,
     TeeEdiPage, TeeEdi3D, TeeEditTools, TeeAbout,
     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;

procedure TChartEditForm.FormShow(Sender: TObject);

  Procedure HideTabs;
  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
    begin
      SubPage.Parent:=Self;
      MainPage.Visible:=False;
      Height:=Height-Margin;
      Width:=Width-HorizMargin;
    end;
  end;

var t  : Integer;
    St : String;
    tmp : Boolean;
begin
  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;

  if TheActivePageIndex<>-1 then
  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
      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;
      end;
      TheActivePageIndex:=t;
      if SubPage.Pages[TheActivePageIndex].TabVisible then
      begin
        SubPage.ActivePage:=SubPage.Pages[TheActivePageIndex];
        SubPageChange(Self);
      end;
    end;
  end;
  end;

  if Assigned(TeeOnShowEditor) then TeeOnShowEditor(Self);

  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 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;

  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;
  end;
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;

  RememberPosition:=False;

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

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

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

  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;

    { 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
    TeeTranslateControl(tmpForm);
  end;

  if SubPage.ActivePage=Tab3D then
  begin

⌨️ 快捷键说明

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