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

📄 aqdockingbase.pas.~1~

📁 AutomatedDocking Library 控件源代码修改 适合Delphi 2009 和C++ Builder 20009 使用。 修正汉字不能正确显示问题
💻 ~1~
📖 第 1 页 / 共 5 页
字号:
    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 + -