From c74fe9edbd62bb00e80b8cf53fd5d14957a98c64 Mon Sep 17 00:00:00 2001 From: dodi Date: Fri, 21 May 2010 18:50:10 +0000 Subject: [PATCH] dockmanager example: improved auto-expand sites git-svn-id: trunk@25569 - --- examples/dockmanager/ide_demo2/fclientform2.lfm | 1 + examples/dockmanager/ide_demo2/fclientform2.pas | 10 ++++++++++ examples/dockmanager/package/umakesite.pas | 9 ++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/examples/dockmanager/ide_demo2/fclientform2.lfm b/examples/dockmanager/ide_demo2/fclientform2.lfm index de39b4ba74..5a6905e3c1 100644 --- a/examples/dockmanager/ide_demo2/fclientform2.lfm +++ b/examples/dockmanager/ide_demo2/fclientform2.lfm @@ -9,6 +9,7 @@ object ViewWindow: TViewWindow DragKind = dkDock DragMode = dmAutomatic OnEndDock = FormEndDock + OnStartDock = FormStartDock LCLVersion = '0.9.29' Visible = True object Label1: TLabel diff --git a/examples/dockmanager/ide_demo2/fclientform2.pas b/examples/dockmanager/ide_demo2/fclientform2.pas index 4dc94abbe2..5bbda26e34 100644 --- a/examples/dockmanager/ide_demo2/fclientform2.pas +++ b/examples/dockmanager/ide_demo2/fclientform2.pas @@ -17,6 +17,7 @@ type TViewWindow = class(TForm) Label1: TLabel; procedure FormEndDock(Sender, Target: TObject; X, Y: Integer); + procedure FormStartDock(Sender: TObject; var DragObject: TDragDockObject); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private @@ -51,6 +52,15 @@ begin end; end; +procedure TViewWindow.FormStartDock(Sender: TObject; + var DragObject: TDragDockObject); +begin +(* remember current size, for DockRect +*) + UndockHeight := Height; + UndockWidth := Width; +end; + procedure TViewWindow.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin diff --git a/examples/dockmanager/package/umakesite.pas b/examples/dockmanager/package/umakesite.pas index 1624973b4b..9c7f82a528 100644 --- a/examples/dockmanager/package/umakesite.pas +++ b/examples/dockmanager/package/umakesite.pas @@ -874,6 +874,7 @@ begin if Width < w then begin //enlarge docksite Parent.DisableAlign; //form(?) + //w := Source.Control.Width; Width := w; if Align = alRight then begin if AutoExpand then begin @@ -900,6 +901,9 @@ begin Height := w; if Align = alBottom then begin if AutoExpand then begin + //w := Source.Control.Height; + w := Source.DockRect.Bottom - Source.DockRect.Top; + Height := w; r := Parent.BoundsRect; inc(r.Bottom, w); Parent.BoundsRect := r; @@ -943,6 +947,7 @@ var var dw, dh: integer; + ctl: TControl; const d = 2; //shift mousepos slightly outside container begin @@ -976,7 +981,9 @@ begin alBottom: begin AutoExpand := Source.DragPos.y + d > r.Top; - if AutoExpand then Adjust(0, dh) else Adjust(0, -dh); + { TODO : for all modes... } + //if AutoExpand then Adjust(0, dh) else Adjust(0, -dh); + if AutoExpand then Adjust(0, Source.Control.TBDockHeight) else Adjust(0, -dh); end else exit;