anchordocking: added property HeaderStyle

git-svn-id: trunk@39577 -
This commit is contained in:
mattias 2012-12-18 12:39:47 +00:00
parent 39dde6cf13
commit 6a5a6fe963
2 changed files with 81 additions and 16 deletions

View File

@ -384,6 +384,13 @@ type
{ TAnchorDockSettings } { TAnchorDockSettings }
TADHeaderStyle = (
adhsFrame3D,
adhsLine
);
const
adhsDefault = adhsFrame3D;
type
TAnchorDockSettings = class TAnchorDockSettings = class
private private
FAllowDragging: boolean; FAllowDragging: boolean;
@ -395,6 +402,7 @@ type
FHeaderAlignTop: integer; FHeaderAlignTop: integer;
FHeaderButtonSize: integer; FHeaderButtonSize: integer;
FHeaderHint: string; FHeaderHint: string;
FHeaderStyle: TADHeaderStyle;
FHideHeaderCaptionFloatingControl: boolean; FHideHeaderCaptionFloatingControl: boolean;
FPageAreaInPercent: integer; FPageAreaInPercent: integer;
FScaleOnResize: boolean; FScaleOnResize: boolean;
@ -409,6 +417,7 @@ type
procedure SetHeaderAlignTop(AValue: integer); procedure SetHeaderAlignTop(AValue: integer);
procedure SetHeaderButtonSize(AValue: integer); procedure SetHeaderButtonSize(AValue: integer);
procedure SetHeaderHint(AValue: string); procedure SetHeaderHint(AValue: string);
procedure SetHeaderStyle(AValue: TADHeaderStyle);
procedure SetHideHeaderCaptionFloatingControl(AValue: boolean); procedure SetHideHeaderCaptionFloatingControl(AValue: boolean);
procedure SetPageAreaInPercent(AValue: integer); procedure SetPageAreaInPercent(AValue: integer);
procedure SetScaleOnResize(AValue: boolean); procedure SetScaleOnResize(AValue: boolean);
@ -430,6 +439,7 @@ type
property HideHeaderCaptionFloatingControl: boolean read FHideHeaderCaptionFloatingControl write SetHideHeaderCaptionFloatingControl; property HideHeaderCaptionFloatingControl: boolean read FHideHeaderCaptionFloatingControl write SetHideHeaderCaptionFloatingControl;
property AllowDragging: boolean read FAllowDragging write SetAllowDragging; property AllowDragging: boolean read FAllowDragging write SetAllowDragging;
property HeaderButtonSize: integer read FHeaderButtonSize write SetHeaderButtonSize; property HeaderButtonSize: integer read FHeaderButtonSize write SetHeaderButtonSize;
property HeaderStyle: TADHeaderStyle read FHeaderStyle write SetHeaderStyle;
procedure IncreaseChangeStamp; inline; procedure IncreaseChangeStamp; inline;
property ChangeStamp: integer read FChangeStamp; property ChangeStamp: integer read FChangeStamp;
procedure LoadFromConfig(Config: TConfigStorage); procedure LoadFromConfig(Config: TConfigStorage);
@ -460,6 +470,7 @@ type
FHeaderButtonSize: integer; FHeaderButtonSize: integer;
FHeaderClass: TAnchorDockHeaderClass; FHeaderClass: TAnchorDockHeaderClass;
FHeaderHint: string; FHeaderHint: string;
FHeaderStyle: TADHeaderStyle;
FIdleConnected: Boolean; FIdleConnected: Boolean;
FManagerClass: TAnchorDockManagerClass; FManagerClass: TAnchorDockManagerClass;
FOnCreateControl: TADCreateControlEvent; FOnCreateControl: TADCreateControlEvent;
@ -502,6 +513,7 @@ type
procedure SetDockParentMargin(AValue: integer); procedure SetDockParentMargin(AValue: integer);
procedure SetDragTreshold(AValue: integer); procedure SetDragTreshold(AValue: integer);
procedure SetHeaderHint(AValue: string); procedure SetHeaderHint(AValue: string);
procedure SetHeaderStyle(AValue: TADHeaderStyle);
procedure SetPageAreaInPercent(AValue: integer); procedure SetPageAreaInPercent(AValue: integer);
procedure SetScaleOnResize(AValue: boolean); procedure SetScaleOnResize(AValue: boolean);
procedure SetShowMenuItemShowHeader(AValue: boolean); procedure SetShowMenuItemShowHeader(AValue: boolean);
@ -607,18 +619,19 @@ type
property DockOutsideMargin: integer read FDockOutsideMargin write SetDockOutsideMargin default 10; // max distance for outside mouse snapping property DockOutsideMargin: integer read FDockOutsideMargin write SetDockOutsideMargin default 10; // max distance for outside mouse snapping
property DockParentMargin: integer read FDockParentMargin write SetDockParentMargin default 10; // max distance for snap to parent property DockParentMargin: integer read FDockParentMargin write SetDockParentMargin default 10; // max distance for snap to parent
property PageAreaInPercent: integer read FPageAreaInPercent write SetPageAreaInPercent default 40; // size of inner mouse snapping area for page docking property PageAreaInPercent: integer read FPageAreaInPercent write SetPageAreaInPercent default 40; // size of inner mouse snapping area for page docking
property HeaderAlignTop: integer read FHeaderAlignTop write SetHeaderAlignTop default 80; // move header to top, when (width/height)*100<=HeaderAlignTop
property HeaderAlignLeft: integer read FHeaderAlignLeft write SetHeaderAlignLeft default 120; // move header to left, when (width/height)*100>=HeaderAlignLeft
property HeaderHint: string read FHeaderHint write SetHeaderHint;
property SplitterWidth: integer read FSplitterWidth write SetSplitterWidth default 4;
property ScaleOnResize: boolean read FScaleOnResize write SetScaleOnResize default true; // scale children when resizing a site
property ShowHeader: boolean read FShowHeader write SetShowHeader default true; // set to false to hide all headers property ShowHeader: boolean read FShowHeader write SetShowHeader default true; // set to false to hide all headers
property ShowMenuItemShowHeader: boolean read FShowMenuItemShowHeader write SetShowMenuItemShowHeader default false; property ShowMenuItemShowHeader: boolean read FShowMenuItemShowHeader write SetShowMenuItemShowHeader default false;
property ShowHeaderCaption: boolean read FShowHeaderCaption write SetShowHeaderCaption default true; // set to false to remove the text in the headers property ShowHeaderCaption: boolean read FShowHeaderCaption write SetShowHeaderCaption default true; // set to false to remove the text in the headers
property HideHeaderCaptionFloatingControl: boolean read FHideHeaderCaptionFloatingControl property HideHeaderCaptionFloatingControl: boolean read FHideHeaderCaptionFloatingControl
write SetHideHeaderCaptionFloatingControl default true; // disables ShowHeaderCaption for floating controls write SetHideHeaderCaptionFloatingControl default true; // disables ShowHeaderCaption for floating controls
property AllowDragging: boolean read FAllowDragging write SetAllowDragging default true; property HeaderAlignTop: integer read FHeaderAlignTop write SetHeaderAlignTop default 80; // move header to top, when (width/height)*100<=HeaderAlignTop
property HeaderAlignLeft: integer read FHeaderAlignLeft write SetHeaderAlignLeft default 120; // move header to left, when (width/height)*100>=HeaderAlignLeft
property HeaderButtonSize: integer read FHeaderButtonSize write SetHeaderButtonSize default 10; property HeaderButtonSize: integer read FHeaderButtonSize write SetHeaderButtonSize default 10;
property HeaderHint: string read FHeaderHint write SetHeaderHint;
property HeaderStyle: TADHeaderStyle read FHeaderStyle write SetHeaderStyle default adhsDefault;
property SplitterWidth: integer read FSplitterWidth write SetSplitterWidth default 4;
property ScaleOnResize: boolean read FScaleOnResize write SetScaleOnResize default true; // scale children when resizing a site
property AllowDragging: boolean read FAllowDragging write SetAllowDragging default true;
property OptionsChangeStamp: int64 read FOptionsChangeStamp; property OptionsChangeStamp: int64 read FOptionsChangeStamp;
procedure IncreaseOptionsChangeStamp; inline; procedure IncreaseOptionsChangeStamp; inline;
@ -634,6 +647,13 @@ type
var var
DockMaster: TAnchorDockMaster = nil; DockMaster: TAnchorDockMaster = nil;
const
ADHeaderStyle: array[TADHeaderStyle] of string = (
'Frame3D',
'Line'
);
function StrToADHeaderStyle(const s: string): TADHeaderStyle;
function dbgs(SiteType: TAnchorDockHostSiteType): string; overload; function dbgs(SiteType: TAnchorDockHostSiteType): string; overload;
procedure CopyAnchorBounds(Source, Target: TControl); procedure CopyAnchorBounds(Source, Target: TControl);
@ -662,6 +682,13 @@ function GetEnclosedControls(const ARect: TAnchorControlsRect): TFPList;
implementation implementation
function StrToADHeaderStyle(const s: string): TADHeaderStyle;
begin
for Result:=Low(TADHeaderStyle) to High(TADHeaderStyle) do
if CompareText(ADHeaderStyle[Result],s)=0 then exit;
Result:=adhsDefault;
end;
function dbgs(SiteType: TAnchorDockHostSiteType): string; overload; function dbgs(SiteType: TAnchorDockHostSiteType): string; overload;
begin begin
case SiteType of case SiteType of
@ -1094,6 +1121,13 @@ begin
IncreaseChangeStamp; IncreaseChangeStamp;
end; end;
procedure TAnchorDockSettings.SetHeaderStyle(AValue: TADHeaderStyle);
begin
if FHeaderStyle=AValue then Exit;
FHeaderStyle:=AValue;
IncreaseChangeStamp;
end;
procedure TAnchorDockSettings.SetHideHeaderCaptionFloatingControl( procedure TAnchorDockSettings.SetHideHeaderCaptionFloatingControl(
AValue: boolean); AValue: boolean);
begin begin
@ -1158,6 +1192,7 @@ begin
HideHeaderCaptionFloatingControl:=Config.GetValue('HideHeaderCaptionFloatingControl',true); HideHeaderCaptionFloatingControl:=Config.GetValue('HideHeaderCaptionFloatingControl',true);
AllowDragging:=Config.GetValue('AllowDragging',true); AllowDragging:=Config.GetValue('AllowDragging',true);
HeaderButtonSize:=Config.GetValue('HeaderButtonSize',10); HeaderButtonSize:=Config.GetValue('HeaderButtonSize',10);
HeaderStyle:=StrToADHeaderStyle(Config.GetValue('HeaderStyle',ADHeaderStyle[adhsDefault]));
Config.UndoAppendBasePath; Config.UndoAppendBasePath;
end; end;
@ -1177,6 +1212,7 @@ begin
Config.SetDeleteValue('HideHeaderCaptionFloatingControl',HideHeaderCaptionFloatingControl,true); Config.SetDeleteValue('HideHeaderCaptionFloatingControl',HideHeaderCaptionFloatingControl,true);
Config.SetDeleteValue('AllowDragging',AllowDragging,true); Config.SetDeleteValue('AllowDragging',AllowDragging,true);
Config.SetDeleteValue('HeaderButtonSize',HeaderButtonSize,10); Config.SetDeleteValue('HeaderButtonSize',HeaderButtonSize,10);
Config.SetDeleteValue('HeaderStyle',ADHeaderStyle[HeaderStyle],ADHeaderStyle[adhsDefault]);
Config.UndoAppendBasePath; Config.UndoAppendBasePath;
end; end;
@ -1878,6 +1914,13 @@ begin
OptionsChanged; OptionsChanged;
end; end;
procedure TAnchorDockMaster.SetHeaderStyle(AValue: TADHeaderStyle);
begin
if FHeaderStyle=AValue then Exit;
FHeaderStyle:=AValue;
OptionsChanged;
end;
procedure TAnchorDockMaster.SetPageAreaInPercent(AValue: integer); procedure TAnchorDockMaster.SetPageAreaInPercent(AValue: integer);
begin begin
if FPageAreaInPercent=AValue then Exit; if FPageAreaInPercent=AValue then Exit;
@ -4838,9 +4881,32 @@ end;
procedure TAnchorDockHeader.Paint; procedure TAnchorDockHeader.Paint;
procedure DrawGrabber(r: TRect); procedure DrawGrabber(r: TRect);
var
Center: Integer;
begin begin
Canvas.Frame3d(r,2,bvLowered); case DockMaster.HeaderStyle of
Canvas.Frame3d(r,4,bvRaised); adhsFrame3D:
begin
Canvas.Frame3d(r,2,bvLowered);
Canvas.Frame3d(r,4,bvRaised);
end;
adhsLine:
if r.Bottom-r.Top < r.Right-r.Left then
begin
Center:=r.Top+(r.Bottom-r.Top) div 2;
Canvas.Pen.Color:=clltgray;
Canvas.Line(r.Left+5,Center-1,r.Right-3,Center-1);
Canvas.Pen.Color:=clgray;
Canvas.Line(r.Left+5,Center,r.Right-3,Center);
end else
begin
Center:=r.Right+(r.Left-r.Right) div 2;
Canvas.Pen.Color:=clltgray;
Canvas.Line(Center-1,r.Top+3,Center-1,r.Bottom-5);
Canvas.Pen.Color:=clgray;
Canvas.Line(Center,r.Top+3,Center,r.Bottom-5);
end;
end;
end; end;
var var

View File

@ -1,22 +1,21 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<CONFIG> <CONFIG>
<ProjectOptions> <ProjectOptions>
<Version Value="7"/> <Version Value="9"/>
<General> <General>
<Flags>
<UseDefaultCompilerOptions Value="True"/>
</Flags>
<SessionStorage Value="InIDEConfig"/> <SessionStorage Value="InIDEConfig"/>
<MainUnit Value="0"/> <MainUnit Value="0"/>
<TargetFileExt Value=""/>
<ResourceType Value="res"/> <ResourceType Value="res"/>
<UseXPManifest Value="True"/> <UseXPManifest Value="True"/>
</General> </General>
<VersionInfo> <VersionInfo>
<Language Value=""/> <Language Value=""/>
<CharSet Value=""/> <CharSet Value=""/>
<StringTable Comments="" CompanyName="" FileDescription="" FileVersion="" InternalName="" LegalCopyright="" LegalTrademarks="" OriginalFilename="" ProductName="" ProductVersion=""/> <StringTable ProductVersion=""/>
</VersionInfo> </VersionInfo>
<BuildModes Count="1">
<Item1 Name="default" Default="True"/>
</BuildModes>
<PublishOptions> <PublishOptions>
<Version Value="2"/> <Version Value="2"/>
<IgnoreBinaries Value="False"/> <IgnoreBinaries Value="False"/>
@ -62,12 +61,12 @@
</Units> </Units>
</ProjectOptions> </ProjectOptions>
<CompilerOptions> <CompilerOptions>
<Version Value="9"/> <Version Value="11"/>
<Target> <Target>
<Filename Value="miniide1"/> <Filename Value="miniide1"/>
</Target> </Target>
<SearchPaths> <SearchPaths>
<IncludeFiles Value="$(ProjOutDir)/"/> <IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths> </SearchPaths>
<CodeGeneration> <CodeGeneration>