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

📄 teecustomshapeeditor.pas

📁 Delphi TeeChartPro.6.01的源代码
💻 PAS
字号:
{**********************************************}
{  TChartObject (or derived) Editor Dialog     }
{  Copyright (c) 1999-2003 by David Berneda    }
{**********************************************}
unit TeeCustomShapeEditor;
{$I TeeDefs.inc}

interface

uses
  {$IFNDEF LINUX}
  Windows, Messages,
  {$ENDIF}
  SysUtils, Classes,
  {$IFDEF CLX}
  QGraphics, QControls, QForms, QDialogs, QStdCtrls, QExtCtrls, QComCtrls,
  {$ELSE}
  Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls,
  {$ENDIF}
  TeeProcs, TeeEdiGrad, TeeEdiFont, TeCanvas, TeePenDlg, TeeShadowEditor;

type
  TFormTeeShape = class(TForm)
    PC1: TPageControl;
    TabFormat: TTabSheet;
    BBackColor: TButtonColor;
    Button4: TButtonPen;
    Button6: TButton;
    CBRound: TCheckBox;
    CBTransparent: TCheckBox;
    TabGradient: TTabSheet;
    TabText: TTabSheet;
    CBBevel: TComboFlat;
    TabShadow: TTabSheet;
    Label2: TLabel;
    Label3: TLabel;
    EBevWidth: TEdit;
    UDBevW: TUpDown;
    Label4: TLabel;
    EShadowTransp: TEdit;
    UDShadowTransp: TUpDown;
    procedure BColorClick(Sender: TObject);
    procedure CBRoundClick(Sender: TObject);
    procedure BBrushClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure CBTransparentClick(Sender: TObject);
    procedure CBBevelChange(Sender: TObject);
    procedure EBevWidthChange(Sender: TObject);
    procedure EShadowTranspChange(Sender: TObject);
  private
    { Private declarations }
    CreatingForm    : Boolean;
    FFontEditor     : TTeeFontEditor;
    FGradientEditor : TTeeGradientEditor;
    FShadowEditor   : TTeeShadowEditor;
    Procedure EnableBevel;
  public
    { Public declarations }
    TheShape : TTeeCustomShape;
    Constructor Create(AOwner:TComponent); override;
    procedure RefreshControls(AShape:TTeeCustomShape);
  end;

Function InsertTeeObjectForm(APageControl:TPageControl; AShape:TTeeCustomShape):TFormTeeShape;

Procedure EditTeeCustomShape(AOwner:TComponent; AShape:TTeeCustomShape);

implementation

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

Uses TeeConst, TeeBrushDlg;

Function CreateForm(AOwner:TComponent; AShape:TTeeCustomShape):TFormTeeShape;
begin
  result:=TFormTeeShape.Create(AOwner);
  result.TheShape:=AShape;
end;

Function InsertTeeObjectForm(APageControl:TPageControl; AShape:TTeeCustomShape):TFormTeeShape;
var tmp : TTabSheet;
begin
  result:=CreateForm(APageControl.Owner,AShape);
  with result do
  begin
    BorderStyle:=TeeFormBorderStyle;
    Parent:=APageControl;
    Align:=alClient;

    While PC1.PageCount>0 do
    begin
      tmp:=PC1.Pages[0];
      tmp.PageControl:=APageControl;
      {$IFDEF CLX}
      tmp.Show;
      {$ENDIF}
    end;

    APageControl.ActivePage:=APageControl.Pages[0];
    
    TeeTranslateControl(result);
  end;
end;

Procedure EditTeeCustomShape(AOwner:TComponent; AShape:TTeeCustomShape);
var tmp : TFormTeeShape;
    tmpPanel : TPanel;
begin
  tmp:=CreateForm(AOwner,AShape);
  with tmp do
  try
    BorderStyle:=TeeBorderStyle;
    Height:=Height+30;

    tmpPanel:=TPanel.Create(tmp);
    with tmpPanel do
    begin
      Height:=34;
      BevelOuter:=bvNone;
      Align:=alBottom;
      Parent:=tmp;
    end;

    with TButton.Create(tmp) do
    begin
      Left:=tmp.Width-98;
      Top:=4;
      Caption:='OK';
      ModalResult:=mrOk;
      Parent:=tmpPanel;
    end;

    ShowModal;
  finally
    Free;
  end;
end;

// Constructor, for CLX compatib.
Constructor TFormTeeShape.Create(AOwner:TComponent);
begin
  CreatingForm:=True;
  inherited;
end;

procedure TFormTeeShape.BColorClick(Sender: TObject);
begin
  CBTransparent.Checked:=False;
end;

procedure TFormTeeShape.CBRoundClick(Sender: TObject);
begin
  if CBRound.Checked then TheShape.ShapeStyle:=fosRoundRectangle
                     else TheShape.ShapeStyle:=fosRectangle
end;

procedure TFormTeeShape.BBrushClick(Sender: TObject);
begin
  EditChartBrush(Self,TheShape.Brush);
end;

type TShapeAccess=class(TTeeCustomShape);

procedure TFormTeeShape.RefreshControls(AShape:TTeeCustomShape);
begin
  CreatingForm:=True;
  TheShape:=AShape;

  With TShapeAccess(TheShape) do
  begin
    CBRound.Checked        :=ShapeStyle=fosRoundRectangle;
    CBTransparent.Checked  :=Transparent;
    CBBevel.ItemIndex      :=Ord(Bevel);
    UDBevW.Position        :=BevelWidth;
    UDShadowTransp.Position:=Transparency;
    FGradientEditor.RefreshGradient(Gradient);
    FFontEditor.RefreshControls(Font);
    FShadowEditor.RefreshControls(Shadow);
    Button4.LinkPen(Frame);
  end;

  BBackColor.LinkProperty(TheShape,'Color');
  EnableBevel;
  CreatingForm:=False;
end;

Procedure TFormTeeShape.EnableBevel;
begin
  EnableControls(TheShape.Bevel<>bvNone,[EBevWidth,UDBevW]);
end;

procedure TFormTeeShape.FormShow(Sender: TObject);
begin
  PC1.ActivePage:=TabFormat;
  if Assigned(TheShape) then RefreshControls(TheShape);

  TeeTranslateControl(Self);
end;

procedure TFormTeeShape.FormCreate(Sender: TObject);
begin
  CreatingForm:=True;
  FGradientEditor:=TTeeGradientEditor.CreateCustom(Self,nil);
  AddFormTo(FGradientEditor,TabGradient,0);
  FFontEditor:=InsertTeeFontEditor(TabText);
  FShadowEditor:=InsertTeeShadowEditor(TabShadow);
end;

procedure TFormTeeShape.CBTransparentClick(Sender: TObject);
begin
  TheShape.Transparent:=CBTransparent.Checked;
end;

procedure TFormTeeShape.CBBevelChange(Sender: TObject);
begin
  TheShape.Bevel:=TPanelBevel(CBBevel.ItemIndex);
  EnableBevel;
end;

procedure TFormTeeShape.EBevWidthChange(Sender: TObject);
begin
  if not CreatingForm then TheShape.BevelWidth:=UDBevW.Position
end;

procedure TFormTeeShape.EShadowTranspChange(Sender: TObject);
begin
  if not CreatingForm then
     TShapeAccess(TheShape).Transparency:=UDShadowTransp.Position;
end;

end.

⌨️ 快捷键说明

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