From 923c7a6c811a77a24157e13abae16a8806fe6564 Mon Sep 17 00:00:00 2001 From: mattias Date: Sat, 12 Jun 2010 22:28:43 +0000 Subject: [PATCH] anchordocking: started options dialog git-svn-id: trunk@26071 - --- .gitattributes | 2 + examples/anchordocking/anchordocking.lpk | 6 +- .../anchordocking/anchordockoptionsdlg.lfm | 149 ++++++++++++++++++ .../anchordocking/anchordockoptionsdlg.pas | 114 ++++++++++++++ 4 files changed, 270 insertions(+), 1 deletion(-) create mode 100644 examples/anchordocking/anchordockoptionsdlg.lfm create mode 100644 examples/anchordocking/anchordockoptionsdlg.pas diff --git a/.gitattributes b/.gitattributes index 78b1f06b7f..5354743f81 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2749,6 +2749,8 @@ examples/affinetransforms/unit1.pas svneol=native#text/plain examples/anchordocking/README.txt svneol=native#text/plain examples/anchordocking/anchordocking.lpk svneol=native#text/plain examples/anchordocking/anchordocking.pas svneol=native#text/plain +examples/anchordocking/anchordockoptionsdlg.lfm svneol=native#text/plain +examples/anchordocking/anchordockoptionsdlg.pas svneol=native#text/plain examples/anchordocking/anchordockpkg.pas svneol=native#text/plain examples/anchordocking/anchordockstorage.pas svneol=native#text/plain examples/anchordocking/anchordockstr.pas svneol=native#text/plain diff --git a/examples/anchordocking/anchordocking.lpk b/examples/anchordocking/anchordocking.lpk index c94c1651b4..9a6a59bc83 100644 --- a/examples/anchordocking/anchordocking.lpk +++ b/examples/anchordocking/anchordocking.lpk @@ -22,7 +22,7 @@ - + @@ -44,6 +44,10 @@ + + + + diff --git a/examples/anchordocking/anchordockoptionsdlg.lfm b/examples/anchordocking/anchordockoptionsdlg.lfm new file mode 100644 index 0000000000..8d8801096a --- /dev/null +++ b/examples/anchordocking/anchordockoptionsdlg.lfm @@ -0,0 +1,149 @@ +object AnchorDockOptionsDialog: TAnchorDockOptionsDialog + Left = 595 + Height = 220 + Top = 319 + Width = 404 + Caption = 'AnchorDockOptionsDialog' + ClientHeight = 220 + ClientWidth = 404 + OnCreate = FormCreate + LCLVersion = '0.9.29' + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 42 + Top = 172 + Width = 392 + TabOrder = 0 + ShowButtons = [pbOK, pbCancel] + end + object DragThresholdLabel: TLabel + Left = 10 + Height = 18 + Top = 10 + Width = 131 + Caption = 'DragThresholdLabel' + ParentColor = False + end + object HeaderAlignTopLabel: TLabel + AnchorSideLeft.Control = DragThresholdLabel + AnchorSideTop.Control = DragThresholdLabel + AnchorSideTop.Side = asrBottom + Left = 10 + Height = 18 + Top = 38 + Width = 138 + BorderSpacing.Top = 10 + Caption = 'HeaderAlignTopLabel' + ParentColor = False + end + object HeaderAlignLeftLabel: TLabel + AnchorSideLeft.Control = DragThresholdLabel + AnchorSideTop.Control = HeaderAlignTopLabel + AnchorSideTop.Side = asrBottom + Left = 10 + Height = 18 + Top = 66 + Width = 141 + BorderSpacing.Top = 10 + Caption = 'HeaderAlignLeftLabel' + ParentColor = False + end + object SplitterWidthLabel: TLabel + AnchorSideLeft.Control = DragThresholdLabel + AnchorSideTop.Control = HeaderAlignLeftLabel + AnchorSideTop.Side = asrBottom + Left = 10 + Height = 18 + Top = 94 + Width = 121 + BorderSpacing.Top = 10 + Caption = 'SplitterWidthLabel' + ParentColor = False + end + object ScaleOnResizeCheckBox: TCheckBox + AnchorSideLeft.Control = DragThresholdLabel + AnchorSideTop.Control = SplitterWidthLabel + AnchorSideTop.Side = asrBottom + Left = 10 + Height = 22 + Top = 122 + Width = 188 + BorderSpacing.Top = 10 + Caption = 'ScaleOnResizeCheckBox' + ParentShowHint = False + ShowHint = True + TabOrder = 1 + end + object DragThresholdTrackBar: TTrackBar + AnchorSideTop.Control = DragThresholdLabel + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom + Left = 188 + Height = 25 + Top = 7 + Width = 206 + Max = 20 + Position = 0 + Anchors = [akTop, akRight] + BorderSpacing.Right = 10 + ParentShowHint = False + ShowHint = True + TabOrder = 2 + end + object HeaderAlignTopTrackBar: TTrackBar + AnchorSideLeft.Control = DragThresholdTrackBar + AnchorSideTop.Control = HeaderAlignTopLabel + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = DragThresholdTrackBar + AnchorSideRight.Side = asrBottom + Left = 188 + Height = 25 + Top = 35 + Width = 206 + Frequency = 10 + Max = 150 + PageSize = 10 + Position = 0 + Anchors = [akTop, akLeft, akRight] + ParentShowHint = False + ShowHint = True + TabOrder = 3 + end + object HeaderAlignLeftTrackBar: TTrackBar + AnchorSideLeft.Control = DragThresholdTrackBar + AnchorSideTop.Control = HeaderAlignLeftLabel + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = DragThresholdTrackBar + AnchorSideRight.Side = asrBottom + Left = 188 + Height = 25 + Top = 63 + Width = 206 + Frequency = 10 + Max = 200 + PageSize = 10 + Position = 0 + Anchors = [akTop, akLeft, akRight] + ParentShowHint = False + ShowHint = True + TabOrder = 4 + end + object SplitterWidthTrackBar: TTrackBar + AnchorSideLeft.Control = DragThresholdTrackBar + AnchorSideTop.Control = SplitterWidthLabel + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = DragThresholdTrackBar + AnchorSideRight.Side = asrBottom + Left = 188 + Height = 25 + Top = 91 + Width = 206 + Min = 1 + Position = 1 + Anchors = [akTop, akLeft, akRight] + ParentShowHint = False + ShowHint = True + TabOrder = 5 + end +end diff --git a/examples/anchordocking/anchordockoptionsdlg.pas b/examples/anchordocking/anchordockoptionsdlg.pas new file mode 100644 index 0000000000..97fb16e578 --- /dev/null +++ b/examples/anchordocking/anchordockoptionsdlg.pas @@ -0,0 +1,114 @@ +{ Unit implementing anchor docking. + + Copyright (C) 2010 Mattias Gaertner mattias@freepascal.org + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version with the following modification: + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules,and + to copy and distribute the resulting executable under terms of your choice, + provided that you also meet, for each linked independent module, the terms + and conditions of the license of that module. An independent module is a + module which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the library, + but you are not obligated to do so. If you do not wish to do so, delete this + exception statement from your version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License + for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +} +unit AnchorDockOptionsDlg; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel, + Spin, StdCtrls, ComCtrls, AnchorDocking, AnchorDockStr; + +type + + { TAnchorDockOptionsDialog } + + TAnchorDockOptionsDialog = class(TForm) + ButtonPanel1: TButtonPanel; + DragThresholdLabel: TLabel; + DragThresholdTrackBar: TTrackBar; + HeaderAlignLeftLabel: TLabel; + HeaderAlignLeftTrackBar: TTrackBar; + HeaderAlignTopLabel: TLabel; + HeaderAlignTopTrackBar: TTrackBar; + ScaleOnResizeCheckBox: TCheckBox; + SplitterWidthLabel: TLabel; + SplitterWidthTrackBar: TTrackBar; + procedure FormCreate(Sender: TObject); + private + FMaster: TAnchorDockMaster; + procedure SetMaster(const AValue: TAnchorDockMaster); + public + property Master: TAnchorDockMaster read FMaster write SetMaster; + end; + +function ShowAnchorDockOptions(ADockMaster: TAnchorDockMaster): TModalResult; + +implementation + +function ShowAnchorDockOptions(ADockMaster: TAnchorDockMaster): TModalResult; +var + Dlg: TAnchorDockOptionsDialog; +begin + Dlg:=TAnchorDockOptionsDialog.Create(nil); + try + Dlg.Master:=ADockMaster; + Result:=Dlg.ShowModal; + finally + Dlg.Free; + end; +end; + +{$R *.lfm} + +{ TAnchorDockOptionsDialog } + +procedure TAnchorDockOptionsDialog.FormCreate(Sender: TObject); +begin + DragThresholdLabel.Caption:=adrsDragThreshold; + DragThresholdTrackBar.Hint:=adrsAmountOfPixelOfMouseMovementBeforeDragStarts; + HeaderAlignTopLabel.Caption:=adrsHeaderAlignTop; + HeaderAlignTopTrackBar.Hint:= + adrsMoveHeaderToTopWhenWidthHeight100HeaderAlignTop; + HeaderAlignLeftLabel.Caption:=adrsHeaderAlignLeft; + HeaderAlignLeftTrackBar.Hint:= + adrsMoveHeaderToLeftWhenWidthHeight100HeaderAlignLeft; + SplitterWidthLabel.Caption:=adrsSplitterWidth; + SplitterWidthTrackBar.Hint:=adrsSplitterThickness; + ScaleOnResizeCheckBox.Caption:=adrsScaleOnResize; + ScaleOnResizeCheckBox.Hint:=adrsScaleSubSitesWhenASiteIsResized; +end; + +procedure TAnchorDockOptionsDialog.SetMaster(const AValue: TAnchorDockMaster); +begin + if FMaster=AValue then exit; + FMaster:=AValue; + if Master<>nil then begin + DragThresholdTrackBar.Position:=Master.DragTreshold; + HeaderAlignTopTrackBar.Position:=Master.HeaderAlignTop; + HeaderAlignLeftTrackBar.Position:=Master.HeaderAlignLeft; + SplitterWidthTrackBar.Position:=Master.SplitterWidth; + ScaleOnResizeCheckBox.Checked:=Master.ScaleOnResize; + end; +end; + +end. +