📄 aqdockingvswhidbey.pas
字号:
{*******************************************************************}
{ }
{ 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 aqDockingVSWhidbey;
interface
uses
Controls,
Types,
aqDockingVS2005;
type
TaqVSWhidbeyDockingStyle = class(TaqVS2005DockingStyle)
protected
function CreateImageList: TImageList; override;
function GetDockImageMetrics: TaqDockingZoneImageMetrics; override;
procedure UpdateImages; override;
procedure UpdateActiveImages; override;
end;
const
SVSWhidbeyDockingStyleName = 'VSWhidbey';
implementation
uses
ImgList,
Graphics,
Windows,
aqDocking,
aqDockingUtils;
{$R aqDockingVSWhidbey.res}
const
SDockImageResNames: array [TaqDockingZoneImage] of string = (
'AQDOCKLEFT',
'AQDOCKTOP',
'AQDOCKRIGHT',
'AQDOCKBOTTOM',
'AQDOCKINSIDETOP',
'AQDOCKLEFT',
'AQDOCKTOP',
'AQDOCKRIGHT',
'AQDOCKBOTTOM',
'AQDOCKINSIDEBOTTOM'
);
{ TaqVSWhidbeyDockingStyle }
function TaqVSWhidbeyDockingStyle.CreateImageList: TImageList;
begin
Result := TImageListDIB.CreateSize(69, 69);
end;
function TaqVSWhidbeyDockingStyle.GetDockImageMetrics: TaqDockingZoneImageMetrics;
const
HorzPoints: array [0..4] of TPoint = (
(X: -1; Y: 35), (X: 33; Y: 0), (X: 46; Y: 13), (X: 46; Y: 56), (X: 33; Y: 70));
VertPoints: array [0..4] of TPoint = (
(X: 33; Y: 0), (X: 68; Y: 35), (X: 55; Y: 48), (X: 11; Y: 48), (X: -1; Y: 35));
HorzTransform: TXForm = (
eM11: -1; eM12: 0; eM21: 0; eM22: 1; eDx: 47; eDy: 0);
VertTransform: TXForm = (
eM11: 1; eM12: 0; eM21: 0; eM22: -1; eDx: 0; eDy: 47);
var
I: TaqDockingZoneImage;
R: TRect;
begin
for I := Low(TaqDockingZoneImage) to High(TaqDockingZoneImage) do
with Result[I] do
begin
case I of
dziLeft, dziDetachedLeft, dziRight, dziDetachedRight:
begin
Region := CreatePolygonRgn(HorzPoints[0], Length(HorzPoints), WINDING);
if (I = dziRight) or (I = dziDetachedRight) then
aqTransformRegion(Region, HorzTransform);
end;
dziTop, dziDetachedTop, dziBottom, dziDetachedBottom:
begin
Region := CreatePolygonRgn(VertPoints[0], Length(VertPoints), WINDING);
if (I = dziBottom) or (I = dziDetachedBottom) then
aqTransformRegion(Region, VertTransform);
end;
dziInside, dziInsideBottom:
Region := CreateRectRgnIndirect(Rect(0, 0, 43, 43));
end;
GetRgnBox(Region, R);
Size.X := R.Right - R.Left;
Size.Y := R.Bottom - R.Top;
end;
with Result[dziInside] do
begin
Offset := Point(-Size.X div 2 - 1, -Size.Y div 2);
Result[dziInsideBottom].Offset := Offset;
end;
with Result[dziLeft] do
Offset := Point(1 - Size.X + Result[dziInside].Offset.X, -1 - Size.Y div 2);
with Result[dziRight] do
Offset := Point(- 2 - Result[dziInside].Offset.X, -1 - Size.Y div 2);
with Result[dziTop] do
Offset := Point( - Size.X div 2, -1 - Size.Y + Result[dziInside].Offset.Y);
with Result[dziBottom] do
Offset := Point( - Size.X div 2, 2 - Result[dziInside].Offset.Y);
with Result[dziDetachedLeft] do
Offset := Point(0, -Size.Y div 2);
with Result[dziDetachedTop] do
Offset := Point(-Size.X div 2, 0);
with Result[dziDetachedRight] do
Offset := Point(-Size.X, -Size.Y div 2);
with Result[dziDetachedBottom] do
Offset := Point(-Size.X div 2, -Size.Y);
end;
procedure TaqVSWhidbeyDockingStyle.UpdateImages;
var
I: TaqDockingZoneImage;
begin
Images.Clear;
for I := Low(TaqDockingZoneImage) to High(TaqDockingZoneImage) do
TImageListDIB(Images).GetInstRes(HInstance, rtBitmap, SDockImageResNames[I], 0,
LR_CREATEDIBSECTION{lrMap3DColors}, clFuchsia);
end;
procedure TaqVSWhidbeyDockingStyle.UpdateActiveImages;
var
I: TaqDockingZoneImage;
begin
ActiveImages.Clear;
for I := Low(TaqDockingZoneImage) to High(TaqDockingZoneImage) do
TImageListDIB(ActiveImages).GetInstRes(HInstance, rtBitmap, SDockImageResNames[I], 0,
LR_CREATEDIBSECTION{lrMap3DColors}, clFuchsia);
end;
initialization
aqDockingStyles.RegisterClass(SVSWhidbeyDockingStyleName, TaqVSWhidbeyDockingStyle);
finalization
aqDockingStyles.UnregisterClass(SVSWhidbeyDockingStyleName);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -