diff --git a/examples/anchordocking/anchordocking.pas b/examples/anchordocking/anchordocking.pas index a90948c9f7..e584365d59 100644 --- a/examples/anchordocking/anchordocking.pas +++ b/examples/anchordocking/anchordocking.pas @@ -383,6 +383,8 @@ type procedure ClearLayoutProperties(AControl: TControl); procedure PopupMenuPopup(Sender: TObject); procedure PopupMenuCloseUp(Sender: TObject); + procedure SetShowHeaderCaptionFloatingControl(const AValue: boolean); + procedure SetSplitterWidth(const AValue: integer); protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; @@ -438,10 +440,10 @@ type 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 FHeaderHint; - property SplitterWidth: integer read FSplitterWidth write FSplitterWidth default 4; + property SplitterWidth: integer read FSplitterWidth write SetSplitterWidth default 4; property ScaleOnResize: boolean read FScaleOnResize write FScaleOnResize default true; // scale children when resizing a site property ShowHeaderCaptionFloatingControl: boolean read FShowHeaderCaptionFloatingControl - write FShowHeaderCaptionFloatingControl default false; + write SetShowHeaderCaptionFloatingControl default false; property OnCreateControl: TADCreateControlEvent read FOnCreateControl write FOnCreateControl; property AllowDragging: boolean read FAllowDragging write FAllowDragging default true; @@ -1356,6 +1358,36 @@ begin Popup.Items.Clear; end; +procedure TAnchorDockMaster.SetShowHeaderCaptionFloatingControl( + const AValue: boolean); +var + Site: TAnchorDockHostSite; + i: Integer; +begin + if AValue=ShowHeaderCaptionFloatingControl then exit; + for i:=0 to ComponentCount-1 do begin + Site:=TAnchorDockHostSite(Components[i]); + if not (Site is TAnchorDockHostSite) then continue; + Site.UpdateHeaderShowing; + end; +end; + +procedure TAnchorDockMaster.SetSplitterWidth(const AValue: integer); +var + i: Integer; + Splitter: TAnchorDockSplitter; +begin + if AValue=SplitterWidth then exit; + for i:=0 to ComponentCount-1 do begin + Splitter:=TAnchorDockSplitter(Components[i]); + if not (Splitter is TAnchorDockSplitter) then continue; + if Splitter.ResizeAnchor in [akLeft,akRight] then + Splitter.Width:=SplitterWidth + else + Splitter.Height:=SplitterWidth; + end; +end; + procedure TAnchorDockMaster.Notification(AComponent: TComponent; Operation: TOperation); var diff --git a/examples/anchordocking/anchordockoptionsdlg.pas b/examples/anchordocking/anchordockoptionsdlg.pas index 97fb16e578..7e021569b3 100644 --- a/examples/anchordocking/anchordockoptionsdlg.pas +++ b/examples/anchordocking/anchordockoptionsdlg.pas @@ -35,7 +35,7 @@ interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel, - Spin, StdCtrls, ComCtrls, AnchorDocking, AnchorDockStr; + StdCtrls, ComCtrls, AnchorDocking, AnchorDockStr; type @@ -52,6 +52,7 @@ type ScaleOnResizeCheckBox: TCheckBox; SplitterWidthLabel: TLabel; SplitterWidthTrackBar: TTrackBar; + procedure ButtonPanel1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private FMaster: TAnchorDockMaster; @@ -84,7 +85,8 @@ end; procedure TAnchorDockOptionsDialog.FormCreate(Sender: TObject); begin DragThresholdLabel.Caption:=adrsDragThreshold; - DragThresholdTrackBar.Hint:=adrsAmountOfPixelOfMouseMovementBeforeDragStarts; + DragThresholdTrackBar.Hint:= + adrsAmountOfPixelTheMouseHasToDragBeforeDragStarts; HeaderAlignTopLabel.Caption:=adrsHeaderAlignTop; HeaderAlignTopTrackBar.Hint:= adrsMoveHeaderToTopWhenWidthHeight100HeaderAlignTop; @@ -95,6 +97,18 @@ begin SplitterWidthTrackBar.Hint:=adrsSplitterThickness; ScaleOnResizeCheckBox.Caption:=adrsScaleOnResize; ScaleOnResizeCheckBox.Hint:=adrsScaleSubSitesWhenASiteIsResized; + + ButtonPanel1.OKButton.ModalResult:=mrNone; + ButtonPanel1.OKButton.OnClick:=@ButtonPanel1Click; +end; + +procedure TAnchorDockOptionsDialog.ButtonPanel1Click(Sender: TObject); +begin + Master.DragTreshold := DragThresholdTrackBar.Position; + Master.HeaderAlignTop := HeaderAlignTopTrackBar.Position; + Master.HeaderAlignLeft := HeaderAlignLeftTrackBar.Position; + Master.SplitterWidth := SplitterWidthTrackBar.Position; + Master.ScaleOnResize := ScaleOnResizeCheckBox.Checked; end; procedure TAnchorDockOptionsDialog.SetMaster(const AValue: TAnchorDockMaster); diff --git a/examples/anchordocking/anchordockpkg.pas b/examples/anchordocking/anchordockpkg.pas index 7deb32c5ad..85b1ec8632 100644 --- a/examples/anchordocking/anchordockpkg.pas +++ b/examples/anchordocking/anchordockpkg.pas @@ -7,7 +7,8 @@ unit anchordockpkg; interface uses - AnchorDocking, AnchorDockStorage, AnchorDockStr, LazarusPackageIntf; + AnchorDocking, AnchorDockStorage, AnchorDockStr, AnchorDockOptionsDlg, + LazarusPackageIntf; implementation diff --git a/examples/anchordocking/anchordockstr.pas b/examples/anchordocking/anchordockstr.pas index 8c5e42e902..e193f4ab25 100644 --- a/examples/anchordocking/anchordockstr.pas +++ b/examples/anchordocking/anchordockstr.pas @@ -72,6 +72,20 @@ resourcestring +'only one site.'; adrsEmptyName = 'Empty name: '; adrsDuplicateName = 'Duplicate name: '; + adrsDragThreshold = 'Drag threshold'; + adrsAmountOfPixelTheMouseHasToDragBeforeDragStarts = 'Amount of pixel the ' + +'mouse has to drag before drag starts'; + adrsHeaderAlignTop = 'Header align top'; + adrsMoveHeaderToTopWhenWidthHeight100HeaderAlignTop = 'Move header to top ' + +'when (Width/Height)*100<=HeaderAlignTop'; + adrsHeaderAlignLeft = 'Header align left'; + adrsMoveHeaderToLeftWhenWidthHeight100HeaderAlignLeft = 'Move header to ' + +'left when (Width/Height)*100>=HeaderAlignLeft'; + adrsSplitterWidth = 'Splitter width'; + adrsSplitterThickness = 'Splitter thickness'; + adrsScaleOnResize = 'Scale on resize'; + adrsScaleSubSitesWhenASiteIsResized = + 'Scale sub sites when a site is resized'; implementation