📄 aqdockingbase.pas.~1~
字号:
TaqCustomDockingSite = class(TaqCustomControl)
private
FDockingManager: TaqCustomDockingManager;
FTreeIndex: Integer;
FDockingKey: TGUID;
FDockingKeyLoaded: Boolean;
FDockingState: TaqDockingSiteState;
FCanUndockMainItem: Boolean;
FAllowConstraints: Boolean;
FAllowDock: Boolean;
FOnCanUndock: TaqDockingQueryEvent;
FOnCanDock: TaqDockingQueryEvent;
FOnUndock: TaqDockingSiteEvent;
FOnDock: TaqDockingSiteEvent;
function GetParentWindowHandle: Cardinal;
procedure ReadKey(Reader: TReader);
procedure WriteKey(Writer: TWriter);
procedure SetMainTreeItem(AControl: TaqCustomDockingControl);
function GetDesigning: Boolean;
protected
FScreenOrigin: TPoint;
procedure UpdateOleDropEnabled(const Value: Boolean); virtual;
procedure HandleOleDropActivity(Pos: TPoint; Action: TOleDropAction; var Key: TGUID); virtual;
procedure DrawSplitters;
procedure DrawDesigner(ACanvas: TCanvas; ABounds: TRect);
procedure UpdateDockingTree(UpdateGroupControl: Boolean = True);
procedure RegisterHiddenControl(AControl: TaqCustomDockingControl; AOrientation: TaqHideZoneOrientation); virtual;
procedure UnregisterHiddenControl(AControl: TaqCustomDockingControl); virtual;
procedure ShowDockingControl(AControl: TaqCustomDockingControl;
Showing: Boolean; Immediately: Boolean = False); virtual;
procedure DoActiveControlChange; virtual;
function BeforeDockingRead: Boolean; virtual;
function GetMainTreeItem: TaqCustomDockingControl; virtual;
function GetScreenClientRect: TRect; virtual;
function GetScreenDockZone: TRect; virtual;
procedure UpdateMainTreeItem(AControl: TaqCustomDockingControl); virtual;
procedure HideMainTreeItem; virtual;
procedure SetDockingManager(const Value: TaqCustomDockingManager); virtual;
function CanUndockItem(AItem: TaqCustomDockingControl): Boolean; virtual;
function CanDockItem(AItem: TaqCustomDockingControl): Boolean; virtual;
function CanAutoHideItem(AItem: TaqCustomDockingControl): Boolean; virtual;
function CanUndoAutoHideItem(AItem: TaqCustomDockingControl): Boolean; virtual;
procedure DoControlDock(Sender: TaqCustomDockingControl; Index: Integer;
Child: TaqCustomDockingControl); virtual;
procedure DoControlUndock(Sender: TaqCustomDockingControl; Index: Integer;
Child: TaqCustomDockingControl); virtual;
procedure DoControlChange(Sender: TaqCustomDockingControl; Change: TaqDockingControlChange); virtual;
procedure DoControlResized(Sender: TaqCustomDockingControl); virtual;
procedure CheckCanDock(AControl: TaqCustomDockingControl); virtual;
procedure CheckCanUndock(AControl: TaqCustomDockingControl); virtual;
procedure SaveToStream(Writer: TaqCustomDockingWriter); virtual;
procedure LoadFromStream(Reader: TaqCustomDockingReader); virtual;
class function GetDockingSiteTypeId: Integer; virtual;
{$IFDEF VCL}
procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED;
{$ELSE}
procedure VisibleChanged; override;
{$ENDIF}
procedure DefineProperties(Filer: TFiler); override;
procedure ReadState(Reader: TReader); override;
procedure CustomAlignPosition(Control: TControl; var NewLeft, NewTop,
NewWidth, NewHeight: Integer; var AlignRect: TRect{$IFDEF VCL};
AlignInfo: TAlignInfo{$ENDIF}); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure Resize; override;
procedure Paint; override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure PerformSizeConstraintsUpdate; virtual;
{$IFDEF VCL}
function DesignWndProc(var Message: TMessage): Boolean; override;
procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
{$ELSE}
procedure CursorChanged; override;
{$ENDIF}
property AllowConstraints: Boolean read FAllowConstraints write FAllowConstraints;
property CanUndockMainItem: Boolean read FCanUndockMainItem write FCanUndockMainItem;
property Designing: Boolean read GetDesigning;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
procedure PerformUpdate; virtual;
function GetItemByPos(const Pos: TPoint): TaqCustomDockingControl; virtual;
property AllowDock: Boolean read FAllowDock write FAllowDock;
property MainItem: TaqCustomDockingControl read GetMainTreeItem write SetMainTreeItem;
property TreeIndex: Integer read FTreeIndex;
property DockingKey: TGUID read FDockingKey write FDockingKey;
property DockingState: TaqDockingSiteState read FDockingState write FDockingState;
property ParentWindowHandle: Cardinal read GetParentWindowHandle;
property DockingManager: TaqCustomDockingManager read FDockingManager write SetDockingManager;
property OnDock: TaqDockingSiteEvent read FOnDock write FOnDock;
property OnUndock: TaqDockingSiteEvent read FOnUndock write FOnUndock;
property OnCanDock: TaqDockingQueryEvent read FOnCanDock write FOnCanDock;
property OnCanUndock: TaqDockingQueryEvent read FOnCanUnDock write FOnCanUnDock;
end;
TaqCustomFloatingFormClass = class of TaqCustomFloatingForm;
TaqCustomFloatingForm = class(TForm)
private
FImageIndex: Integer;
FDockingSite: TaqFloatingSite;
FFloatingFormType: TaqFloatingFormType;
FZombie: Boolean;
FMainItem: TaqCustomDockingControl;
{$IFDEF VCL}
FDragDockKind: TaqDragDockKind;
FLastClickPosition: TPoint;
{$ELSE}
FPositionChanged, FMoveEvent: Boolean;
{$ENDIF}
procedure SetFloatingFormType(const Value: TaqFloatingFormType);
procedure DoUpdateDockingTree;
procedure FinalizeSite;
procedure FinalizeForm;
procedure UpdateForm;
protected
procedure Activate; override;
procedure Deactivate; override;
{$IFDEF VCL}
procedure CreateParams(var Params: TCreateParams); override;
procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED;
procedure WMEraseBackground(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
procedure WMActivate(var Message: TWMActivate); message WM_ACTIVATE;
procedure WMClose(var Message: TWMClose); message WM_CLOSE;
procedure WMContextMenu(var Message: TWMContextMenu); message WM_CONTEXTMENU;
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
procedure WndProc(var Message: TMessage); override;
procedure WMNCLButtonDblClk(var Message: TWMNCLButtonDblClk); message WM_NCLBUTTONDBLCLK;
function WndCaptionDragging(var Message: TWMNCHitMessage): Boolean;
{$ELSE}
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; override;
procedure ChangeBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
procedure BoundsChanged; override;
{$ENDIF}
procedure UpdateActions; override;
procedure DoClose(var Action: TCloseAction); override;
procedure RemoveDesigning;
public
constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); override;
constructor CreateEx(AOwner: TComponent; AStayOnTop: Boolean); virtual;
destructor Destroy; override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
function CloseQuery: boolean; override;
property DockingSite: TaqFloatingSite read FDockingSite;
property FloatingFormType: TaqFloatingFormType read FFloatingFormType write SetFloatingFormType;
end;
TaqParentedDockingSite = class(TaqCustomDockingSite)
private
FParentEvents: TaqWindowEventFilter;
FOleDropHelper: TaqOleDropAcceptor;
protected
procedure ParentMoved(Sender: TControl); virtual;
procedure ParentResized(Sender: TControl); virtual;
procedure ParentDestroyed(Sender: TControl); virtual;
procedure UpdateOleDropEnabled(const Value: Boolean); override;
{$IFDEF VCL}
procedure CreateWindowHandle(const Params: TCreateParams); override;
procedure DestroyWindowHandle; override;
procedure CreateWnd; override;
procedure SetParent(AParent: TWinControl); override;
{$ELSE}
procedure SetParent(const AParent: TWidgetControl); override;
{$ENDIF}
property ParentEvents: TaqWindowEventFilter read FParentEvents;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
TaqFloatingSite = class(TaqParentedDockingSite)
private
FUpdatingStayOnTop: Boolean;
procedure UpdateFloatingForm;
function GetFloatingForm: TaqCustomFloatingForm;
protected
{ TaqCustomDockingSite }
function GetScreenDockZone: TRect; override;
procedure UpdateMainTreeItem(AControl: TaqCustomDockingControl); override;
procedure SetDockingManager(const Value: TaqCustomDockingManager); override;
procedure DoControlDock(Sender: TaqCustomDockingControl; Index: Integer; Child: TaqCustomDockingControl); override;
procedure DoControlUndock(Sender: TaqCustomDockingControl; Index: Integer; Child: TaqCustomDockingControl); override;
procedure DoControlChange(Sender: TaqCustomDockingControl; Change: TaqDockingControlChange); override;
procedure SaveToStream(Writer: TaqCustomDockingWriter); override;
procedure LoadFromStream(Reader: TaqCustomDockingReader); override;
class function GetDockingSiteTypeId: Integer; override;
{$IFDEF VCL}
procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED;
{$ELSE}
procedure VisibleChanged; override;
{$ENDIF}
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
{ TaqCustomDockingSite }
procedure PerformUpdate; override;
function GetItemByPos(const Pos: TPoint): TaqCustomDockingControl; override;
property FloatingForm: TaqCustomFloatingForm read GetFloatingForm;
end;
TaqCustomDockingFrame = class(TaqOwnedObject)
private
FMaskForm: TaqCustomMaskForm;
FMover: TaqCustomMover;
FRealSize: TPoint;
FAutoDragDocking: Boolean;
FShowDockingHint: Boolean;
FFrameInfo: string;
FCanFloat: Boolean;
procedure HandleFrameMove(Shift: TShiftState);
procedure SetRealSize(const Value: TPoint);
function CalculateFrameInfo(Dragging: Boolean; var Info: TaqDockingFrameInfo): Boolean;
function GetBoundsRect: TRect;
procedure SetBoundsRect(const Value: TRect);
function GetFrameSize: TaqFrameSize;
procedure SetFrameSize(const Value: TaqFrameSize);
function GetCursorOffset: TPoint;
procedure SetCursorOffset(const Value: TPoint);
function GetVisible: Boolean;
procedure SetVisible(const Value: Boolean);
procedure MaskFormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure MaskFormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure MaskFormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure MaskFormEndDrag(Sender: TObject; Successful: Boolean);
procedure MaskFormFinalize(Sender: TObject);
procedure SetRegion(ARegion: TaqHandle);
function GetRegion: TaqHandle;
protected
procedure SetMover(const Value: TaqCustomMover); virtual;
function GetMaskFormClass: TaqCustomMaskFormClass; virtual; abstract;
property MaskForm: TaqCustomMaskForm read FMaskForm;
public
constructor Create(ADockingManager: TaqCustomDockingManager); override;
destructor Destroy; override;
property AutoDragDocking: Boolean read FAutoDragDocking write FAutoDragDocking;
property BoundsRect: TRect read GetBoundsRect write SetBoundsRect;
property CursorOffset: TPoint read GetCursorOffset write SetCursorOffset;
property FrameSize: TaqFrameSize read GetFrameSize write SetFrameSize;
property Mover: TaqCustomMover read FMover write SetMover;
property RealSize: TPoint read FRealSize write SetRealSize;
property Region: TaqHandle read GetRegion write SetRegion;
property ShowDockingHint: Boolean read FShowDockingHint write FShowDockingHint;
property Visible: Boolean read GetVisible write SetVisible;
end;
TaqOwnedPersistent = class(TPersistent)
private
FOwner: TaqCustomDockingManager;
protected
function GetOwner: TPersistent; override;
public
constructor Create(AOwner: TComponent); virtual;
property DockingManager: TaqCustomDockingManager read FOwner;
end;
TaqDockingControls = class(TaqOwnedPersistent)
private
FControls: TComponentList;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -