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

📄 aqdockingbase.pas.~6~

📁 AutomatedDocking Library 控件源代码修改 适合Delphi 2009 和C++ Builder 20009 使用。 修正汉字不能正确显示问题
💻 ~6~
📖 第 1 页 / 共 5 页
字号:
{*******************************************************************}
{                                                                   }
{       AutomatedDocking Library (Cross-Platform Edition)           }
{                                                                   }
{       Copyright (c) 1999-2008 AutomatedQA Corp.                   }
{       ALL RIGHTS RESERVED                                         }
{                                                                   }
{   The entire contents of this file is protected by U.S. and       }
{   International Copyright Laws. Unauthorized reproduction,        }
{   reverse-engineering, and distribution of all or any portion of  }
{   the code contained in this file is strictly prohibited and may  }
{   result in severe civil and criminal penalties and will be       }
{   prosecuted to the maximum extent possible under the law.        }
{                                                                   }
{   RESTRICTIONS                                                    }
{                                                                   }
{   THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES           }
{   (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE    }
{   SECRETS OF AUTOMATEDQA CORP. THE REGISTERED DEVELOPER IS        }
{   LICENSED TO DISTRIBUTE THE AUTOMATEDDOCKING LIBRARY AND ALL     }
{   ACCOMPANYING VCL AND CLX CONTROLS AS PART OF AN EXECUTABLE      }
{   PROGRAM ONLY.                                                   }
{                                                                   }
{   THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED      }
{   FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE        }
{   COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE       }
{   AVAILABLE TO OTHER INDIVIDUALS WITHOUT WRITTEN CONSENT          }
{   AND PERMISSION FROM AUTOMATEDQA CORP.                           }
{                                                                   }
{   CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON       }
{   ADDITIONAL RESTRICTIONS.                                        }
{                                                                   }
{*******************************************************************}

unit aqDockingBase;

{$I aqDockingVer.inc}

interface

uses
  Types, Classes, Contnrs, SysUtils,
{$IFDEF VCL}
  ActiveX, Controls, ExtCtrls, Graphics, Windows, Messages, Forms, Menus, ImgList,
{$ELSE}
  QImgList, QForms, Qt, QControls, QGraphics, QMenus, QTypes,
{$ENDIF}
  aqDockingUI, aqDockingUtils, aqMaskForms,
  XMLIntf, XMLDoc, xmldom, Variants;

type
{$IFDEF VCL}
  TaqMouseCursor = TCursor;
{$ELSE}
  TaqMouseCursor = QControls.TCursor;
{$ENDIF}
  TaqDockOverState = (dosEnter, dosLeave, dosMove);
  TaqDragDockKind = (ddkNone, ddkCaption, ddkTab);
  TaqBooleanValue = (bvDefault, bvTrue, bvFalse);
  TaqHitInfo = (htCaption, htButtons, htNone);
  TaqDockingControlState = (dcsHidden, dcsDocked, dcsFloating);
  TaqDockingPanelState = (dpsNormal, dpsMaximized, dpsMinimized);
  TaqDockingControlStatus = set of (dcsLoading, dcsLoadingChildren, dcsUpdating, dcsDocking, dcsRemoving);
  TaqDockingAlignment = (dalClient, dalLeft, dalTop, dalRight, dalBottom);
  TaqDockingAlignments = set of TaqDockingAlignment;
  TaqFloatingFormType = (fftNormal, fftTool);
  TaqDockingControlChange = (dccCaption, dccKey, dccImage, dccControlState);
  TaqDockingShiftState = set of (dssShift, dssCtrl, dssLeft, dssRight, dssMiddle);
  TaqDockButtonItem = (dbiHide, dbiUndock, dbiAutoHide, dbiMaximizeRestore, dbiMenu, dbiCustom, dbiHelp);
  TaqDockButtonItems = set of TaqDockButtonItem;
  TaqCustomCaptionButtonPlacement = (cbpCaption, cbpContainer, cbpCaptionDefault, cbpContainerDefault);
  TaqCustomCaptionButtonPlacements = set of TaqCustomCaptionButtonPlacement;
  TaqChildInsertOrder  = (cioBefore, cioAfter);
  TaqControlHideAction = (haHide, haDestroy);
  TOleDropAction = (odaTest, odaPerform);
  TaqActionId = Integer;

  // Forward declarations.
  TaqCustomSizer = class;
  TaqCustomDockingSite = class;
  TaqCustomDocker = class;
  TaqCustomMover = class;
  TaqCustomDockingControl = class;
  TaqCustomDockingContainer = class;
  TaqCustomDockingFrame = class;
  TaqCustomDockAction = class;
  TaqCustomDockingManager = class;
  TaqDockCaptionButtons = class;
  TaqDockCaptionButtonsEx = class;
  TaqFloatingSite = class;
  TaqOleDropAcceptor = class;

  TaqCustomDockingControlClass = class of TaqCustomDockingControl;
  TaqCustomDockingContainerClass = class of TaqCustomDockingContainer;
  TaqCustomDockerClass = class of TaqCustomDocker;

  TaqCustomDockingReaderState = set of (drLayout, drSites, drControls, drHideZone);
  TaqCustomDockingReader = class(TObject)
  private
    FState: TaqCustomDockingReaderState;
  protected
    function GetVersion: Integer; virtual; abstract;
  public
    procedure BeginDockingLayout; virtual;
    procedure EndDockingLayout; virtual;
    procedure BeginDockingSites; virtual;
    procedure EndDockingSites; virtual;
    function NextDockingSite: Boolean; virtual; abstract;
    procedure SkipDockingSite; virtual; abstract;
    procedure BeginDockingControls; virtual;
    procedure EndDockingControls; virtual;
    function NextDockingControl: Boolean; virtual; abstract;
    procedure SkipDockingControl; virtual; abstract;
    procedure EndDockingControl; virtual; abstract;
    procedure BeginHideZone(Orientation: TaqHideZoneOrientation); virtual;
    procedure EndHideZone; virtual;
    function GetBoolean(const Name: string): Boolean; virtual; abstract;
    function GetByte(const Name: string): Byte; virtual; abstract;
    function GetInteger(const Name: string): Integer; virtual; abstract;
    function GetString(const Name: string): string; virtual; abstract;
    procedure GetPoint(const Name: string; out Value: TPoint); virtual; abstract;
    procedure GetRect(const Name: string; out Value: TRect); virtual; abstract;
    procedure GetGUID(const Name: string; out Value: TGUID); virtual; abstract;
    // For sequential stream implementation.
    procedure Skip(ByteCount: Integer); virtual; abstract;

    property Version: Integer read GetVersion;
    property State: TaqCustomDockingReaderState read FState;
  end;

  TaqCustomDockingWriterState = set of (dwLayout, dwSites, dwSite, dwControls, dwHideZone);
  TaqCustomDockingWriter = class(TObject)
  private
    FState: TaqCustomDockingWriterState;
  public
    procedure BeginDockingLayout; virtual;
    procedure EndDockingLayout; virtual;
    procedure BeginDockingSites; virtual;
    procedure EndDockingSites; virtual;
    procedure BeginDockingSite; virtual;
    procedure EndDockingSite; virtual;
    procedure BeginDockingControls; virtual;
    procedure EndDockingControls; virtual;
    procedure BeginDockingControl; virtual; abstract;
    procedure EndDockingControl; virtual; abstract;
    procedure BeginHideZone(Orientation: TaqHideZoneOrientation); virtual;
    procedure EndHideZone; virtual;
    procedure SetBoolean(const Name: string; const Value: Boolean); virtual; abstract;
    procedure SetByte(const Name: string; const Value: Byte); virtual; abstract;
    procedure SetInteger(const Name: string; const Value: Integer); virtual; abstract;
    procedure SetString(const Name: string; const Value: string); virtual; abstract;
    procedure SetPoint(const Name: string; const Value: TPoint); virtual; abstract;
    procedure SetRect(const Name: string; const Value: TRect); virtual; abstract;
    procedure SetGUID(const Name: string; const Value: TGUID); virtual; abstract;
    property State: TaqCustomDockingWriterState read FState;
  end;

  TaqBinaryDockingReader = class(TaqCustomDockingReader)
  private
    FStream: TStream;
    FVersion: Integer;
    FDockingSiteBeginPos: Integer;
    FDockingSiteNextOffset: Integer;
    FDockingControlStack: TObjectList;
  protected
    { TaqCustomDockingReader }
    function GetVersion: Integer; override;
  public
    constructor Create(AStream: TStream);
    destructor Destroy; override;

    { TaqCustomDockingReader }
    function NextDockingSite: Boolean; override;
    procedure SkipDockingSite; override;
    procedure EndDockingControls; override;
    function NextDockingControl: Boolean; override;
    procedure SkipDockingControl; override;
    procedure EndDockingControl; override;
    function GetBoolean(const Name: string): Boolean; override;
    function GetByte(const Name: string): Byte; override;
    function GetInteger(const Name: string): Integer; override;
    function GetString(const Name: string): string; override;
    procedure GetPoint(const Name: string; out Value: TPoint); override;
    procedure GetRect(const Name: string; out Value: TRect); override;
    procedure GetGUID(const Name: string; out Value: TGUID); override;
    procedure Skip(ByteCount: Integer); override;
  end;

  TaqBinaryDockingWriter = class(TaqCustomDockingWriter)
  private
    FStream: TStream;
    FDockingSiteBeginPos: Integer;
    FDockingControlStack: TObjectList;
  public
    constructor Create(AStream: TStream);
    destructor Destroy; override;

    { TaqCustomDockingReader }
    procedure EndDockingLayout; override;
    procedure EndDockingSites; override;
    procedure BeginDockingSite; override;
    procedure EndDockingSite; override;
    procedure EndDockingControls; override;
    procedure BeginDockingControl; override;
    procedure EndDockingControl; override;
    procedure SetBoolean(const Name: string; const Value: Boolean); override;
    procedure SetByte(const Name: string; const Value: Byte); override;
    procedure SetInteger(const Name: string; const Value: Integer); override;
    procedure SetString(const Name: string; const Value: string); override;
    procedure SetPoint(const Name: string; const Value: TPoint); override;
    procedure SetRect(const Name: string; const Value: TRect); override;
    procedure SetGUID(const Name: string; const Value: TGUID); override;
  end;

  TaqXMLDockingReader = class(TaqCustomDockingReader)
  private
    FNode: IXMLNode;
    FDocument: IXMLDocument;
    FVersion: Integer;
    FDockingSitesNode: IXMLNode;
    FDockingSitesIndex: Integer;
    FDockingControlStack: TObjectList;
    FDockingControlIndex: Integer;
  protected
    { TaqCustomDockingReader }
    function GetVersion: Integer; override;
  public
    constructor Create(const AFileName: DOMString);
    destructor Destroy; override;

    { TaqCustomDockingReader }
    procedure BeginDockingLayout; override;
    procedure EndDockingLayout; override;
    procedure BeginDockingSites; override;
    procedure EndDockingSites; override;
    function NextDockingSite: Boolean; override;
    procedure SkipDockingSite; override;
    procedure BeginDockingControls; override;
    procedure EndDockingControls; override;
    function NextDockingControl: Boolean; override;
    procedure SkipDockingControl; override;
    procedure EndDockingControl; override;
    procedure BeginHideZone(Orientation: TaqHideZoneOrientation); override;
    procedure EndHideZone; override;
    function GetBoolean(const Name: string): Boolean; override;
    function GetByte(const Name: string): Byte; override;
    function GetInteger(const Name: string): Integer; override;
    function GetString(const Name: string): string; override;
    procedure GetPoint(const Name: string; out Value: TPoint); override;
    procedure GetRect(const Name: string; out Value: TRect); override;
    procedure GetGUID(const Name: string; out Value: TGUID); override;
    // For sequential stream implementation.
    procedure Skip(ByteCount: Integer); override;
  end;

  TaqXMLDockingWriter = class(TaqCustomDockingWriter)
  private
    FNode: IXMLNode;
    FDocument: IXMLDocument;
    FFileName: DOMString;
  public
    constructor Create(const AFileName: DOMString);
    destructor Destroy; override;

    { TaqCustomDockingWriter }
    procedure BeginDockingLayout; override;
    procedure EndDockingLayout; override;
    procedure BeginDockingSites; override;
    procedure EndDockingSites; override;
    procedure BeginDockingSite; override;
    procedure EndDockingSite; override;
    procedure BeginDockingControls; override;
    procedure EndDockingControls; override;
    procedure BeginDockingControl; override;
    procedure EndDockingControl; override;
    procedure BeginHideZone(Orientation: TaqHideZoneOrientation); override;
    procedure EndHideZone; override;
    procedure SetBoolean(const Name: string; const Value: Boolean); override;
    procedure SetByte(const Name: string; const Value: Byte); override;
    procedure SetInteger(const Name: string; const Value: Integer); override;

⌨️ 快捷键说明

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