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

📄 teeeditcha.pas

📁 第三方控件:PaintGrid.pas 网格型仪表控件源文件 Mymeter.pas 圆型仪表控件源文件 Project1是这两个控件的使用范例。 该
💻 PAS
📖 第 1 页 / 共 4 页
字号:
{**********************************************}
{  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 + -