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

📄 teecomma.pas

📁 第三方控件:PaintGrid.pas 网格型仪表控件源文件 Mymeter.pas 圆型仪表控件源文件 Project1是这两个控件的使用范例。 该
💻 PAS
📖 第 1 页 / 共 3 页
字号:
{**********************************************}
{   TTeeCommander Component                    }
{   Copyright (c) 1998-2005 by David Berneda   }
{**********************************************}
unit TeeComma;
{$I TeeDefs.inc}

{$IFDEF TEEOCX}
{$I TeeAXDefs.inc}
{$ENDIF}

interface

uses {$IFNDEF LINUX}
     Windows, Messages,
     {$ENDIF}
     SysUtils, Classes,
     {$IFDEF CLX}
     QGraphics, QControls, QForms, QDialogs, QStdCtrls, QExtCtrls, QComCtrls,
     QButtons,
     {$ELSE}
     Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls,
     Buttons,
     {$ENDIF}

     {$IFDEF D9}
     Types,
     {$ENDIF}

     TeCanvas, TeeProcs, Series,
     {$IFNDEF TEEOCXSTD}
     TeeEdit,
     {$ENDIF}
     Chart;

type
  TCustomTeeCommander=class(TCustomPanelNoCaption,ITeeEventListener)
  private
    FGradient    : TTeeGradient;  // 7.05
    FMouseButton : TMouseButton;
    FPanel       : TCustomTeePanel;
    FVertical    : Boolean;

    Procedure CanvasChanged(Sender:TObject);
    Function GetGradient:TTeeGradient;
    Procedure ReAlignTeeControls;
    Procedure SetGradient(Value:TTeeGradient);
    Procedure SetVertical(Value:Boolean);
  protected
    Procedure DoMouseDown(X,Y:Integer); virtual;
    Procedure DoMouseMove(X,Y:Integer); virtual;
    Procedure DoMouseUp; virtual;
    Function DoPanelMouse:Boolean; virtual;
    Procedure FreeOwnedControls;
    procedure Loaded; override;
    procedure Notification( AComponent: TComponent;
                            Operation: TOperation); override;
    procedure Paint; override;
    Procedure RemovingControl(AControl:TControl); dynamic;
    procedure SetPanel(Const Value: TCustomTeePanel); virtual;
    Procedure ShowHideControls(Value:Boolean); virtual;
    procedure TeeEvent(Event:TTeeEvent);
    Function TeePanelClass:String;
  public
    { Public declarations }
    Constructor Create(AOwner:TComponent); override;
    Destructor Destroy; override;

    Procedure CreateBevel( APos:Integer);

    Function CreateButton( APos:Integer; AProc:TNotifyEvent;
                           Const AHint:String;
                           Const AResName:String;
                           AGroupIndex:Integer {$IFNDEF BCB}=0{$ENDIF}):TSpeedButton; {$IFNDEF BCB4}overload;{$ENDIF}

    {$IFNDEF BCB4}
    Function CreateButton( APos:Integer;
                           AProc:TNotifyEvent;
                           Const AHint:String;
                           ABitmap: TBitmap;
                           AGroupIndex:Integer {$IFNDEF BCB}=0{$ENDIF}):TSpeedButton; overload;
    {$ENDIF}

    Function CreateLabel(APos:Integer; AColor:TColor):TLabel;
  published
    { Published declarations }
    property Gradient:TTeeGradient read GetGradient write SetGradient;  // 7.05
    property Panel:TCustomTeePanel read FPanel write SetPanel;
    property Vertical:Boolean read FVertical write SetVertical default False;

    { TPanel properties }
    property Align;
    property BevelInner;
    property BevelOuter;
    property BevelWidth;
    property BorderWidth;
    property BorderStyle;
    property Color;
    property DragMode;
    {$IFNDEF CLX}
    property DragCursor;
    {$ENDIF}
    property Enabled;
    property ParentColor;
    property ParentShowHint;
    property PopupMenu;
    property ShowHint{$IFNDEF TEEOCX} default True{$ENDIF};
    property TabOrder;
    property TabStop;
    property Visible;
    property Anchors;
    property Constraints;
    {$IFNDEF CLX}
    property AutoSize;
    property DragKind;
    {$ENDIF}

    { TPanel events }
    property OnClick;
    {$IFNDEF CLX}
    {$IFDEF D5}
    property OnContextPopup;
    {$ENDIF}
    {$ENDIF}
    property OnDblClick;
    {$IFNDEF CLX}
    property OnDragDrop;
    property OnDragOver;
    property OnEndDrag;
    property OnStartDrag; 
    {$ENDIF}
    property OnEnter;
    property OnExit;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnResize;
    property OnConstrainedResize;

    {$IFNDEF CLX}
    {$IFNDEF LCL}
    property OnCanResize;
    {$ENDIF}

    {$IFNDEF TEEOCX}
    property OnDockDrop;
    property OnDockOver;
    property OnEndDock;
    property OnStartDock;
    property OnUnDock;
    {$ENDIF}
    {$ENDIF}
  end;

  TCommanderControls=( tcbNormal,
                       tcbSeparator,
                       tcbRotate,
                       tcbMove,
                       tcbZoom,
                       tcbDepth,
                       tcbEdit,
                       tcbPrintPreview,
                       tcbCopy,
                       tcbSave,
                       tcbLabel,
                       tcb3D );

  TTeeCommander=class;
  TTeeEditedChartEvent=procedure(Sender:TTeeCommander; AChart:TCustomChart) of object;

  TTeeCommanderOnSetLabel=procedure(Sender:TTeeCommander; Var Text:String) of object;

  TTeeCommander=class(TCustomTeeCommander)
  private
    { Private declarations }
    FButtonCopy    : TSpeedButton;
    FButtonDepth   : TSpeedButton;
    FButtonEdit    : TSpeedButton;
    FButtonMove    : TSpeedButton;
    FButtonNormal  : TSpeedButton;
    FButtonPrint   : TSpeedButton;
    FButtonRotate  : TSpeedButton;
    FButtonSave    : TSpeedButton;
    FButtonZoom    : TSpeedButton;
    FButton3D      : TSpeedButton;

    {$IFNDEF TEEOCXNOEDITOR}
    FEditor        : TChartEditor;
    FPreviewer     : TChartPreviewer;
    {$ENDIF}

    FEnablePieExp  : Boolean;
    FLabel         : TLabel;
    FLabelValues   : Boolean;

    FDragging      : Boolean;
    FDraggingIndex : Integer;
    FOldX          : Integer;
    FOldY          : Integer;
    {$IFDEF CLX}
    IChanging3D    : Boolean;
    {$ENDIF}
    IPieSeries     : TPieSeries;  // 7.0

    FOnEditedChart : TTeeEditedChartEvent;
    FOnSetLabel    : TTeeCommanderOnSetLabel;

    procedure Button3DClick(Sender: TObject);
    procedure ButtonCopyClick(Sender: TObject);
    procedure ButtonDepthClick(Sender: TObject);
    procedure ButtonEditClick(Sender: TObject);
    procedure ButtonMoveClick(Sender: TObject);
    procedure ButtonNormalClick(Sender: TObject);
    procedure ButtonPrintClick(Sender: TObject);
    procedure ButtonRotateClick(Sender: TObject);
    procedure ButtonSaveClick(Sender: TObject);
    procedure ButtonZoomClick(Sender: TObject);
    Function IsButtonDown(AButton:TSpeedButton):Boolean;

    function GetDefault:TCommanderControls;
    procedure SetDefault(AButton:TCommanderControls);

    procedure SetLabelCaption(Const ACaption:String);
    procedure SetLabelValues(Value:Boolean);

    Function CaptionPanel(Const ACaption:String):String;

    Function GetPieSeries(x,y:Integer):TPieSeries;

    {$IFNDEF TEEOCXNOEDITOR}
    procedure SetEditor(const Value: TChartEditor);
    procedure SetPreviewer(const Value: TChartPreviewer);
    {$ENDIF}

  protected
    { Protected declarations }
    Procedure DoMouseDown(X,Y:Integer); override;
    Procedure DoMouseMove(X,Y:Integer); override;
    Procedure DoMouseUp; override;
    Function DoPanelMouse:Boolean; override;
    Procedure RemovingControl(AControl:TControl); override;
    Procedure ShowHideControls(Value:Boolean); override;
    {$IFNDEF TEEOCXNOEDITOR}
    procedure Notification( AComponent: TComponent;
                            Operation: TOperation); override;
    {$ENDIF}
  public
    { Public declarations }
    Constructor Create(AOwner:TComponent); override;

    Procedure CreateControls(AControls:Array of TCommanderControls);
    Procedure RepositionControls;

    property Button3D      : TSpeedButton read FButton3D;
    property ButtonCopy    : TSpeedButton read FButtonCopy;
    property ButtonDepth   : TSpeedButton read FButtonDepth;
    property ButtonEdit    : TSpeedButton read FButtonEdit;
    property ButtonMove    : TSpeedButton read FButtonMove;
    property ButtonNormal  : TSpeedButton read FButtonNormal;
    property ButtonPrint   : TSpeedButton read FButtonPrint;
    property ButtonRotate  : TSpeedButton read FButtonRotate;
    property ButtonSave    : TSpeedButton read FButtonSave;
    property ButtonZoom    : TSpeedButton read FButtonZoom;

    property DefaultButton : TCommanderControls read GetDefault write SetDefault;

    property LabelText     : TLabel read FLabel;

    Procedure ShowValues;
  published
    {$IFNDEF TEEOCXNOEDITOR}
    property ChartEditor   : TChartEditor read FEditor write SetEditor;
    property Previewer     : TChartPreviewer read FPreviewer write SetPreviewer;
    {$ENDIF}

    property EnablePieExploding:Boolean read FEnablePieExp
                                        write FEnablePieExp default True;
    property LabelValues:Boolean read FLabelValues write SetLabelValues default True;
    property OnEditedChart:TTeeEditedChartEvent read FOnEditedChart
                                                write FOnEditedChart;
    property OnSetLabel:TTeeCommanderOnSetLabel read FOnSetLabel
                                                write FOnSetLabel;

    {$IFDEF K3}
    property OnMouseEnter;
    property OnMouseLeave;
    {$ELSE}
    {$IFDEF D10}
    property OnMouseEnter;
    property OnMouseLeave;
    {$ENDIF}
    {$ENDIF}
  end;

implementation

{$IFDEF CLR}
{$R 'TeeCopy.bmp'}
{$R 'TeeDepth.bmp'}
{$R 'TeeEdit.bmp'}
{$R 'TeeMove.bmp'}
{$R 'TeeNormal.bmp'}
{$R 'TeePrint.bmp'}
{$R 'TeeRotate.bmp'}
{$R 'TeeZoom.bmp'}
{$R 'TeeView3D.bmp'}
{$R 'TeeSave.bmp'}
{$ELSE}
{$R TeeComma.res}
{$ENDIF}

Uses Math,
     {$IFNDEF TEEOCXNOEDITOR}
     {$IFDEF LCL}
     GraphType,
     {$ENDIF}
     TeeEditPro, EditChar, TeePrevi, TeeEdiGene,
     {$ENDIF}
     TeeProCo, TeeTools, TeEngine;

{ TCustomTeeCommander }
Constructor TCustomTeeCommander.Create(AOwner:TComponent);
begin
  inherited;
  Panel:=nil;
  Height:=33;
  Width:=400;
  FMouseButton:=mbLeft;

  {$IFNDEF TEEOCX}
  ShowHint:=True;
  {$ENDIF}

  if (csDesigning in ComponentState) and
     (not (csLoading in Owner.ComponentState)) then Align:=alTop;
end;

Destructor TCustomTeeCommander.Destroy;
begin
  FreeOwnedControls;
  FGradient.Free;
  Panel:=nil;
  inherited;
end;

procedure TCustomTeeCommander.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited;
  if (Operation=opRemove) and Assigned(FPanel) and (AComponent=FPanel) then
     Panel:=nil;
end;

Procedure TCustomTeeCommander.CanvasChanged(Sender:TObject);
begin
  Invalidate;
end;

Function TCustomTeeCommander.GetGradient:TTeeGradient;
begin
  if not Assigned(FGradient) then
     FGradient:=TTeeGradient.Create(CanvasChanged);
  result:=FGradient;
end;

procedure TCustomTeeCommander.SetGradient(Value:TTeeGradient);
begin
  if Assigned(Value) then Gradient.Assign(Value)
                     else FreeAndNil(FGradient);
end;

procedure TCustomTeeCommander.TeeEvent(Event:TTeeEvent);
begin
  if Event is TTeeMouseEvent then
  With TTeeMouseEvent(Event) do
  begin
    Case Event of
      meDown: begin
                FMouseButton:=Button;
                DoMouseDown(X,Y);
              end;
      meUp:  DoMouseUp;
      meMove: DoMouseMove(X,Y);
    end;
    Sender.CancelMouse:=not DoPanelMouse;
  end
  else
  if Event is TTeeView3DEvent then
     ShowHideControls(Assigned(Panel));
end;

Procedure TCustomTeeCommander.DoMouseDown(X,Y:Integer);
begin
end;

Procedure TCustomTeeCommander.DoMouseMove(X,Y:Integer);
begin
end;

Procedure TCustomTeeCommander.DoMouseUp;
begin
end;

Procedure TCustomTeeCommander.ShowHideControls(Value:Boolean);
Var t : Integer;
begin

⌨️ 快捷键说明

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