📄 aqdocking.pas
字号:
end;
TaqWorkspaceDocker = class(TaqDocker)
public
{ TaqDocker }
function GetDockingRegionType(APoint: TPoint): TaqDockingRegionType; override;
function GetDockingZoneRgn(ARegion: TaqDockingRegionType): TaqHandle; override;
function HasDockingZone(ARegion: TaqDockingRegionType): Boolean; override;
function GetDockingRect(ARegion: TaqDockingRegionType; ADragControl: TaqCustomDockingControl): TRect; Override;
function GetDockingFrameRgn(ARegion: TaqDockingRegionType; ADragControl: TaqCustomDockingControl): TaqHandle; override;
procedure DockItem2(Region: TaqDockingRegionType;
Item: TaqCustomDockingControl; FocusItem: Boolean = True); override;
{ TaqCustomDocker }
procedure DockItem(const P: TPoint; Item: TaqCustomDockingControl); override;
end;
IaqDockingManagerCustomizer = interface(IInterface)
['{AC3F8B48-60ED-405B-B7D9-9F543D391A6F}']
procedure EnableParentForms(AEnable: Boolean);
procedure SelectPanel(AControl: TaqCustomDockingControl; AEdit: Boolean);
procedure ShowDockingSetup(ADockingManager: TaqDockingManager;
AShow: Boolean = True; const ActivePage: string = '');
procedure UpdatePanel(AControl: TaqCustomDockingControl);
function GetCustomizing: Boolean;
property Customizing: Boolean read GetCustomizing;
end;
TaqFloatingFormCreateEvent = procedure(Sender: TaqDockingManager; Form: TaqCustomFloatingForm) of object;
TaqFloatingFormCloseEvent = procedure(Sender: TaqDockingManager; Form: TaqCustomFloatingForm;
var Action: TCloseAction) of object;
TaqCollisionEvent = procedure(Sender: TaqDockingManager; AControl, ATarget: TaqCustomDockingControl;
var ASize: TPoint; var ARegion: TaqDockingRegionType) of object;
TaqContainerPopupEvent = procedure (Sender: TaqCustomDockingManager;
Control: TaqCustomDockingContainer; AMenu: TPopupMenu; Flags: Cardinal;
var ACoord: TPoint; var Allow: Boolean) of object;
TaqDockingManager = class(TaqCustomDockingManager)
private
FMainDockSite: TaqCustomDockingSite;
FDockingStyle: TaqDockingStyle;
FIntDockingStyle: TaqDockingStyle;
FOwnerForm: TCustomForm;
FShowCloseButtonOnTabs: Boolean;
FCloseButtonOnTabPosition: TaqCustomCaptionButtonPosition;
FAdjustButtonSizeOnTabs: Boolean;
FShowTabsPopupButton: Boolean;
FShowInsideContainerDockZones: Boolean;
FShowContainerCaption: TaqContainerTypes;
FShowImages: TaqCaptionType;
FCursor: TCursor;
FStorePath: string;
FStoreKind: TaqDockingStoreKind;
FStoreOptions: TaqDockingStoreOptions;
FStored: Boolean;
FFinalized: Boolean;
FNullSite: TaqControl;
FCustomizer: IaqDockingManagerCustomizer;
FCustomPages: TComponentList;
FOwnDockingStyle: Boolean;
FInfo: Pointer;
FFloatingFormClass: TaqCustomFloatingFormClass;
FAutoHideInterval: Integer;
FAutoHideContainers: TaqContainerTypes;
FAutoHideEnabled: Boolean;
FAutoHideStartAction: TaqAutoHideStartAction;
FAutoHideCaptions: TaqAutoHideCaptions;
FAutoHideTabs: TaqAutoHideTabs;
FAutoShowSpeed: Byte;
FAutoHideSpeed: Byte;
FOnFloatingFormClose: TaqFloatingFormCloseEvent;
FOnFloatingFormCreate: TaqFloatingFormCreateEvent;
FOnCollision: TaqCollisionEvent;
FOnContainerPopup: TaqContainerPopupEvent;
procedure SetMainDockSite(const Value: TaqCustomDockingSite);
function DockToMainSite(Control: TaqCustomDockingControl): Boolean;
procedure DockAllToMainSite;
procedure SetShowContainerCaption(const Value: TaqContainerTypes);
procedure SetShowImages(const Value: TaqCaptionType);
procedure FloatingFormDestroy;
procedure ParentFormDestroy;
function GetCustomizing: Boolean;
procedure SetDockingStyle(const Value: TaqDockingStyle);
procedure InitializeDockingStyle;
procedure FinalizeDockingStyle;
function GetDockingStyle: TaqDockingStyle;
function GetDockingStyleClass: TaqDockingStyleClass;
procedure SetDockingStyleClass(const Value: TaqDockingStyleClass);
function GetDockingStyleClassName: string;
procedure SetDockingStyleClassName(const Value: string);
procedure ReadStyle(Reader: TReader);
procedure WriteStyle(Writer: TWriter);
procedure SetAutoHideContainers(const Value: TaqContainerTypes);
procedure SetAutoHideEnabled(const Value: Boolean);
procedure SetAutoHideCaptions(const Value: TaqAutoHideCaptions);
procedure SetAutoHideTabs(const Value: TaqAutoHideTabs);
procedure SetShowCloseButtonOnTabs(const Value: Boolean);
procedure SetCloseButtonOnTabPosition(const Value: TaqCustomCaptionButtonPosition);
procedure SetAdjustButtonSizeOnTabs(const Value: Boolean);
procedure SetShowTabsPopupButton(const Value: Boolean);
protected
function GetContainerByClass(AContainerClass: TaqCustomDockingContainerClass): TaqCustomDockingContainer;
procedure DoFloatingFormCreate(AForm: TaqCustomFloatingForm); virtual;
procedure DoFloatingFormClose(AForm: TaqCustomFloatingForm; var AAction: TCloseAction); virtual;
procedure DoCollision(AControl, ATarget: TaqCustomDockingControl;
var ASize: TPoint; var ARegion: TaqDockingRegionType); virtual;
function CreateControl: TaqCustomDockingControl; override;
function CreateNullDockingSite: TaqCustomDockingSite; override;
procedure FinalizeNullDockingSite(var Site: TaqCustomDockingSite); override;
procedure RegisterControl(Control: TaqCustomDockingControl); override;
procedure UnregisterControl(Control: TaqCustomDockingControl); override;
procedure BeforeDockingRead; override;
procedure AfterDockingRead; override;
procedure DoControlChanged(Control: TaqCustomDockingControl; Change: TaqDockingControlChange); override;
function DoRenameDockControl(Control: TaqCustomDockingControl): string; override;
function CreateFloatingForm(Rect: TRect; ClientCoords: Boolean = True): TaqCustomDockingSite; override;
function CreateDockingFrame(Rect: TRect; const AMover: TaqCustomMover): TaqCustomDockingFrame; override;
function GetContainerClass(Id: Integer): TaqCustomDockingContainerClass; override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure Loaded; override;
procedure DefineProperties(Filer: TFiler); override;
function GetCustomButtonsPosition(ButtonIndex: Integer): TaqCustomCaptionButtonPosition; override;
property OwnerForm: TCustomForm read FOwnerForm;
property CustomPages: TComponentList read FCustomPages;
property FloatingFormClass: TaqCustomFloatingFormClass read FFloatingFormClass write FFloatingFormClass;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure AddPropertyPage(PageFrame: TCustomFrame);
procedure RemovePropertyPage(PageFrame: TCustomFrame);
procedure Customize(AShow: Boolean = True; const ActivePage: string = '');
procedure SaveLayout(Writer: TaqCustomDockingWriter); override;
procedure LoadLayout(Reader: TaqCustomDockingReader); override;
// Docking helpers
procedure Dock(AControl, ADest: TaqCustomDockingControl;
ARegion: TaqDockingRegionType; AFocusItem: Boolean = True);
property Customizing: Boolean read GetCustomizing;
property DockingStyleClass: TaqDockingStyleClass read GetDockingStyleClass write SetDockingStyleClass;
property MainDockSite: TaqCustomDockingSite read FMainDockSite write SetMainDockSite;
property ShowInsideContainerDockZones: Boolean read FShowInsideContainerDockZones write FShowInsideContainerDockZones;
published
property ActiveControl;
property AutoDockKey;
property AutoDragDocking;
property AutoDragKey;
property AutoHideCaptions: TaqAutoHideCaptions read FAutoHideCaptions write SetAutoHideCaptions default ahcActiveOnly;
property AutoHideContainers: TaqContainerTypes read FAutoHideContainers write SetAutoHideContainers default cntAll;
property AutoHideEnabled: Boolean read FAutoHideEnabled write SetAutoHideEnabled default True;
property AutoHideInterval: Integer read FAutoHideInterval write FAutoHideInterval default 500;
property AutoHideSpeed: Byte read FAutoHideSpeed write FAutoHideSpeed default 150;
property AutoHideStartAction: TaqAutoHideStartAction read FAutoHideStartAction write FAutoHideStartAction default ahsHover;
property AutoHideTabs: TaqAutoHideTabs read FAutoHideTabs write SetAutoHideTabs default ahtAllTabs;
property AutoShowSpeed: Byte read FAutoShowSpeed write FAutoShowSpeed default 150;
property CaptionButtons default dbiDefault;
property CtrlTabControlSwitch;
property DockingStyleClassName: string read GetDockingStyleClassName write SetDockingStyleClassName;
property DockingStyle: TaqDockingStyle read FDockingStyle write SetDockingStyle;
property Enabled;
property FloatingFormConstraints;
property FloatingFormOnTop default False;
property FloatingFormType default fftTool;
property Images;
property Items;
property MenuImages;
property CustomButtonImages;
property ShowCloseButtonOnTabs: Boolean read FShowCloseButtonOnTabs write SetShowCloseButtonOnTabs default False;
property CloseButtonOnTabPosition: TaqCustomCaptionButtonPosition read FCloseButtonOnTabPosition write SetCloseButtonOnTabPosition default bcpBefore;
property OleDropEnabled;
property AdjustButtonSizeOnTabs: Boolean read FAdjustButtonSizeOnTabs write SetAdjustButtonSizeOnTabs default False;
property ShowTabsPopupButton: Boolean read FShowTabsPopupButton write SetShowTabsPopupButton default False;
property ShowContainerCaption: TaqContainerTypes read FShowContainerCaption write SetShowContainerCaption default [cntInsideBottom];
property ShowDisabledButtons;
property ShowDockButtonHint;
property ShowDockingHint;
property ShowImages: TaqCaptionType read FShowImages write SetShowImages default [ctCaption, ctTab, ctHiddenTab];
property SplitterHCursor;
property SplitterVCursor;
property SplitterPopupMenu;
property StoreKind: TaqDockingStoreKind read FStoreKind write FStoreKind default dskNone;
property StoreOptions: TaqDockingStoreOptions read FStoreOptions write FStoreOptions default [];
property StorePath: string read FStorePath write FStorePath;
property StyleManager;
property Style stored False;
property OnActiveControlChange;
property OnBeforeLoadControl;
property OnCaptionPopup;
property OnCloseQuery;
property OnContainerPopup: TaqContainerPopupEvent read FOnContainerPopup write FOnContainerPopup;
property OnChange;
property OnCollision: TaqCollisionEvent read FOnCollision write FOnCollision;
property OnDock;
property OnDragDock;
property OnFloatingFormCreate: TaqFloatingFormCreateEvent read FOnFloatingFormCreate write FOnFloatingFormCreate;
property OnFloatingFormClose: TaqFloatingFormCloseEvent read FOnFloatingFormClose write FOnFloatingFormClose;
property OnHide;
property OnHideEx;
property OnLoadControl;
property OnPopupMenuCreate;
property OnRegister;
property OnRename;
property OnShow;
property OnSplitterPopup;
property OnStyleChange;
property OnUndock;
property OnUnregister;
property OnUpdateActions;
property OnUpdateContainer;
end;
TaqDockingManagerList = class(TObject)
private
FList: TList;
FAppEvents: TaqApplicationEvents;
function GetDockingManager(Index: Integer): TaqDockingManager;
function GetCount: Integer;
function GetCustomizingManager: TaqDockingManager;
function GetDockingManagerByForm(AForm: TCustomForm): TaqDockingManager;
procedure DoApplicationActivate(Sender: TObject);
procedure DoApplicationDeactivate(Sender: TObject);
procedure DoShowFloatingForms(AOwnerForm: TCustomForm);
procedure DoHideFloatingForms(AOwnerForm: TCustomForm);
protected
procedure RegisterDockingManager(AManager: TaqCustomDockingManager);
procedure UnregisterDockingManager(AManager: TaqCustomDockingManager); virtual;
public
constructor Create;
destructor Destroy; override;
property DockingManagers[Index: Integer]: TaqDockingManager read GetDockingManager; default;
property ManagerByForm[AForm: TCustomForm]: TaqDockingManager read GetDockingManagerByForm;
property Count: Integer read GetCount;
property CustomizingManager: TaqDockingManager read GetCustomizingManager;
end;
const
idactOrientationGroup = idactBase + $100;
idactTopOrientation = idactOrientationGroup + 1;
idactBottomOrientation = idactOrientationGroup + 2;
idactTabGroup = idactBase + $110;
idactChildGroup = idactBase + $120;
idactChildHide = idactChildGroup + idactHide - idactDefaultGroup;
idactChildUndock = idactChildGroup + idactUndock - idactDefaultGroup;
idactChildHelp = idactChildGroup + idactHelp - idactDefaultGroup;
idactChildCustom = idactChildGroup + idactCustom - idactDefaultGroup;
idactChildRename = idactChildGroup + idactRename - idactDefaultGroup;
// Flags for OnPopupMenuCreate, OnCaptionPopup
dpmTab = 1;
function aqDockingManagers: TaqDockingManagerList;
function aqDockingStyles: TaqClassList;
procedure RegisterCustomizer(const ACustomizer: IaqDockingManagerCustomizer);
implementation
uses
SysUtils, Math, aqMaskForms, aqDockingConst, aqDockingNative,
{$IFDEF DefaultCustomizer}
aqDockCustForm,
{$ENDIF}
{$IFDEF VCL}
aqDockingVS2005, aqDockingVSWhidbey, Consts;
{$ELSE}
QConsts;
{$ENDIF}
const
AlignWeight: array [TaqDockingAlignment] of Integer = (0, -1, -1, 1, 1);
TabTargetWidth = 3;
ChildActions: array [0..4] of TaqActionID =
(idactChildHide, idactChildUndock, idactChildHelp, idactChildCustom,
idactChildRename);
InsideRegions: array [TaqChildInsertOrder] of TaqDockingRegionType = (
// cioBefore, cioAfter
drtInsideBefore, drtInside);
HorRegions: array [TaqChildInsertOrder] of TaqDockingRegionType = (
// cioBefore, cioAfter
drtLeft, drtRight);
VertRegions: array [TaqChildInsertOrder] of TaqDockingRegionType = (
// cioBefore, cioAfter
drtTop, drtBottom);
type
PFormPlacementInfo = ^TFormPlacementInfo;
TFormPlacementInfo = record
Mask: TaqDockingStoreOptions;
Bounds: TRect;
WindowState: TWindowState;
Constraints: record
MaxHeight: TConstraintSize;
MaxWidth: TConstraintSize;
MinHeight: TConstraintSize;
MinWidth: TConstraintSize;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -