📄 teecomma.pas
字号:
{**********************************************}
{ 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 + -