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

📄 aqdockingbase.pas.~6~

📁 AutomatedDocking Library 控件源代码修改 适合Delphi 2009 和C++ Builder 20009 使用。 修正汉字不能正确显示问题
💻 ~6~
📖 第 1 页 / 共 5 页
字号:
    function GetSplitterConstraints: TPoint; virtual;
    procedure StartSplitterMove(const Coord: TPoint; const Info: TaqSplitterItemInfo); virtual;
    procedure EndSplitterMove(Coord: Integer); virtual;
    procedure DrawCaption; virtual;
    function GetShowCaption: TaqBooleanValue; virtual;
    function GetCaption: string; virtual;
    function GetExtendedHintText: string;
    function InternalRemoveFromDocking(Explicitly: Boolean = False): Boolean; virtual;
    procedure DoMakeVisible(AChild: TaqCustomDockingControl); virtual;
    function IsChildVisible(AChild: TaqCustomDockingControl): Boolean; virtual;
    procedure ChangeFocusedControl(IsForward: Boolean; Sender: TaqCustomDockingControl); virtual;
    procedure DoShow; virtual;
    procedure DoHide; virtual;
    procedure DoHideEx; virtual;
    procedure DoCloseQuery(var CanClose: Boolean; Explicit: Boolean = False); virtual;
    procedure DoChanged(Change: TaqDockingControlChange); virtual;
    procedure DoUpdateDockActions; virtual;
    procedure DoAutoHideChanged(Container: TaqCustomDockingControl); virtual;
    procedure DoAutoHideChanging(Value: Boolean; Orientation: TaqHideZoneOrientation); virtual;
    procedure StartDragging; virtual;
    function UpdateDockingConstraints: Boolean; virtual;
    procedure CreateActions; virtual;
    procedure RefreshAutoHide;
    procedure RecreateAlignList;
    procedure CreatePopupMenu; virtual;
    function CalcAutoHideOrientation(AControl: TaqCustomDockingControl): TaqHideZoneOrientation; virtual;
    function CanInterceptAutoHide(AControl: TaqCustomDockingControl): Boolean; virtual;
    class function GetPlacementInfoClass: TaqCustomPlacementInfoClass; virtual;

{$IFDEF VCL}
    procedure SetParent(AParent: TWinControl); override;
{$ELSE}
    procedure SetParent(const AParent: TWidgetControl); override;
{$ENDIF}
    procedure Paint; override;
    procedure SetName(const Value: TComponentName); override;
    procedure ReadState(Reader: TReader); override;
    procedure DefineProperties(Filer: TFiler); override;
    procedure Loaded; override;
    procedure DblClick; override;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
    procedure DoEnter; override;
    procedure DoExit; override;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
{$IFDEF VCL}
    procedure WMContextMenu(var Message: TWMContextMenu); message WM_CONTEXTMENU;
    procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
    procedure CMMouseEnter(var message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var message: TMessage); message CM_MOUSELEAVE;
    procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED;
    procedure CMFocusChanged(var Message: TCMFocusChanged); message CM_FOCUSCHANGED;
    procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED;
    procedure CreateParams(var Params: TCreateParams); override;
    function  DesignWndProc(var Message: TMessage): Boolean; override;
{$ELSE}
    procedure MouseEnter(AControl: TControl); override;
    procedure MouseLeave(AControl: TControl); override;
    procedure VisibleChanged; override;
    function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; override;
{$ENDIF}
    procedure HandleOleDropActivity(Pos: TPoint; Action: TOleDropAction; var Key: TGUID); virtual;

    property SplitterSize: Integer read GetSplitterSize;
    property ChildList: TList read FChildren;
    property InternalVisible: Boolean read GetInternalVisible write SetInternalVisible;
    property CaptionMenu: TaqDockMenu read FCaptionMenu;
    property NormalSize: TPoint read FNormalSize write FNormalSize;
    property LastClickPosition: TPoint read FLastClickPosition write FLastClickPosition;
    property ChildrenSizing: Boolean read FChildrenSizing write FChildrenSizing;
    property DragDockKind: TaqDragDockKind read FDragDockKind write FDragDockKind;
    property Designing: Boolean read FDesigning;
    property AutoHideMenuItem: TMenuItem read FAutoHideMenuItem;
    property AlignMenuItem: TMenuItem read FAlignMenuItem;
    property LastPos: TaqCustomPlacementInfo read FLastPos;
    property FirstSplitterItem: TaqCustomDockingControl read FFirstSplitterItem;
    property SecondSplitterItem: TaqCustomDockingControl read FSecondSplitterItem;

    procedure FinalizeAutoHide; virtual;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;

    procedure MakeFloating(ARect: TRect; AState: TWindowState = wsNormal);
    function IsParentItemOf(AParentItem: TaqCustomDockingControl): Boolean;
    function CommonParentWith(AControl: TaqCustomDockingControl): TaqCustomDockingControl;
    procedure GetParentItems(AList: TList);
    function RemoveFromDocking(AExplicitly: Boolean = False): Boolean;
    procedure ForceVisible;
    procedure RegisterAction(ActionID: TaqActionID; Action: TaqCustomDockAction);
    function UnregisterAction(ActionID: TaqActionID): TaqCustomDockAction;
    function ActionIterator: TaqCustomBucketListIterator;
    function CanShowCaption: Boolean; virtual;
    procedure ReplaceWithNewItem(ANewItem: TaqCustomDockingControl);
    function GetItemByPos(const Pos: TPoint): TaqCustomDockingControl;
    function DockClass: TaqCustomDockingControlClass;
    function IndexOf(AChild: TaqCustomDockingControl): Integer;
    procedure UpdateDocking;
    procedure FillAlignMenu(AMenu: TMenu);
    procedure PerformAutoHide(AOrientation: TaqHideZoneOrientation; AImmediately: Boolean);
    procedure RevertAutoHide;

    class function GetTypeId: Integer; virtual;
    procedure Release; virtual;
    procedure MaximizeChild(AChild: TaqCustomDockingControl); virtual;
    procedure ArrangeChildren; overload; virtual;
    procedure ArrangeChildren(StartIndex, EndIndex: Integer); overload; virtual;
    procedure RestoreChildren; virtual;
    procedure UpdateControl; virtual;
    function InsertChild(AItem: TaqCustomDockingControl;
      Order: TaqChildInsertOrder; AChild: TaqCustomDockingControl): Integer; virtual;

    function GetParentComponent: TComponent; override;
    function HasParent: Boolean; override;
    procedure SetFocus; override;
    procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;

    property Actions[ActionId: TaqActionId]: TaqCustomDockAction read GetActions;
    property ActiveControl: TaqControl read FActiveControl write SetActiveControl;
    property Alignment: TaqDockingAlignment read FAlignment write SetAlignment;
    property AutoHide: Boolean read GetAutoHide write SetAutoHide;
    property AutoHideOrientation: TaqHideZoneOrientation read GetAutoHideOrientation write SetAutoHideOrientation;
    property Buttons: TaqDockCaptionButtonsEx read FButtons;
    property Caption: string read GetCaption write SetCaption;
    property CaptionDblClickAction: TaqActionId read FCaptionDblClickAction write SetCaptionDblClickAction;
    property CaptionHeight: Integer read GetCaptionHeight;
    property CaptionRect: TRect read GetCaptionRect;
    property ChildCount: Integer read GetChildCount;
    property Children[Index: Integer]: TaqCustomDockingControl read GetChild; default;
    property Color;
    property ControlStatus: TaqDockingControlStatus read FControlStatus;
    property Data: Pointer read FData write FData;
    property DockingKey: TGUID read FDockingKey write SetDockingKey;
    property DockingManager: TaqCustomDockingManager read GetDockingManager write SetDockingManager;
    property DockState: TaqDockingControlState read GetDockState;
    property Font;
    property Height: Integer read GetHeight write SetHeight;
    property ImageIndex: TImageIndex read FImageIndex write SetImageIndex;
    property Index: Integer read GetIndex;
    property MinConstraints: TPoint read GetMinConstraints;
    property MinHeight: Integer read FMinHeight write SetMinHeight;
    property MinWidth: Integer read FMinWidth write SetMinWidth;
    property PanelState: TaqDockingPanelState read FPanelState write SetPanelState;
    property ParentColor;
    property ParentFont;
    property ParentItem: TaqCustomDockingControl read FParentItem write SetParentItem;
    property PreferredHeight: Integer read GetPreferredHeight write SetPreferredHeight default 200;
    property PreferredWidth: Integer read GetPreferredWidth write SetPreferredWidth default 450;
    property ScreenBottom: Integer index 3 read GetScreenRectCoord write SetScreenRectCoord;
    property ScreenLeft: Integer index 0 read GetScreenRectCoord write SetScreenRectCoord;
    property ScreenRect: TRect read FScreenRect write SetScreenRect;
    property ScreenRight: Integer index 2 read GetScreenRectCoord write SetScreenRectCoord;
    property ScreenTop: Integer index 1 read GetScreenRectCoord write SetScreenRectCoord;
    property ShowCaption: TaqBooleanValue read GetShowCaption write SetShowCaption;
    property ShowImage: TaqBooleanValue read FShowImage write SetShowImage;
    property TreeIndex: Integer read FTreeIndex;
    property Visible: Boolean read FVisible write SetVisible;
    property Width: Integer read GetWidth write SetWidth;

    property OnAutoHideCalc: TaqAutoHideCalcEvent read FOnAutoHideCalc write FOnAutoHideCalc;
    property OnAutoHideChanged: TNotifyEvent read FOnAutoHideChanged write FOnAutoHideChanged;
    property OnAutoHideChanging: TaqAutoHideChangingEvent read FOnAutoHideChanging write FOnAutoHideChanging;
    property OnCaptionPopup: TaqCaptionPopupEvent read FOnCaptionPopup write FOnCaptionPopup;
    property OnCloseQuery: TaqCloseQueryEvent read FOnCloseQuery write FOnCloseQuery;
    property OnChange: TaqChangeEvent read FOnChange write FOnChange;
    property OnChildDock: TaqChildNotifyEvent read FOnChildDock write FOnChildDock;
    property OnChildUndock: TaqChildNotifyEvent read FOnChildUndock write FOnChildUndock;
    property OnCustomButtonClick: TaqCustomButtonClickEvent read FOnCustomButtonClick write FOnCustomButtonClick;
    property OnDockDrop: TaqDockDropEvent read FOnDockDrop write FOnDockDrop;
    property OnDockOver: TaqDockOverEvent read FOnDockOver write FOnDockOver;
    property OnDragDock: TaqDragDockEvent read FOnDragDock write FOnDragDock;
    property OnEndDock: TaqEndDockEvent read FOnEndDock write FOnEndDock;
    property OnHide: TNotifyEvent read FOnHide write FOnHide;
    property OnHideEx: TaqHideControlEvent read FOnHideEx write FOnHideEx;
    property OnNeedHintText: TaqNeedHintTextEvent read FOnNeedHintText write FOnNeedHintText;
    property OnPopupMenuCreate: TaqPopupMenuCreateEvent read FOnPopupMenuCreate write FOnPopupMenuCreate;
    property OnShow: TNotifyEvent read FOnShow write FOnShow;
    property OnStartDock: TaqStartDockEvent read FOnStartDock write FOnStartDock;
    property OnUpdateActions: TNotifyEvent read FOnUpdateActions write FOnUpdateActions;
  end;

  TaqCustomDockingContainer = class(TaqCustomDockingControl)
  private
    FDefaultCaption: string;
    FLastFocusedChild: TaqCustomDockingControl;
    FZombie: Boolean;
    FCtrlTabControlSwitch: TaqBooleanValue;

    procedure SetLastFocusedChild(AChild: TaqCustomDockingControl);
  protected
    function GetDefaultCaption: string;
    { TaqCustomDockingControl }
    function AddChild(AChild: TaqCustomDockingControl): Integer; override;
    procedure DeleteChild(AChild: TaqCustomDockingControl); override;
    procedure ValidateAlignment(Child: TaqCustomDockingControl;
      var AAlignment: TaqDockingAlignment); override;
    procedure CheckAlignment(AAlign: TaqDockingAlignment); override;
    function CalcBoundsRect: TRect; override;
    procedure UpdateScreenBounds; override;
    procedure UpdateChildInfo; override;
    function GetCaption: string; override;
    procedure DoUpdateDockActions; override;
    procedure DoChildChanged(Child: TaqCustomDockingControl;
      Change: TaqDockingControlChange); override;
    function InternalRemoveFromDocking(Explicitly: Boolean = False): Boolean; override;
    procedure ChangeFocusedControl(IsForward: Boolean; Sender: TaqCustomDockingControl); override;
    function CalcAutoHideOrientation(AControl: TaqCustomDockingControl): TaqHideZoneOrientation; override;
    procedure DoCloseQuery(var CanClose: Boolean; Explicit: Boolean = False); override;

    procedure DoHideEx; override;

    property LastFocusedChild: TaqCustomDockingControl read FLastFocusedChild write SetLastFocusedChild;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Release; override;

    { TaqCustomDockingControl }
    procedure UpdateControl; override;
    function InsertChild(TargetChild: TaqCustomDockingControl;
      Direction: TaqChildInsertOrder; NewChild: TaqCustomDockingControl): Integer; override;
    procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
    procedure SetFocus; override;

    property CtrlTabControlSwitch: TaqBooleanValue read FCtrlTabControlSwitch write FCtrlTabControlSwitch;
  end;

  TaqOwnedObject = class(TObject)
  private
    FDockingManager: TaqCustomDockingManager;
  public
    constructor Create(ADockingManager: TaqCustomDockingManager); virtual;
    destructor Destroy; override;

    property DockingManager: TaqCustomDockingManager read FDockingManager;
  end;

  TaqCustomSizer = class(TaqOwnedObject)
  protected
    procedure ResizeChildren(AContainer: TaqCustomDockingContainer); virtual; abstract;
  end;

  TaqDockingFrameInfo = record
    Box: TRect;
    Region: TaqHandle;
    Info: string;
  end;

  TaqCustomMover = class(TaqOwnedObject)
  private
    FDragItem: TaqCustomDockingControl;
    FDragging: Boolean;
    procedure SetDragItem(const Value: TaqCustomDockingControl);
  public
    procedure CalcDragInfo(const Coord: TPoint; DockingDisabled: Boolean;
      var Info: TaqDockingFrameInfo; var CanDock, CanFloat: Boolean); virtual; abstract;
    procedure StartDragging; virtual;
    procedure EndDragging(const Coord: TPoint; const Bounds: TRect); virtual;
    procedure CancelDragging(const Coord: TPoint); virtual;

    property Dragging: Boolean read FDragging;
    property DragItem: TaqCustomDockingControl read FDragItem write SetDragItem;
  end;

  TaqCustomDocker = class(TaqOwnedObject)
  private
    FManagedTreeItem: TaqCustomDockingControl;
  public
    procedure DockItem(const P: TPoint; Item: TaqCustomDockingControl); virtual; abstract;

    property ManagedItem: TaqCustomDockingControl read FManagedTreeItem write FManagedTreeItem;
  end;

  TaqDockingSiteState = set of (dssDeleting, dssLoading, dssInitializing);
  TaqDockingSiteEvent = procedure (Sender: TaqCustomDockingSite;
    Control: TaqCustomDockingControl) of object;
  TaqDockingQueryEvent = procedure (Sender: TaqCustomDockingSite;
    Control: TaqCustomDockingControl; var Allow: Boolean) of object;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -