📄 aqdockingbase.pas.~6~
字号:
function AddAction(ActionId: TaqActionID; Index: Integer = -1): TMenuItem;
function AddSeparator(GroupId: TaqActionID = 0; Index: Integer = -1): TMenuItem;
function FindAction(ActionId: TaqActionID): TMenuItem;
end;
TaqSplitterItemInfo = record
BoundsRect: TRect;
Orientation: TaqSplitterOrientation;
Cursor: TaqMouseCursor;
FirstControl, SecondControl: TaqCustomDockingControl;
end;
TaqSplitterInfo = array of TaqSplitterItemInfo;
TaqCustomPlacementInfo = class(TObject)
private
FOwner: TaqCustomDockingControl;
FPosition: TPoint;
FSize: TPoint;
FState: TaqDockingPanelState;
FFloatSize: TPoint;
FFloatPos: TPoint;
FFloatState: TWindowState;
FLastHideZone: TaqHideZoneOrientation;
protected
procedure LoadFromStream(Reader: TaqCustomDockingReader); virtual;
procedure SaveToStream(Writer: TaqCustomDockingWriter); virtual;
procedure AfterDockingRead; virtual;
property Owner: TaqCustomDockingControl read FOwner;
property Position: TPoint read FPosition write FPosition;
property Size: TPoint read FSize write FSize;
property State: TaqDockingPanelState read FState write FState;
property FloatPos: TPoint read FFloatPos write FFloatPos;
property FloatSize: TPoint read FFloatSize write FFloatSize;
property FloatState: TWindowState read FFloatState write FFloatState;
property LastHideZone: TaqHideZoneOrientation read FLastHideZone write FLastHideZone;
public
constructor Create(AOwner: TaqCustomDockingControl); virtual;
procedure SavePosition; virtual;
procedure RestorePosition; virtual;
function DockToPosition: Boolean; virtual;
procedure UndockToPosition; virtual;
end;
TaqCustomPlacementInfoClass = class of TaqCustomPlacementInfo;
TaqCloseQueryEvent = procedure (Sender: TaqCustomDockingControl;
var CanClose: Boolean) of object;
TaqChildNotifyEvent = procedure (Sender: TaqCustomDockingControl; Index: Integer;
Child: TaqCustomDockingControl) of object;
TaqCustomButtonClickEvent = procedure (Sender: TaqCustomDockingControl; ButtonIndex: Integer;
MouseButton: TMouseButton) of object;
TaqHideControlEvent = procedure (Sender: TaqCustomDockingControl;
var HideAction: TaqControlHideAction) of object;
TaqDockOverEvent = procedure (Sender, Source: TaqCustomDockingControl;
Coord: TPoint; State: TaqDockOverState; var Allow: Boolean) of object;
TaqDockDropEvent = procedure (Sender, Source: TaqCustomDockingControl;
Coord: TPoint) of object;
TaqStartDockEvent = procedure (Sender: TaqCustomDockingControl;
var FrameRect: TRect; var FrameSize: TaqFrameSize) of object;
TaqEndDockEvent = procedure (Sender, Target: TaqCustomDockingControl;
Coord: TPoint; Cancelled: Boolean) of object;
TaqDragDockEvent = procedure (Sender, Target: TaqCustomDockingControl;
Coord: TPoint; FrameRgn: TaqHandle; var Info: string; var CanDock: Boolean;
var CanFloat: Boolean) of object;
TaqPopupMenuCreateEvent = procedure (Sender: TaqCustomDockingControl;
AMenu: TaqDockMenu; Flags: Cardinal) of object;
TaqCaptionPopupEvent = procedure (Sender: TaqCustomDockingControl;
AMenu: TaqDockMenu; Flags: Cardinal; var ACoord: TPoint; var Allow: Boolean) of object;
TaqChangeEvent = procedure (Sender: TaqCustomDockingControl;
Change: TaqDockingControlChange) of object;
TaqAutoHideChangingEvent = procedure (Sender: TaqCustomDockingControl; AutoHide: Boolean;
Orientation: TaqHideZoneOrientation) of object;
TaqAutoHideCalcEvent = procedure (Sender, Control: TaqCustomDockingControl;
var Orientation: TaqHideZoneOrientation) of object;
TaqNeedHintTextEvent = procedure (Sender: TaqCustomDockingControl; var HintText: string) of object;
TaqCustomDockingControl = class(TaqCustomControl)
private
FDockingManager: TaqCustomDockingManager;
FChildren: TList;
FTreeIndex: Integer;
FParentItem: TaqCustomDockingControl;
FPositionToAdd: Integer;
FLastClickPosition: TPoint;
FDesigning: Boolean;
FCaption: string;
FData: Pointer;
FScreenRect: TRect;
FLastPos: TaqCustomPlacementInfo;
FNormalSize: TPoint;
FDefShowCaption: Boolean;
FShowCaption: TaqBooleanValue;
FDockingKey: TGUID;
FActions: TaqIntegerList;
FButtons: TaqDockCaptionButtonsEx;
FDefMinWidth: Integer;
FDefMinHeight: Integer;
FCaptionMenu: TaqDockMenu;
FAutoHideMenuItem: TMenuItem;
FAlignMenuItem: TMenuItem;
FChildrenSizing: Boolean;
FPanelState: TaqDockingPanelState;
FImageIndex: TImageIndex;
FDragDockKind: TaqDragDockKind;
FLockBounds: Boolean;
FActiveControl: TaqControl;
FShowImage: TaqBooleanValue;
{$IFNDEF VCL}
FMouseLeave: Boolean;
{$ENDIF}
FShowAfterLoading: Boolean;
FVisible: Boolean;
FMinWidth: Integer;
FMinHeight: Integer;
FDockingStateCount: Integer;
FDefParentShowHint: Boolean;
FDefShowHint: Boolean;
FDefShowHintStored: Boolean;
FControlStatus: TaqDockingControlStatus;
FCaptionDblClickAction: TaqActionId;
FFirstSplitterItem: TaqCustomDockingControl;
FSecondSplitterItem: TaqCustomDockingControl;
FAutoHideOrientation: TaqHideZoneOrientation;
FAutoHideSite: TaqCustomDockingSite;
FAutoHideContainer: TaqCustomDockingControl;
FActiveCanClose: TaqBooleanValue;
FOnAutoHideCalc: TaqAutoHideCalcEvent;
FOnAutoHideChanging: TaqAutoHideChangingEvent;
FOnAutoHideChanged: TNotifyEvent;
FOnChildDock: TaqChildNotifyEvent;
FOnChildUndock: TaqChildNotifyEvent;
FOnChange: TaqChangeEvent;
FOnCustomButtonClick: TaqCustomButtonClickEvent;
FOnHide: TNotifyEvent;
FOnHideEx: TaqHideControlEvent;
FOnCloseQuery: TaqCloseQueryEvent;
FOnShow: TNotifyEvent;
FOnUpdateActions: TNotifyEvent;
FOnDockOver: TaqDockOverEvent;
FOnDockDrop: TaqDockDropEvent;
FOnEndDock: TaqEndDockEvent;
FOnStartDock: TaqStartDockEvent;
FOnDragDock: TaqDragDockEvent;
FOnPopupMenuCreate: TaqPopupMenuCreateEvent;
FOnCaptionPopup: TaqCaptionPopupEvent;
FOnNeedHintText: TaqNeedHintTextEvent;
procedure SetInternalVisible(AVisible: Boolean);
function GetInternalVisible: Boolean;
procedure SetScreenRectCoord(const Index: Integer; const Value: Integer);
function GetScreenRectCoord(const Index: Integer): Integer;
procedure SetScreenRect(const Value: TRect);
procedure SetTreeIndex(Index: Integer);
function CanUndock: Boolean;
procedure SetDockingKey(const Value: TGUID);
function GetDockState: TaqDockingControlState;
procedure SetPanelState(const Value: TaqDockingPanelState);
function GetDockingManager: TaqCustomDockingManager;
procedure SetImageIndex(const Value: TImageIndex);
function GetCaptionHeight: Integer;
procedure ReadKey(Reader: TReader);
procedure WriteKey(Writer: TWriter);
procedure SetHeight(const Value: Integer);
procedure SetWidth(const Value: Integer);
procedure SetActiveControl(const Value: TaqControl);
procedure SetCaption(const Value: string);
function GetChildCount: Integer; virtual;
function GetChild(Index: Integer): TaqCustomDockingControl;
procedure SetShowImage(const Value: TaqBooleanValue);
procedure SetPreferredHeight(const Value: Integer);
procedure SetPreferredWidth(const Value: Integer);
procedure SetAlignment(Value: TaqDockingAlignment);
procedure SetVisible(const Value: Boolean);
function GetActions(ActionId: TaqActionId): TaqCustomDockAction;
procedure AlignMenuItemClick(Sender: TObject);
function GetMinConstraints: TPoint;
procedure SetMinHeight(const Value: Integer);
procedure SetMinWidth(const Value: Integer);
procedure SetShowCaption(const Value: TaqBooleanValue);
procedure SplitterStarted(Info: TaqSplitterItemInfo; Actually: Boolean);
procedure SplitterFinished;
function GetIndex: Integer;
function GetPreferredHeight: Integer;
function GetPreferredWidth: Integer;
procedure SetCaptionDblClickAction(const Value: TaqActionId);
function GetAutoHide: Boolean;
procedure SetAutoHide(const Value: Boolean);
procedure SetAutoHideOrientation(const Value: TaqHideZoneOrientation);
procedure InternalRevertAutoHide(Show: Boolean);
function GetAutoHideOrientation: TaqHideZoneOrientation;
procedure SetAutoHideContainer(Value: TaqCustomDockingControl);
procedure DestroyActions;
protected
FFitCaption: Boolean;
FAlignment: TaqDockingAlignment;
FHitInfo: TaqHitInfo;
procedure Modified;
function HitInfo(const Coord: TPoint): TaqHitInfo;
procedure EnterControlStatus(AControlStatus: TaqDockingControlStatus);
procedure LeaveControlStatus(AControlStatus: TaqDockingControlStatus);
function IsValidAlignment(AAlign: TaqDockingAlignment): Boolean;
procedure AdjustConstraints;
function GetCaptionState: TaqDockCaptionState;
procedure InvalidateChildren; virtual;
procedure SetChildIndex(OldIndex, NewIndex: Integer);
function SetDockingConstraints(const MinValue: TPoint): Boolean;
procedure SetUpdating(Value: Boolean);
procedure LockBounds;
procedure UnlockBounds;
procedure SetBoundsRect(const ABounds: TRect);
function HideControl(Explicitly: Boolean = False): Boolean;
{$IFNDEF VCL}
procedure DrawButtons;
{$ENDIF}
procedure InvalidateButtons;
procedure SetDefShowCaption(const Value: Boolean; Explicitly: Boolean = True);
procedure InternalForceVisible;
procedure UpdateDockActions;
procedure ShowPopupMenu(AMenu: TaqDockMenu; ACoord: TPoint; Flags: Cardinal);
procedure EnterDockingState;
procedure LeaveDockingState;
procedure UpdateAlignment;
function DockingManagerAssigned: Boolean;
function GetAutoHideContainer: TaqCustomDockingControl;
function GetHeight: Integer; virtual;
function GetWidth: Integer; virtual;
procedure CheckState(AState: TaqDockingControlStatus); virtual;
procedure CheckAlignment(AAlign: TaqDockingAlignment); dynamic;
function IsValidChildAlignment(AAlign: TaqDockingAlignment): Boolean; dynamic;
procedure ValidateAlignment(Child: TaqCustomDockingControl;
var AAlignment: TaqDockingAlignment); virtual;
function AdjustPanelState(Child: TaqCustomDockingControl;
OldSize, NewSize: TPoint; AState: TaqDockingPanelState): TaqDockingPanelState; virtual;
function AddChild(AChild: TaqCustomDockingControl): Integer; dynamic;
procedure DeleteChild(AChild: TaqCustomDockingControl); dynamic;
procedure ValidateInsert(AComponent: TComponent); override;
procedure DoChildDock(Index: Integer; Child: TaqCustomDockingControl); virtual;
procedure DoChildUndock(Index: Integer; Child: TaqCustomDockingControl); virtual;
procedure DoChildChanged(Child: TaqCustomDockingControl; Change: TaqDockingControlChange); virtual;
function DoDockOver(Source: TaqCustomDockingControl; Coord: TPoint;
State: TaqDockOverState): Boolean; reintroduce; virtual;
procedure DoDockDrop(Source: TaqCustomDockingControl; Coord: TPoint); virtual;
procedure DoStartDock(var FrameRect: TRect; var FrameSize: TaqFrameSize); reintroduce; virtual;
procedure DoEndDock(Target: TaqCustomDockingControl; Coord: TPoint;
Cancelled: Boolean); reintroduce; virtual;
procedure DoDragDock(Target: TaqCustomDockingControl; Coord: TPoint;
FrameRgn: TaqHandle; var Info: string; var CanDock, CanFloat: Boolean); virtual;
function DoCaptionPopup(AMenu: TaqDockMenu;
Flags: Cardinal; var ACoord: TPoint): Boolean; virtual;
procedure DoCreatePopupMenu(AMenu: TaqDockMenu; Flags: Cardinal); virtual;
procedure DefActionExecuted(Sender: TObject); virtual;
procedure DefCustomButtonActionExecuted(Sender: TObject);
procedure RenameActionExecuted(Sender: TObject); virtual;
procedure AlignActionExecuted(Sender: TObject); virtual;
procedure SetDockingManager(const Value: TaqCustomDockingManager); virtual;
procedure SetParentItem(Value: TaqCustomDockingControl); virtual;
procedure UpdateScreenBounds; virtual;
function CalcBoundsRect: TRect; virtual;
procedure UpdateScreenRect(const AScreenBounds: TRect);
function GetCaptionRect: TRect; virtual;
function GetInsideRect: TRect; virtual;
procedure AdjustClientRect(var Rect: TRect); override;
procedure UpdateChildInfo; virtual;
function IsImageVisible: Boolean; virtual;
function IsAutoDockKey(Shift: TShiftState): Boolean; virtual;
procedure SaveToStream(Writer: TaqCustomDockingWriter); virtual;
procedure LoadFromStream(Reader: TaqCustomDockingReader); virtual;
procedure ChildrenLoaded(Reader: TaqCustomDockingReader); dynamic;
procedure ChildrenSaved(Writer: TaqCustomDockingWriter); dynamic;
procedure AfterDockingRead; dynamic;
function FindSplitterInfo(const Coord: TPoint; var Info: TaqSplitterItemInfo): Boolean; virtual;
function GetSplitterInfo(var Info: TaqSplitterInfo): Boolean; virtual;
function GetSplitterCursor: TCursor; virtual;
function GetSplitterSize: Integer; virtual;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -