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

📄 teechartactions.pas

📁 TeeChart7Source 控件
💻 PAS
字号:
{**********************************************}
{   TeeChart Components - Custom Actions       }
{   Copyright (c) 2000-2004 by David Berneda   }
{        All Rights Reserved                   }
{**********************************************}
unit TeeChartActions;
{$I TeeDefs.inc}

interface

uses {$IFNDEF LINUX}
     Windows, Messages,
     {$ENDIF}
     SysUtils, Classes,
     {$IFDEF CLX}
     QActnList,
     {$ELSE}
     ActnList,
     {$ENDIF}
     Chart, TeEngine;

type
  TCustomChartAction=class(TCustomAction)
  private
    FChart : TCustomChart;
    procedure SetChart(Value:TCustomChart);
  protected
    procedure Notification(AComponent:TComponent; Operation:TOperation); override;
  public
    function HandlesTarget(Target:TObject):Boolean; override;
  published
    property Chart:TCustomChart read FChart write SetChart;
  end;

  TChartAction=class(TCustomChartAction)
  published
    property Caption;
    property Checked;
    property Enabled;
    property HelpContext;
    property Hint;
    property ImageIndex;
    property ShortCut;
    property Visible;
    property OnExecute;
    property OnHint;
    property OnUpdate;
  end;

  TChartAction3D=class(TChartAction)
  public
    Constructor Create(AOwner: TComponent); override;
    procedure ExecuteTarget(Target: TObject); override;
    procedure UpdateTarget(Target: TObject); override;
  end;

  TChartActionEdit=class(TChartAction)
  public
    Constructor Create(AOwner: TComponent); override;
    procedure ExecuteTarget(Target: TObject); override;
  end;

  TChartActionCopy=class(TChartAction)
  public
    Constructor Create(AOwner: TComponent); override;
    procedure ExecuteTarget(Target: TObject); override;
  end;

  TChartActionSave=class(TChartAction)
  public
    Constructor Create(AOwner: TComponent); override;
    procedure ExecuteTarget(Target: TObject); override;
  end;

  TChartActionPrint=class(TChartAction)
  public
    Constructor Create(AOwner: TComponent); override;
    procedure ExecuteTarget(Target: TObject); override;
  end;

  TChartActionAxes=class(TChartAction)
  public
    Constructor Create(AOwner: TComponent); override;
    procedure ExecuteTarget(Target: TObject); override;
    procedure UpdateTarget(Target: TObject); override;
  end;

  TChartActionGrid=class(TChartAction)
  public
    Constructor Create(AOwner: TComponent); override;
    procedure ExecuteTarget(Target: TObject); override;
    procedure UpdateTarget(Target: TObject); override;
  end;

  TChartActionLegend=class(TChartAction)
  public
    Constructor Create(AOwner: TComponent); override;
    procedure ExecuteTarget(Target: TObject); override;
    procedure UpdateTarget(Target: TObject); override;
  end;

  TCustomSeriesAction=class(TCustomAction)
  private
    FSeries : TChartSeries;
    procedure SetSeries(Value:TChartSeries);
  protected
    procedure Notification(AComponent:TComponent; Operation:TOperation); override;
  public
    function HandlesTarget(Target:TObject):Boolean; override;
  published
    property Series:TChartSeries read FSeries write SetSeries;
  end;

  TSeriesAction=class(TCustomSeriesAction)
  published
    property Caption;
    property Checked;
    property Enabled;
    property HelpContext;
    property Hint;
    property ImageIndex;
    property ShortCut;
    property Visible;
    property OnExecute;
    property OnHint;
    property OnUpdate;
  end;

  TSeriesActionActive=class(TSeriesAction)
  public
    Constructor Create(AOwner: TComponent); override;
    procedure ExecuteTarget(Target: TObject); override;
    procedure UpdateTarget(Target: TObject); override;
  end;

  TSeriesActionEdit=class(TSeriesAction)
  public
    Constructor Create(AOwner: TComponent); override;
    procedure ExecuteTarget(Target: TObject); override;
  end;

  TSeriesActionMarks=class(TSeriesAction)
  public
    Constructor Create(AOwner: TComponent); override;
    procedure ExecuteTarget(Target: TObject); override;
    procedure UpdateTarget(Target: TObject); override;
  end;

implementation

Uses TypInfo, EditChar, TeePrevi, TeeProCo, TeeEditPro, TeeEdiGene;

{ TCustomChartAction }
function TCustomChartAction.HandlesTarget(Target: TObject): Boolean;
begin
  result:=((not Assigned(FChart)) and (Target is TCustomChart)) or
         (Target=FChart);
end;

procedure TCustomChartAction.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited;
  if (Operation=opRemove) and (AComponent=Chart) then Chart:=nil;
end;

procedure TCustomChartAction.SetChart(Value: TCustomChart);
begin
  if FChart<>Value then
  begin
    {$IFDEF D5}
    if Assigned(FChart) then FChart.RemoveFreeNotification(Self); // 5.03 Thanks Rune !
    {$ENDIF} 
    FChart:=Value;
    if Assigned(FChart) then FChart.FreeNotification(Self);
  end;
end;

{ TChartAction3D }
Constructor TChartAction3D.Create(AOwner: TComponent);
begin
  inherited;
  Hint   :=TeeMsg_Action3DHint;
  Caption:=TeeMsg_Action3D;
end;

procedure TChartAction3D.ExecuteTarget(Target: TObject);
begin
  With Target as TCustomChart do View3D:=not {$IFDEF CLX}Checked{$ELSE}View3D{$ENDIF}
end;

procedure TChartAction3D.UpdateTarget(Target: TObject);
begin
  Checked:=(Target as TCustomChart).View3D
end;

{ TCustomSeriesAction }
function TCustomSeriesAction.HandlesTarget(Target: TObject): Boolean;
begin
  result:=Assigned(Series) or (Target is TChartSeries);
end;

procedure TCustomSeriesAction.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited;
  if (Operation=opRemove) and (AComponent=Series) then Series:=nil;
end;

procedure TCustomSeriesAction.SetSeries(Value: TChartSeries);
begin
  if FSeries<>Value then
  begin
    FSeries:=Value;
    if Assigned(FSeries) then FSeries.FreeNotification(Self);
  end;
end;

{ TSeriesActionActive }
Constructor TSeriesActionActive.Create(AOwner: TComponent);
begin
  inherited;
  Hint   :=TeeMsg_ActionSeriesActiveHint;
  Caption:=TeeMsg_ActionSeriesActive;
end;

procedure TSeriesActionActive.ExecuteTarget(Target: TObject);
begin
  With Series do Active:=not Active
end;

procedure TSeriesActionActive.UpdateTarget(Target: TObject);
begin
  Checked:=Series.Active
end;

{ TChartActionEdit }
Constructor TChartActionEdit.Create(AOwner: TComponent);
begin
  inherited;
  Hint   :=TeeMsg_ActionEditHint;
  Caption:=TeeMsg_ActionEdit;
end;

procedure TChartActionEdit.ExecuteTarget(Target: TObject);
begin
  EditChart(nil,Target as TCustomChart);
end;

{ TChartActionCopy }

constructor TChartActionCopy.Create(AOwner: TComponent);
begin
  inherited;
  Hint   :=TeeMsg_ActionCopyHint;
  Caption:=TeeMsg_ActionCopy;
end;

procedure TChartActionCopy.ExecuteTarget(Target: TObject);
begin
  (Target as TCustomChart).CopyToClipboardBitmap;
end;

{ TChartActionPrint }

constructor TChartActionPrint.Create(AOwner: TComponent);
begin
  inherited;
  Hint   :=TeeMsg_ActionPrintHint;
  Caption:=TeeMsg_ActionPrint;
end;

procedure TChartActionPrint.ExecuteTarget(Target: TObject);
begin
  ChartPreview(nil,Target as TCustomChart);
end;

{ TChartActionAxes }

constructor TChartActionAxes.Create(AOwner: TComponent);
begin
  inherited;
  Hint   :=TeeMsg_ActionAxesHint;
  Caption:=TeeMsg_ActionAxes;
end;

procedure TChartActionAxes.ExecuteTarget(Target: TObject);
begin
  With (Target as TCustomChart).Axes do Visible:=not Visible
end;

procedure TChartActionAxes.UpdateTarget(Target: TObject);
begin
  Checked:=(Target as TCustomChart).Axes.Visible;
end;

{ TChartActionLegend }
constructor TChartActionLegend.Create(AOwner: TComponent);
begin
  inherited;
  Hint   :=TeeMsg_ActionLegendHint;
  Caption:=TeeMsg_ActionLegend;
end;

procedure TChartActionLegend.ExecuteTarget(Target: TObject);
begin
  With (Target as TCustomChart).Legend do Visible:=not Visible
end;

procedure TChartActionLegend.UpdateTarget(Target: TObject);
begin
  Checked:=(Target as TCustomChart).Legend.Visible;
end;

{ TSeriesActionEdit }
constructor TSeriesActionEdit.Create(AOwner: TComponent);
begin
  inherited;
  Hint   :=TeeMsg_ActionSeriesEditHint;
  Caption:=TeeMsg_ActionEdit;
end;

procedure TSeriesActionEdit.ExecuteTarget(Target: TObject);
begin
  EditSeries(nil,Series);
end;

{ TSeriesActionMarks }

constructor TSeriesActionMarks.Create(AOwner: TComponent);
begin
  inherited;
  Hint   :=TeeMsg_ActionSeriesMarksHint;
  Caption:=TeeMsg_ActionSeriesMarks;
end;

procedure TSeriesActionMarks.ExecuteTarget(Target: TObject);
begin
  With Series.Marks do Visible:=not Visible
end;

procedure TSeriesActionMarks.UpdateTarget(Target: TObject);
begin
  Checked:=Series.Marks.Visible;
end;

{ TChartActionSave }

constructor TChartActionSave.Create(AOwner: TComponent);
begin
  inherited;
  Hint   :=TeeMsg_ActionSaveHint;
  Caption:=TeeMsg_ActionSave;
end;

procedure TChartActionSave.ExecuteTarget(Target: TObject);
begin
  SaveChartDialog(Target as TCustomChart);
end;

{ TChartActionGrid }

constructor TChartActionGrid.Create(AOwner: TComponent);
begin
  inherited;
  Hint   :=TeeMsg_ActionGridsHint;
  Caption:=TeeMsg_ActionGrids;
end;

procedure TChartActionGrid.ExecuteTarget(Target: TObject);
var t : Integer;
begin
  With (Target as TCustomChart) do
  for t:=0 to Axes.Count-1 do
      With Axes[t].Grid do Visible:=not Visible
end;

procedure TChartActionGrid.UpdateTarget(Target: TObject);
var t   : Integer;
    tmp : Boolean;
begin
  tmp:=False;
  With (Target as TCustomChart) do
  for t:=0 to Axes.Count-1 do
  if Axes[t].Grid.Visible then
  begin
    tmp:=True;
    break;
  end;
  Checked:=tmp;
end;

end.

⌨️ 快捷键说明

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