📄 aqdockingbase.pas.~6~
字号:
{*******************************************************************}
{ }
{ 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 + -