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

📄 teechartreg.pas

📁 TeeChart7Source 控件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{*****************************************}
{ TeeChart Standard version               }
{                                         }
{ Component Registration Unit             }
{                                         }
{ Comps:   TChart                         }
{          TDBChart (not for Std/Open)    }
{                                         }
{ Series:  TLineSeries                    }
{          TAreaSeries                    }
{          TPointSeries                   }
{          TBarSeries                     }
{          THorizBarSeries                }
{          TPieSeries                     }
{          TBubbleSeries                  }
{          TGanttSeries                   }
{          TChartShape                    }
{          TArrowSeries                   }
{          TFastLineSeries                }
{          THorizLineSeries               }
{          THorizAreaSeries               }
{                                         }
{ Other:                                  }
{          TButtonColor                   }
{          TButtonPen                     }
{          TComboFlat                     }
{                                         }
{          Multi-Language selector        }
{                                         }
{          TTeeDBCrossTab                 }
{                                         }
{ Copyright (c) 1995-2004 David Berneda   }
{ All Rights Reserved                     }
{                                         }
{*****************************************}
unit TeeChartReg;
{$I TeeDefs.inc}

interface

Uses
  {$IFDEF CLR}
  {$IFDEF TEEEDITORS}
  Borland.VCL.Design.DesignEditors, Borland.VCL.Design.DesignIntf,
  {$ENDIF}
  {$ELSE}
   {$IFDEF D6DESIGNER}
   DesignIntf, DesignEditors, PropertyCategories, 
   {$ELSE}
   DsgnIntf,
   {$ENDIF}
  {$ENDIF}

  Classes,
  TeEngine, Chart, TeCanvas;

{$IFDEF CLR}
{$R 'Chart.TChart.bmp'}
{$R 'DBChart.TDBChart.bmp'}
{$R 'TeeDraw3D.TDraw3D.bmp'}
{$R 'TeeData.TSeriesDataSet.bmp'}
{$R 'TeeEdit.TChartPreviewer.bmp'}
{$R 'TChartEditor.bmp'}
{$R 'TTeeCommander.bmp'}
{$R 'TChartScrollBar.bmp'}
{$R 'TChartListBox.bmp'}
{$R 'TChartEditorPanel.bmp'}
{$R 'TChartGrid.bmp'}
{$R 'TChartGridNavigator.bmp'}
{$R 'TChartPageNavigator.bmp'}
{$R 'TChartGalleryPanel.bmp'}
{$R 'TChartWebSource.bmp'}
{$R 'TSeriesTextSource.bmp'}
{$R 'TTeeXMLSource.bmp'}
{$R 'TDBCrossTabSource.bmp'}
{$R 'TButtonColor.bmp'}
{$R 'TButtonPen.bmp'}
{$R 'TComboFlat.bmp'}
{$R 'TTeePreviewPanel.bmp'}

{$DEFINE SPLASH_BDS}

{$ELSE}
{$R TeeChart.res}
{$ENDIF}

{$IFNDEF BCB}
{$IFNDEF CLX}
{$IFNDEF TEENOSERIESDESIGN}
{$IFNDEF TEELITE}
{$DEFINE TEESHOWCUSTOMAXES}
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}

{$IFNDEF NOUSE_BDE}
{$DEFINE TEEDBREG}
{$ENDIF}

{$IFDEF KYLIXOPEN}
{$UNDEF TEEDBREG}
{$ENDIF}

type

{$IFDEF TEEEDITORS}

  TTeeClassProperty=class(TClassProperty)
  public
    function GetValue: string; override;
  end;

  TChartClassProperty=class(TTeeClassProperty)
  protected
    procedure InternalEditPage(AChart:TCustomChart; APage:Integer);
  public
    function GetAttributes : TPropertyAttributes; override;
  end;

  TChartCompEditor=class(TComponentEditor)
  protected
    Function Chart:TCustomChart; virtual;
  public
    procedure Edit; override;
    procedure ExecuteVerb( Index : Integer ); override;
    function GetVerbCount : Integer; override;
    function GetVerb( Index : Integer ) : string; override;
  end;

  {$IFDEF TEEDBREG}
  TDBChartCompEditor=class(TChartCompEditor)
  public
    procedure ExecuteVerb( Index : Integer ); override;
    function GetVerbCount : Integer; override;
    function GetVerb( Index : Integer ) : string; override;
  end;
  {$ENDIF}

  TChartSeriesEditor=class(TComponentEditor)
  public
    procedure Edit; override;
    procedure ExecuteVerb( Index : Integer ); override;
    function GetVerbCount : Integer; override;
    function GetVerb( Index : Integer ) : string; override;
  end;

  TChartPenProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;

  TChartBrushProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;

  { Property Categories }
  {$IFNDEF D6}
  {$IFNDEF CLX}
  {$IFDEF D5}
  TChartAxesCategory = class(TPropertyCategory)
  public
    class function Name: string; override;
    class function Description: string; override;
  end;

  TChartWallsCategory = class(TPropertyCategory)
  public
    class function Name: string; override;
    class function Description: string; override;
  end;

  TChartTitlesCategory = class(TPropertyCategory)
  public
    class function Name: string; override;
    class function Description: string; override;
  end;

  TChart3DCategory = class(TPropertyCategory)
  public
    class function Name: string; override;
    class function Description: string; override;
  end;
  {$ENDIF}
  {$ENDIF}
  {$ENDIF}

{$ENDIF}

  TTeeDesigner={$IFDEF CLR}
               IDesigner
               {$ELSE}
               {$IFDEF D6DESIGNER}
               IDesigner
               {$ELSE}
               IFormDesigner
               {$ENDIF}
               {$ENDIF}
               ;

  TTeeEditSeriesProc=procedure(ASeries:TChartSeries; ADesigner:TTeeDesigner);
  TTeeChartEditorHook=procedure(ADesigner: TTeeDesigner; AChart: TCustomChart;
                                EditSeriesProc: TTeeEditSeriesProc);

  TTeeDesignOptionsHook=procedure;

Var
  TeeChartEditorHook   : TTeeChartEditorHook=nil;
  TeeDesignOptionsHook : TTeeDesignOptionsHook=nil;

{ for QrTeeReg.pas }
procedure EditChartDesign(AChart:TCustomChart);

procedure EditSeriesProc(ASeries:TChartSeries; ADesigner:TTeeDesigner);

procedure Register;

{$IFDEF SPLASH_BDS}
type
  TeeChartIDE=class
  public
    class procedure IDERegister; static;
  end;
{$ENDIF}

implementation

Uses {$IFNDEF LINUX}
     Windows,
     {$ENDIF}

     TypInfo,
     SysUtils,

     {$IFDEF TEEDBREG}
     DB,
     {$IFNDEF CLX}
     DBTables,
     {$ENDIF}
     {$ENDIF}

     {$IFDEF CLX}
     QClipbrd, QGraphics, QForms, QControls, QDialogs, QMenus,
     {$ELSE}
     Clipbrd, Graphics, Forms, Controls, Dialogs, Menus,
     {$ENDIF}

     TeeGalleryPanel, EditChar, TeeProcs, TeeConst, TeeAbout,
     TeeEditCha, TeeEdiSeri, TeeEdiGene, TeeEdiGrad, TeeShadowEditor,

     {$IFDEF TEEDBREG}
     DBChart, DBEditCh, TeeDBEdit,

     {$IFNDEF CLR}
     TeeData,
     {$ENDIF}

     TeeDBCrossTab,
     {$ENDIF}

     {$IFDEF SPLASH_BDS}
     Borland.Studio.ToolsAPI,
     {$ENDIF}

     TeeCustEdit, Series, TeeSourceEdit,
     TeePieEdit, TeeAreaEdit, TeeBarEdit, TeeFLineEdi, TeePenDlg,
     TeeBrushDlg, GanttCh, TeeShape, BubbleCh, ArrowCha, TeeArrowEdi,
     TeeGanttEdi, TeeShapeEdi, TeeCustomFuncEditor, TeeAvgFuncEditor,
     TeePrevi, TeExport

     {$IFDEF TEELITE}
     , TeeDesignOptions
     {$ENDIF}

     {$IFNDEF CLX}
     , TeeExpForm
     {$ENDIF}
     {$IFNDEF TEENOSERIESDESIGN}
     {$IFDEF CLR}
     , Borland.Vcl.Design.ColnEdit 
     {$ELSE}
     , ColnEdit
     {$ENDIF}
     {$ENDIF}
     ;

{$IFDEF TEEEDITORS}
type
  TChartLegendProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;

  TChartAxisProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;

  TChartAxisTitleProperty=class(TTeeClassProperty)
  public
    function GetAttributes : TPropertyAttributes; override;
  end;

  TChartSeriesListProperty=class(TTeeClassProperty)
  public
    procedure Edit; override;
    function GetAttributes : TPropertyAttributes; override;
  end;

  TSeriesPointerProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;

  TChartTitleProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;

  TChartWallProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;

  TChartGradientProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;

  TTeeShadowProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;

  TBarSeriesGradientProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;

  TSeriesMarksProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;

  TView3DOptionsProperty=class(TChartClassProperty)
  public
    procedure Edit; override;
  end;
{$ENDIF}

{$IFDEF TEEDBREG}
type 
  TDesignSources=class
    FAddCurrent   : Boolean;
    FItems        : TStrings;
    FFormDesigner : TTeeDesigner;
    FProc         : TAddComponentDataSource;
    Procedure AddDataSource(Const St:String);
  end;

Procedure TDesignSources.AddDataSource(Const St:String);
var tmpComp : TComponent;
begin
  if St<>'' then
  begin
    tmpComp:=FFormDesigner.GetComponent(St);
    if Assigned(tmpComp) and Assigned(FProc) then
       FProc(tmpComp,FItems,FAddCurrent);
  end;
end;

Procedure DesignTimeOnGetDesignerNames( AProc      : TAddComponentDataSource;
					ASeries    : TChartSeries;
					AItems     : TStrings;
					AddCurrent : Boolean );
Var tmpForm : TCustomForm;
    {$IFDEF CLR}
    tmpDesigner : IDesignerNotify;
    {$ENDIF}
begin
  tmpForm:=GetParentForm(ASeries.ParentChart);

  {$IFDEF CLR}
  if Assigned(tmpForm) then 
  begin
    ShowMessage('yes '+tmpForm.ClassName+' '+tmpForm.Name);
    if Assigned(tmpForm.Designer) then ShowMessage('yes2') else ShowMessage('no2');
    tmpDesigner:=tmpForm.GetRootDesigner;
    if Assigned(tmpDesigner) then ShowMessage('yes3') else ShowMessage('no3');
  end
  else ShowMessage('no');
  {$ENDIF}

  if Assigned(tmpForm) and Assigned(tmpForm.{$IFDEF CLX}DesignerHook{$ELSE}Designer{$ENDIF}) then
  With TDesignSources.Create do
  try
    FProc:=AProc;
    FItems:=AItems;
    FAddCurrent:=AddCurrent;

    {$IFDEF CLR}
    FFormDesigner:=tmpForm.Designer as TTeeDesigner;
    {$ELSE}
    {$IFDEF D6DESIGNER}
    tmpForm.{$IFDEF CLX}DesignerHook{$ELSE}Designer{$ENDIF}.QueryInterface(IDesigner,FFormDesigner);
    {$ELSE}
    FFormDesigner:=tmpForm.Designer as TTeeDesigner;
    {$ENDIF}
    {$ENDIF}

    {$IFDEF TEEDBREG}
    FFormDesigner.GetComponentNames(GetTypeData(TDataSource.ClassInfo),AddDataSource);
    FFormDesigner.GetComponentNames(GetTypeData(TDataSet.ClassInfo),AddDataSource);
    {$ENDIF}

    FFormDesigner.GetComponentNames(GetTypeData(TChartSeries.ClassInfo),AddDataSource);
    FFormDesigner.GetComponentNames(GetTypeData(TTeeSeriesSource.ClassInfo),AddDataSource);
  finally
    Free;
  end;
end;
{$ENDIF}

{ TTeeClassProperty }
function TTeeClassProperty.GetValue: string;
begin
  {$IFDEF CLR} 
  result:='('+GetPropType.ToString+')';
  {$ELSE}
  FmtStr(Result, '(%s)', [GetPropType^.Name]);
  {$ENDIF}
end;

{ Chart Editor }
procedure EditChartDesign(AChart:TCustomChart);
var Part : TChartClickedPart;
begin
  With AChart do CalcClickedPart(GetCursorPos,Part);
  EditChartPart(nil,AChart,Part);
end;

{ EditSeriesProc }
procedure EditSeriesProc(ASeries:TChartSeries; ADesigner:TTeeDesigner);
begin
  EditSeries(nil,ASeries);
  if Assigned(ADesigner) then ADesigner.Modified; { 5.01 }
end;

{$IFDEF TEEEDITORS}

{ TChartCompEditor }
Function TChartCompEditor.Chart:TCustomChart;
begin
  result:=TCustomChart(Component);
end;

procedure TChartCompEditor.Edit;
begin
  EditChartDesign(Chart);
  Designer.Modified;
end;

procedure TChartCompEditor.ExecuteVerb( Index : Integer );
begin
  Case Index of
    0..3: TeeShowAboutBox;
    4: Edit;
    5: ChartPreview(nil,Chart);
    6: TeeExport(Application,Chart);
  else
  begin
   case Index of 
   {$IFDEF TEESHOWCUSTOMAXES}
    7: ShowCollectionEditor(Designer,Chart,Chart.CustomAxes,'CustomAxes');
    {$IFDEF CLX}
      8: if Assigned(TeeDesignOptionsHook) then TeeDesignOptionsHook;
    {$ELSE}
      {$IFDEF BCB}
        8: if Assigned(TeeDesignOptionsHook) then TeeDesignOptionsHook;
      {$ELSE}
        8: if Assigned(TeeChartEditorHook) then 
              TeeChartEditorHook(Designer,Chart,EditSeriesProc)
           else
           if Assigned(TeeDesignOptionsHook) then TeeDesignOptionsHook;

        9: if Assigned(TeeDesignOptionsHook) then TeeDesignOptionsHook;
      {$ENDIF}
    {$ENDIF}
   {$ELSE}
    {$IFDEF CLX}
      7: if Assigned(TeeDesignOptionsHook) then TeeDesignOptionsHook;
    {$ELSE}
      {$IFDEF BCB}
        7: if Assigned(TeeDesignOptionsHook) then TeeDesignOptionsHook;
      {$ELSE}
        7: if Assigned(TeeChartEditorHook) then 
              TeeChartEditorHook(Designer,Chart,EditSeriesProc)
           else
           if Assigned(TeeDesignOptionsHook) then TeeDesignOptionsHook;

        8: if Assigned(TeeDesignOptionsHook) then TeeDesignOptionsHook;
      {$ENDIF}
    {$ENDIF}
   {$ENDIF}
   else inherited;
   end;
  end;
  end;
end;

function TChartCompEditor.GetVerbCount : Integer;
begin
  Result:=inherited GetVerbCount+{$IFDEF TEESHOWCUSTOMAXES}8{$ELSE}7{$ENDIF};
  if Assigned(TeeChartEditorHook) then Inc(result);
  if Assigned(TeeDesignOptionsHook) then Inc(result);
end;

function TChartCompEditor.GetVerb( Index : Integer ) : string;
begin
  result:='';
  Case Index of
    0: begin  
         result:=TeeMsg_Version;
         if TeeIsTrial then result:=result+' TRIAL';
       end;

    1: result:=TeeMsg_Copyright;
    2: result:={$IFDEF D5}cLineCaption{$ELSE}'-'{$ENDIF};
    3: result:=TeeMsg_About;
    4: result:=TeeMsg_EditChart;
    5: result:=TeeMsg_PrintPreview;
    6: result:=TeeMsg_ExportChart;
   else
   begin
     case Index of 
     {$IFDEF TEESHOWCUSTOMAXES}
        7: result:=TeeMsg_CustomAxes;
        {$IFDEF BCB}
        8: result:=TeeMsg_Options;
        {$ELSE}
        8: if Assigned(TeeChartEditorHook) then result:=TeeMsg_SeriesList
                                           else result:=TeeMsg_Options; 
        9: result:=TeeMsg_Options;
        {$ENDIF}

     {$ELSE}
        {$IFDEF CLX}
        7: result:=TeeMsg_Options;
        {$ELSE}
        {$IFDEF BCB}
        7: result:=TeeMsg_Options;
        {$ELSE}
        7: if Assigned(TeeChartEditorHook) then result:=TeeMsg_SeriesList
                                           else result:=TeeMsg_Options; 

⌨️ 快捷键说明

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