dockmanager example: fixed splitter appearance and orientation for new notebook

git-svn-id: trunk@22721 -
This commit is contained in:
dodi 2009-11-23 13:31:15 +00:00
parent ffaf004a69
commit c91bb602d6
6 changed files with 235 additions and 126 deletions

View File

@ -8,7 +8,7 @@
<TargetFileExt Value=".exe"/> <TargetFileExt Value=".exe"/>
<Icon Value="0"/> <Icon Value="0"/>
<UseXPManifest Value="True"/> <UseXPManifest Value="True"/>
<ActiveEditorIndexAtStart Value="2"/> <ActiveEditorIndexAtStart Value="4"/>
</General> </General>
<VersionInfo> <VersionInfo>
<ProjectVersion Value=""/> <ProjectVersion Value=""/>
@ -33,14 +33,14 @@
<PackageName Value="LCL"/> <PackageName Value="LCL"/>
</Item2> </Item2>
</RequiredPackages> </RequiredPackages>
<Units Count="32"> <Units Count="34">
<Unit0> <Unit0>
<Filename Value="MakeSite.lpr"/> <Filename Value="MakeSite.lpr"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="MakeSite"/> <UnitName Value="MakeSite"/>
<CursorPos X="51" Y="18"/> <CursorPos X="51" Y="18"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="74"/> <UsageCount Value="80"/>
</Unit0> </Unit0>
<Unit1> <Unit1>
<Filename Value="fmastersite.pas"/> <Filename Value="fmastersite.pas"/>
@ -48,31 +48,28 @@
<ComponentName Value="MasterSite"/> <ComponentName Value="MasterSite"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="fMasterSite"/> <UnitName Value="fMasterSite"/>
<CursorPos X="17" Y="35"/> <CursorPos X="1" Y="51"/>
<TopLine Value="8"/> <TopLine Value="23"/>
<EditorIndex Value="0"/> <EditorIndex Value="0"/>
<UsageCount Value="74"/> <UsageCount Value="80"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit1> </Unit1>
<Unit2> <Unit2>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\umakesite.pas"/>
<UnitName Value="uMakeSite"/> <UnitName Value="uMakeSite"/>
<CursorPos X="11" Y="108"/> <CursorPos X="1" Y="126"/>
<TopLine Value="77"/> <TopLine Value="105"/>
<EditorIndex Value="2"/> <EditorIndex Value="3"/>
<UsageCount Value="71"/> <UsageCount Value="74"/>
<Bookmarks Count="1">
<Item0 X="7" Y="173" ID="1"/>
</Bookmarks>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit2> </Unit2>
<Unit3> <Unit3>
<Filename Value="..\..\..\lcl\controls.pp"/> <Filename Value="..\..\..\lcl\controls.pp"/>
<UnitName Value="Controls"/> <UnitName Value="Controls"/>
<CursorPos X="15" Y="1783"/> <CursorPos X="15" Y="1757"/>
<TopLine Value="1760"/> <TopLine Value="1733"/>
<EditorIndex Value="9"/> <EditorIndex Value="7"/>
<UsageCount Value="36"/> <UsageCount Value="39"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit3> </Unit3>
<Unit4> <Unit4>
@ -96,8 +93,8 @@
<Filename Value="..\..\..\..\..\lazarus\fpc\2.2.4\source\rtl\objpas\classes\classesh.inc"/> <Filename Value="..\..\..\..\..\lazarus\fpc\2.2.4\source\rtl\objpas\classes\classesh.inc"/>
<CursorPos X="14" Y="1556"/> <CursorPos X="14" Y="1556"/>
<TopLine Value="1533"/> <TopLine Value="1533"/>
<EditorIndex Value="11"/> <EditorIndex Value="10"/>
<UsageCount Value="11"/> <UsageCount Value="14"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit6> </Unit6>
<Unit7> <Unit7>
@ -109,9 +106,7 @@
<UnitName Value="fClientForm"/> <UnitName Value="fClientForm"/>
<CursorPos X="10" Y="38"/> <CursorPos X="10" Y="38"/>
<TopLine Value="12"/> <TopLine Value="12"/>
<EditorIndex Value="8"/> <UsageCount Value="80"/>
<UsageCount Value="74"/>
<Loaded Value="True"/>
</Unit7> </Unit7>
<Unit8> <Unit8>
<Filename Value="..\..\..\lcl\include\winapih.inc"/> <Filename Value="..\..\..\lcl\include\winapih.inc"/>
@ -134,30 +129,30 @@
<Unit11> <Unit11>
<Filename Value="..\package\easydocksite.pas"/> <Filename Value="..\package\easydocksite.pas"/>
<UnitName Value="EasyDockSite"/> <UnitName Value="EasyDockSite"/>
<CursorPos X="4" Y="45"/> <CursorPos X="1" Y="364"/>
<TopLine Value="24"/> <TopLine Value="341"/>
<EditorIndex Value="4"/> <EditorIndex Value="4"/>
<UsageCount Value="35"/> <UsageCount Value="38"/>
<Bookmarks Count="1"> <Bookmarks Count="1">
<Item0 X="1" Y="1537" ID="2"/> <Item0 X="3" Y="365" ID="2"/>
</Bookmarks> </Bookmarks>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit11> </Unit11>
<Unit12> <Unit12>
<Filename Value="..\..\..\lcl\forms.pp"/> <Filename Value="..\..\..\lcl\forms.pp"/>
<UnitName Value="Forms"/> <UnitName Value="Forms"/>
<CursorPos X="15" Y="577"/> <CursorPos X="17" Y="532"/>
<TopLine Value="553"/> <TopLine Value="509"/>
<EditorIndex Value="3"/> <EditorIndex Value="1"/>
<UsageCount Value="33"/> <UsageCount Value="34"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit12> </Unit12>
<Unit13> <Unit13>
<Filename Value="..\..\..\lcl\include\customform.inc"/> <Filename Value="..\..\..\lcl\include\customform.inc"/>
<CursorPos X="16" Y="2424"/> <CursorPos X="17" Y="1593"/>
<TopLine Value="2422"/> <TopLine Value="1571"/>
<EditorIndex Value="15"/> <EditorIndex Value="14"/>
<UsageCount Value="16"/> <UsageCount Value="19"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit13> </Unit13>
<Unit14> <Unit14>
@ -191,10 +186,10 @@
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="fFloatingSite"/> <UnitName Value="fFloatingSite"/>
<CursorPos X="3" Y="22"/> <CursorPos X="9" Y="107"/>
<TopLine Value="1"/> <TopLine Value="64"/>
<EditorIndex Value="1"/> <EditorIndex Value="2"/>
<UsageCount Value="33"/> <UsageCount Value="36"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit18> </Unit18>
<Unit19> <Unit19>
@ -203,10 +198,10 @@
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="fDockBook"/> <UnitName Value="fDockBook"/>
<CursorPos X="5" Y="96"/> <CursorPos X="1" Y="1"/>
<TopLine Value="73"/> <TopLine Value="1"/>
<EditorIndex Value="5"/> <EditorIndex Value="6"/>
<UsageCount Value="31"/> <UsageCount Value="34"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit19> </Unit19>
<Unit20> <Unit20>
@ -214,9 +209,7 @@
<UnitName Value="EasyDockMgr"/> <UnitName Value="EasyDockMgr"/>
<CursorPos X="7" Y="10"/> <CursorPos X="7" Y="10"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<EditorIndex Value="7"/>
<UsageCount Value="31"/> <UsageCount Value="31"/>
<Loaded Value="True"/>
</Unit20> </Unit20>
<Unit21> <Unit21>
<Filename Value="..\package\fpageframe.pas"/> <Filename Value="..\package\fpageframe.pas"/>
@ -254,176 +247,197 @@
<Filename Value="..\..\..\..\..\lazarus\fpc\2.2.4\source\rtl\objpas\classes\compon.inc"/> <Filename Value="..\..\..\..\..\lazarus\fpc\2.2.4\source\rtl\objpas\classes\compon.inc"/>
<CursorPos X="3" Y="161"/> <CursorPos X="3" Y="161"/>
<TopLine Value="158"/> <TopLine Value="158"/>
<EditorIndex Value="12"/> <EditorIndex Value="11"/>
<UsageCount Value="11"/> <UsageCount Value="14"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit25> </Unit25>
<Unit26> <Unit26>
<Filename Value="..\..\..\lcl\include\control.inc"/> <Filename Value="..\..\..\lcl\include\control.inc"/>
<CursorPos X="3" Y="540"/> <CursorPos X="3" Y="540"/>
<TopLine Value="525"/> <TopLine Value="525"/>
<EditorIndex Value="14"/> <EditorIndex Value="13"/>
<UsageCount Value="21"/> <UsageCount Value="24"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit26> </Unit26>
<Unit27> <Unit27>
<Filename Value="..\..\..\lcl\include\wincontrol.inc"/> <Filename Value="..\..\..\lcl\include\wincontrol.inc"/>
<CursorPos X="1" Y="5215"/> <CursorPos X="3" Y="6514"/>
<TopLine Value="5208"/> <TopLine Value="6468"/>
<EditorIndex Value="10"/> <EditorIndex Value="9"/>
<UsageCount Value="21"/> <UsageCount Value="24"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit27> </Unit27>
<Unit28> <Unit28>
<Filename Value="..\..\..\lcl\include\dragdock.inc"/> <Filename Value="..\..\..\lcl\include\dragdock.inc"/>
<CursorPos X="10" Y="21"/> <CursorPos X="10" Y="21"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<EditorIndex Value="17"/> <EditorIndex Value="16"/>
<UsageCount Value="21"/> <UsageCount Value="24"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit28> </Unit28>
<Unit29> <Unit29>
<Filename Value="..\..\..\lcl\include\dragmanager.inc"/> <Filename Value="..\..\..\lcl\include\dragmanager.inc"/>
<CursorPos X="1" Y="730"/> <CursorPos X="1" Y="730"/>
<TopLine Value="687"/> <TopLine Value="687"/>
<EditorIndex Value="13"/> <EditorIndex Value="12"/>
<UsageCount Value="16"/> <UsageCount Value="19"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit29> </Unit29>
<Unit30> <Unit30>
<Filename Value="..\..\..\lcl\include\application.inc"/> <Filename Value="..\..\..\lcl\include\application.inc"/>
<CursorPos X="1" Y="2074"/> <CursorPos X="1" Y="2074"/>
<TopLine Value="2051"/> <TopLine Value="2051"/>
<EditorIndex Value="16"/> <EditorIndex Value="15"/>
<UsageCount Value="16"/> <UsageCount Value="19"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit30> </Unit30>
<Unit31> <Unit31>
<Filename Value="..\..\..\lcl\include\toolbutton.inc"/> <Filename Value="..\..\..\lcl\include\toolbutton.inc"/>
<CursorPos X="1" Y="700"/> <CursorPos X="1" Y="700"/>
<TopLine Value="677"/> <TopLine Value="677"/>
<EditorIndex Value="6"/>
<UsageCount Value="16"/> <UsageCount Value="16"/>
<Loaded Value="True"/>
</Unit31> </Unit31>
<Unit32>
<Filename Value="..\..\..\lcl\include\customcontrol.inc"/>
<CursorPos X="17" Y="113"/>
<TopLine Value="92"/>
<EditorIndex Value="8"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit32>
<Unit33>
<Filename Value="..\package\zoneheader.inc"/>
<CursorPos X="41" Y="168"/>
<TopLine Value="145"/>
<EditorIndex Value="5"/>
<UsageCount Value="10"/>
<Bookmarks Count="1">
<Item0 X="41" Y="168" ID="1"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit33>
</Units> </Units>
<JumpHistory Count="29" HistoryIndex="28"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="..\package\fdockbook.pas"/> <Filename Value="..\package\umakesite.pas"/>
<Caret Line="209" Column="1" TopLine="180"/> <Caret Line="249" Column="23" TopLine="244"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="..\package\fdockbook.pas"/> <Filename Value="..\package\ffloatingsite.pas"/>
<Caret Line="208" Column="16" TopLine="184"/> <Caret Line="107" Column="9" TopLine="64"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="fmastersite.pas"/> <Filename Value="..\package\easydocksite.pas"/>
<Caret Line="35" Column="17" TopLine="8"/> <Caret Line="555" Column="29" TopLine="526"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\umakesite.pas"/>
<Caret Line="263" Column="1" TopLine="221"/> <Caret Line="65" Column="28" TopLine="38"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\fdockbook.pas"/>
<Caret Line="151" Column="19" TopLine="121"/> <Caret Line="143" Column="20" TopLine="124"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="fmastersite.pas"/>
<Caret Line="177" Column="19" TopLine="139"/> <Caret Line="50" Column="17" TopLine="15"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="..\..\..\lcl\include\control.inc"/> <Filename Value="fmastersite.pas"/>
<Caret Line="3989" Column="27" TopLine="3957"/> <Caret Line="51" Column="17" TopLine="15"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="fmastersite.pas"/>
<Caret Line="177" Column="19" TopLine="139"/> <Caret Line="50" Column="17" TopLine="15"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="fmastersite.pas"/>
<Caret Line="86" Column="15" TopLine="80"/> <Caret Line="57" Column="17" TopLine="15"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\umakesite.pas"/>
<Caret Line="163" Column="31" TopLine="155"/> <Caret Line="253" Column="23" TopLine="232"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\umakesite.pas"/>
<Caret Line="73" Column="1" TopLine="60"/> <Caret Line="62" Column="96" TopLine="39"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\umakesite.pas"/>
<Caret Line="49" Column="1" TopLine="28"/> <Caret Line="256" Column="18" TopLine="237"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\fdockbook.pas"/>
<Caret Line="150" Column="16" TopLine="133"/> <Caret Line="90" Column="15" TopLine="66"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\fdockbook.pas"/>
<Caret Line="153" Column="14" TopLine="130"/> <Caret Line="87" Column="12" TopLine="74"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\fdockbook.pas"/>
<Caret Line="154" Column="20" TopLine="131"/> <Caret Line="98" Column="26" TopLine="74"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\fdockbook.pas"/>
<Caret Line="65" Column="6" TopLine="41"/> <Caret Line="143" Column="30" TopLine="119"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\fdockbook.pas"/>
<Caret Line="155" Column="43" TopLine="132"/> <Caret Line="275" Column="36" TopLine="251"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\fdockbook.pas"/>
<Caret Line="190" Column="1" TopLine="144"/> <Caret Line="1" Column="1" TopLine="1"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\easydocksite.pas"/>
<Caret Line="155" Column="25" TopLine="132"/> <Caret Line="565" Column="1" TopLine="598"/>
</Position19> </Position19>
<Position20> <Position20>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\easydocksite.pas"/>
<Caret Line="156" Column="1" TopLine="111"/> <Caret Line="228" Column="14" TopLine="206"/>
</Position20> </Position20>
<Position21> <Position21>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\easydocksite.pas"/>
<Caret Line="177" Column="21" TopLine="148"/> <Caret Line="363" Column="17" TopLine="339"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\easydocksite.pas"/>
<Caret Line="50" Column="60" TopLine="19"/> <Caret Line="371" Column="1" TopLine="339"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\easydocksite.pas"/>
<Caret Line="68" Column="23" TopLine="53"/> <Caret Line="380" Column="23" TopLine="339"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\easydocksite.pas"/>
<Caret Line="76" Column="69" TopLine="53"/> <Caret Line="786" Column="40" TopLine="763"/>
</Position24> </Position24>
<Position25> <Position25>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\zoneheader.inc"/>
<Caret Line="87" Column="38" TopLine="64"/> <Caret Line="168" Column="41" TopLine="143"/>
</Position25> </Position25>
<Position26> <Position26>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\easydocksite.pas"/>
<Caret Line="178" Column="24" TopLine="138"/> <Caret Line="169" Column="7" TopLine="148"/>
</Position26> </Position26>
<Position27> <Position27>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\easydocksite.pas"/>
<Caret Line="52" Column="17" TopLine="30"/> <Caret Line="228" Column="14" TopLine="205"/>
</Position27> </Position27>
<Position28> <Position28>
<Filename Value="..\package\umakesite.pas"/> <Filename Value="..\package\zoneheader.inc"/>
<Caret Line="181" Column="8" TopLine="144"/> <Caret Line="168" Column="43" TopLine="145"/>
</Position28> </Position28>
<Position29> <Position29>
<Filename Value="..\package\easydocksite.pas"/> <Filename Value="fmastersite.pas"/>
<Caret Line="288" Column="19" TopLine="265"/> <Caret Line="51" Column="1" TopLine="23"/>
</Position29> </Position29>
<Position30>
<Filename Value="fmastersite.pas"/>
<Caret Line="52" Column="1" TopLine="23"/>
</Position30>
</JumpHistory> </JumpHistory>
</ProjectOptions> </ProjectOptions>
<CompilerOptions> <CompilerOptions>

View File

@ -9,7 +9,7 @@ object MasterSite: TMasterSite
OnCreate = FormCreate OnCreate = FormCreate
LCLVersion = '0.9.29' LCLVersion = '0.9.29'
object buDump: TButton object buDump: TButton
Left = 10 Left = 144
Height = 25 Height = 25
Top = 10 Top = 10
Width = 75 Width = 75
@ -17,4 +17,30 @@ object MasterSite: TMasterSite
OnClick = buDumpClick OnClick = buDumpClick
TabOrder = 0 TabOrder = 0
end end
object buCreateForm: TButton
Left = 10
Height = 25
Top = 10
Width = 75
Caption = 'buCreateForm'
OnClick = buCreateFormClick
TabOrder = 1
end
object buSave: TButton
Left = 8
Height = 25
Top = 48
Width = 75
Caption = 'buSave'
TabOrder = 2
end
object buRestore: TButton
Left = 96
Height = 25
Top = 48
Width = 75
Caption = 'buRestore'
OnClick = buRestoreClick
TabOrder = 3
end
end end

View File

@ -12,10 +12,15 @@ uses
type type
TMasterSite = class(TForm) TMasterSite = class(TForm)
buDump: TButton; buDump: TButton;
buCreateForm: TButton;
buSave: TButton;
buRestore: TButton;
procedure buCreateFormClick(Sender: TObject);
procedure buDumpClick(Sender: TObject); procedure buDumpClick(Sender: TObject);
procedure buRestoreClick(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
private private
{ private declarations } ms: TMemoryStream;
public public
DockMaster: TDockMaster; DockMaster: TDockMaster;
end; end;
@ -30,11 +35,23 @@ uses
{ TMasterSite } { TMasterSite }
procedure TMasterSite.buCreateFormClick(Sender: TObject);
begin
DockMaster.CreateDockable('', True);
end;
procedure TMasterSite.buDumpClick(Sender: TObject); procedure TMasterSite.buDumpClick(Sender: TObject);
begin begin
DockMaster.DumpSites; DockMaster.DumpSites;
end; end;
procedure TMasterSite.buRestoreClick(Sender: TObject);
begin
if ms = nil then
ms := TMemoryStream.Create;
DockMaster.LoadFromStream(ms);
end;
procedure TMasterSite.FormCreate(Sender: TObject); procedure TMasterSite.FormCreate(Sender: TObject);
begin begin
DockMaster := TDockMaster.Create(self); //(Application)? DockMaster := TDockMaster.Create(self); //(Application)?

View File

@ -59,7 +59,7 @@ LCL TODO:
//depending on widgetset or patched LCL //depending on widgetset or patched LCL
{.$DEFINE NoDrop} //applied DoDiPatch1? {.$DEFINE NoDrop} //applied DoDiPatch1?
{.$DEFINE PageFrame} //problem: notebook frame cannot Release itself {.$DEFINE PageFrame} //problem: notebook frame cannot Release itself
{$DEFINE replace} //using ReplaceDockedControl? {.$DEFINE replace} //using ReplaceDockedControl?
interface interface
@ -360,6 +360,9 @@ begin
FHeader := TEasyDockHeader.Create; FHeader := TEasyDockHeader.Create;
FSplitter := TEasySplitter.Create(nil); FSplitter := TEasySplitter.Create(nil);
FSplitter.Beveled := True;
//FSplitter.BorderStyle := bsSingle; //border does NOT react!
//FSplitter.BorderWidth := 1;
FSplitter.Parent := ADockSite; FSplitter.Parent := ADockSite;
FSplitter.OnMoved := @SplitterMoved; FSplitter.OnMoved := @SplitterMoved;
FSplitter.Align := alNone; FSplitter.Align := alNone;
@ -561,6 +564,7 @@ begin
FReplacingControl := NoteBook; //ignore insert (see above) FReplacingControl := NoteBook; //ignore insert (see above)
NoteBook.ManualDock(FDockSite); //move into DockClients[] NoteBook.ManualDock(FDockSite); //move into DockClients[]
DropZone.ChildControl := NoteBook; //put into the zone DropZone.ChildControl := NoteBook; //put into the zone
NoteBook.DockOrientation := DropCtl.DockOrientation; //strange bug?
r := DropZone.GetPartRect(zpClient); r := DropZone.GetPartRect(zpClient);
NoteBookAdd(NoteBook, DropCtl); //put the original control into the notebook NoteBookAdd(NoteBook, DropCtl); //put the original control into the notebook
NoteBook.BoundsRect := r; NoteBook.BoundsRect := r;

View File

@ -27,9 +27,15 @@ into a form, before it can be dragged and docked by dragging the form.
Apply ToolButtonAutoSizeAlign.patch to improve the appearance and behaviour Apply ToolButtonAutoSizeAlign.patch to improve the appearance and behaviour
of the toolbar buttons. of the toolbar buttons.
ToDo:
- Check use of ToggleBox instead of TToolButton
- Load/Store layout
+ Update parent on un/dock: Caption and DockHeaders!
Problem: Problem:
Disallow undocking/floating of a NOT docked dockbook. Disallow undocking/floating of a NOT docked dockbook.
Fix: flag StayDocked.
*) *)
(* Applications (* Applications
@ -58,7 +64,7 @@ interface
uses uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ComCtrls, ExtCtrls; ComCtrls, ExtCtrls, StdCtrls;
type type
TTabButton = class(TToolButton) TTabButton = class(TToolButton)
@ -126,7 +132,6 @@ procedure TEasyDockBook.FormDockDrop(Sender: TObject; Source: TDragDockObject;
var var
btn: TTabButton; btn: TTabButton;
begin begin
//Source.DragTarget := pnlDock; ?
Source.Control.Parent := pnlDock; //overwrite DoAddDockClient behaviour Source.Control.Parent := pnlDock; //overwrite DoAddDockClient behaviour
btn := TTabButton.Create(Tabs); btn := TTabButton.Create(Tabs);
@ -228,8 +233,13 @@ begin
//Release; //Close; //Release; //Close;
PostMessage(Self.Handle, WM_CLOSE, 0, 0); PostMessage(Self.Handle, WM_CLOSE, 0, 0);
end; end;
if (HostDockSite is TFloatingSite) then //update the host dock site and its DockManager
TFloatingSite(HostDockSite).UpdateCaption(nil); if HostDockSite <> nil then begin
if (HostDockSite is TFloatingSite) then
TFloatingSite(HostDockSite).UpdateCaption(nil);
if HostDockSite.DockManager <> nil then
HostDockSite.Invalidate;
end;
end; end;
function TEasyDockBook.GetControlTab(AControl: TControl): TTabButton; function TEasyDockBook.GetControlTab(AControl: TControl): TTabButton;

View File

@ -1,6 +1,11 @@
unit uMakeSite; unit uMakeSite;
(* Create elastic dock sites within a form, make forms dockable. (* Create elastic dock sites within a form, make forms dockable.
Owners:
The DockMaster can own all floating forms, for easy enumeration.
The DockMaster can own all dock grips, for easy detection of the dockable forms.
The owner of the dockable forms is responsible for creating or finding dockable forms?
Problems: Problems:
Forms are not (easily) dockable on all platforms, Forms are not (easily) dockable on all platforms,
@ -16,6 +21,7 @@ Default floating sites are owned by Application,
{$mode objfpc}{$H+} {$mode objfpc}{$H+}
{$DEFINE ownSites} //floating sites owned by TDockMaster? {$DEFINE ownSites} //floating sites owned by TDockMaster?
{$DEFINE ownGrips} //docking grips owned by TDockMaster?
interface interface
@ -41,7 +47,9 @@ type
public public
end; end;
//the owner of all docksites (if ownSites is defined) (* The owner of all docksites (if ownSites is defined),
and of all dockable window grips (if ownGrips is defined)
*)
TDockMaster = class(TComponent) TDockMaster = class(TComponent)
protected //event handlers protected //event handlers
procedure DockHandleMouseMove(Sender: TObject; Shift: TShiftState; procedure DockHandleMouseMove(Sender: TObject; Shift: TShiftState;
@ -51,8 +59,10 @@ type
public public
Factory: TComponent; //generic owner Factory: TComponent; //generic owner
procedure AddElasticSites(AForm: TCustomForm; Sides: sDockSides); procedure AddElasticSites(AForm: TCustomForm; Sides: sDockSides);
function CreateDockable(const AName: string; fMultiInst: boolean): TForm; function CreateDockable(const AName: string; fMultiInst: boolean; fWrap: boolean = True): TForm;
procedure DumpSites; procedure DumpSites;
procedure LoadFromStream(Stream: TStream);
procedure SaveToStream(Stream: TStream);
end; end;
implementation implementation
@ -125,7 +135,7 @@ begin
end; end;
function TDockMaster.CreateDockable(const AName: string; function TDockMaster.CreateDockable(const AName: string;
fMultiInst: boolean): TForm; fMultiInst: boolean; fWrap: boolean): TForm;
var var
basename, instname: string; basename, instname: string;
i, l, instno: integer; i, l, instno: integer;
@ -195,10 +205,12 @@ begin
//make it dockable //make it dockable
Result.DragKind := dkDock; Result.DragKind := dkDock;
Result.OnEndDock := @FormEndDock; //float into default host site Result.OnEndDock := @FormEndDock; //float into default host site
end;
if fWrap then begin
//wrap into dock site //wrap into dock site
Site := WrapDockable(Result); Site := WrapDockable(Result);
//create a docking handle - should become a component? //create a docking handle - should become a component?
img := TImage.Create(Result); img := TImage.Create(Result); //we could own the img, and be notified when its parent becomes nil
img.Parent := Result; img.Parent := Result;
img.Align := alNone; img.Align := alNone;
img.Anchors := [akTop, akRight]; img.Anchors := [akTop, akRight];
@ -233,6 +245,31 @@ begin
end; end;
end; end;
procedure TDockMaster.LoadFromStream(Stream: TStream);
var
ctl, pre: TControl;
site: TFloatingSite;
procedure MakeForm;
begin
pre := ctl;
ctl := CreateDockable('', True, False);
end;
begin
//Test0;
site := TFloatingSite.Create(self);
MakeForm; ctl.ManualDock(site, nil, alClient);
MakeForm; ctl.ManualDock(site, pre, alRight);
MakeForm; ctl.ManualDock(site, pre, alBottom);
//MakeForm; ctl.ManualDock(site, pre, alCustom);
end;
procedure TDockMaster.SaveToStream(Stream: TStream);
begin
end;
function TDockMaster.WrapDockable(Client: TControl): TFloatingSite; function TDockMaster.WrapDockable(Client: TControl): TFloatingSite;
var var
Site: TForm absolute Result; Site: TForm absolute Result;
@ -335,6 +372,7 @@ begin
s := OrientString[ctl.DockOrientation]; s := OrientString[ctl.DockOrientation];
DebugLn(' Client=%s@%s (%d,%d)[%d,%d]', [SiteName(ctl), s, DebugLn(' Client=%s@%s (%d,%d)[%d,%d]', [SiteName(ctl), s,
ctl.Left, ctl.Top, ctl.Width, ctl.Height]); ctl.Left, ctl.Top, ctl.Width, ctl.Height]);
//if ctl is TFloatingSite then
end; end;
end else begin end else begin
ctl := Site; ctl := Site;