mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2026-01-06 08:00:42 +01:00
dockmanager example: experimental LoadFromStream/SaveToStream - not yet working
git-svn-id: trunk@22782 -
This commit is contained in:
parent
dfb5d67e48
commit
5474500b31
@ -33,14 +33,14 @@
|
||||
<PackageName Value="LCL"/>
|
||||
</Item2>
|
||||
</RequiredPackages>
|
||||
<Units Count="40">
|
||||
<Units Count="42">
|
||||
<Unit0>
|
||||
<Filename Value="MakeSite.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="MakeSite"/>
|
||||
<CursorPos X="51" Y="18"/>
|
||||
<TopLine Value="1"/>
|
||||
<UsageCount Value="87"/>
|
||||
<UsageCount Value="96"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="fmastersite.pas"/>
|
||||
@ -48,32 +48,31 @@
|
||||
<ComponentName Value="MasterSite"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="fMasterSite"/>
|
||||
<CursorPos X="1" Y="51"/>
|
||||
<TopLine Value="23"/>
|
||||
<CursorPos X="1" Y="52"/>
|
||||
<TopLine Value="28"/>
|
||||
<EditorIndex Value="0"/>
|
||||
<UsageCount Value="87"/>
|
||||
<UsageCount Value="96"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<UnitName Value="uMakeSite"/>
|
||||
<CursorPos X="1" Y="247"/>
|
||||
<TopLine Value="214"/>
|
||||
<CursorPos X="39" Y="289"/>
|
||||
<TopLine Value="207"/>
|
||||
<EditorIndex Value="3"/>
|
||||
<UsageCount Value="77"/>
|
||||
<Bookmarks Count="2">
|
||||
<Item0 X="1" Y="165" ID="1"/>
|
||||
<Item1 X="1" Y="275" ID="2"/>
|
||||
<UsageCount Value="81"/>
|
||||
<Bookmarks Count="1">
|
||||
<Item0 X="1" Y="331" ID="2"/>
|
||||
</Bookmarks>
|
||||
<Loaded Value="True"/>
|
||||
</Unit2>
|
||||
<Unit3>
|
||||
<Filename Value="..\..\..\lcl\controls.pp"/>
|
||||
<UnitName Value="Controls"/>
|
||||
<CursorPos X="15" Y="1242"/>
|
||||
<TopLine Value="1218"/>
|
||||
<EditorIndex Value="9"/>
|
||||
<UsageCount Value="42"/>
|
||||
<CursorPos X="15" Y="1790"/>
|
||||
<TopLine Value="1767"/>
|
||||
<EditorIndex Value="10"/>
|
||||
<UsageCount Value="46"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit3>
|
||||
<Unit4>
|
||||
@ -95,10 +94,10 @@
|
||||
</Unit5>
|
||||
<Unit6>
|
||||
<Filename Value="..\..\..\..\..\lazarus\fpc\2.2.4\source\rtl\objpas\classes\classesh.inc"/>
|
||||
<CursorPos X="3" Y="1458"/>
|
||||
<TopLine Value="1468"/>
|
||||
<CursorPos X="15" Y="822"/>
|
||||
<TopLine Value="798"/>
|
||||
<EditorIndex Value="6"/>
|
||||
<UsageCount Value="16"/>
|
||||
<UsageCount Value="20"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit6>
|
||||
<Unit7>
|
||||
@ -110,7 +109,7 @@
|
||||
<UnitName Value="fClientForm"/>
|
||||
<CursorPos X="10" Y="38"/>
|
||||
<TopLine Value="12"/>
|
||||
<UsageCount Value="87"/>
|
||||
<UsageCount Value="96"/>
|
||||
</Unit7>
|
||||
<Unit8>
|
||||
<Filename Value="..\..\..\lcl\include\winapih.inc"/>
|
||||
@ -133,10 +132,13 @@
|
||||
<Unit11>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<UnitName Value="EasyDockSite"/>
|
||||
<CursorPos X="3" Y="303"/>
|
||||
<TopLine Value="301"/>
|
||||
<CursorPos X="1" Y="1011"/>
|
||||
<TopLine Value="988"/>
|
||||
<EditorIndex Value="4"/>
|
||||
<UsageCount Value="41"/>
|
||||
<UsageCount Value="45"/>
|
||||
<Bookmarks Count="1">
|
||||
<Item0 X="1" Y="1051" ID="1"/>
|
||||
</Bookmarks>
|
||||
<Loaded Value="True"/>
|
||||
</Unit11>
|
||||
<Unit12>
|
||||
@ -145,7 +147,7 @@
|
||||
<CursorPos X="17" Y="647"/>
|
||||
<TopLine Value="624"/>
|
||||
<EditorIndex Value="1"/>
|
||||
<UsageCount Value="37"/>
|
||||
<UsageCount Value="41"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit12>
|
||||
<Unit13>
|
||||
@ -188,7 +190,7 @@
|
||||
<CursorPos X="1" Y="14"/>
|
||||
<TopLine Value="1"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<UsageCount Value="39"/>
|
||||
<UsageCount Value="43"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit18>
|
||||
<Unit19>
|
||||
@ -197,10 +199,10 @@
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="fDockBook"/>
|
||||
<CursorPos X="1" Y="132"/>
|
||||
<TopLine Value="121"/>
|
||||
<EditorIndex Value="7"/>
|
||||
<UsageCount Value="37"/>
|
||||
<CursorPos X="1" Y="271"/>
|
||||
<TopLine Value="236"/>
|
||||
<EditorIndex Value="8"/>
|
||||
<UsageCount Value="41"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit19>
|
||||
<Unit20>
|
||||
@ -276,8 +278,8 @@
|
||||
<Filename Value="..\..\..\lcl\include\application.inc"/>
|
||||
<CursorPos X="1" Y="2076"/>
|
||||
<TopLine Value="2053"/>
|
||||
<EditorIndex Value="8"/>
|
||||
<UsageCount Value="22"/>
|
||||
<EditorIndex Value="9"/>
|
||||
<UsageCount Value="26"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit30>
|
||||
<Unit31>
|
||||
@ -297,7 +299,7 @@
|
||||
<CursorPos X="41" Y="168"/>
|
||||
<TopLine Value="145"/>
|
||||
<EditorIndex Value="5"/>
|
||||
<UsageCount Value="13"/>
|
||||
<UsageCount Value="17"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit33>
|
||||
<Unit34>
|
||||
@ -305,32 +307,32 @@
|
||||
<UnitName Value="LCLProc"/>
|
||||
<CursorPos X="1" Y="2109"/>
|
||||
<TopLine Value="2086"/>
|
||||
<EditorIndex Value="10"/>
|
||||
<UsageCount Value="12"/>
|
||||
<EditorIndex Value="11"/>
|
||||
<UsageCount Value="16"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit34>
|
||||
<Unit35>
|
||||
<Filename Value="..\..\..\..\..\lazarus\fpc\2.2.4\source\rtl\objpas\sysutils\sysstrh.inc"/>
|
||||
<CursorPos X="29" Y="123"/>
|
||||
<TopLine Value="123"/>
|
||||
<EditorIndex Value="11"/>
|
||||
<UsageCount Value="12"/>
|
||||
<EditorIndex Value="12"/>
|
||||
<UsageCount Value="16"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit35>
|
||||
<Unit36>
|
||||
<Filename Value="..\..\..\..\..\lazarus\fpc\2.2.4\source\rtl\objpas\sysutils\sysstr.inc"/>
|
||||
<CursorPos X="11" Y="915"/>
|
||||
<TopLine Value="914"/>
|
||||
<EditorIndex Value="12"/>
|
||||
<UsageCount Value="12"/>
|
||||
<EditorIndex Value="13"/>
|
||||
<UsageCount Value="16"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit36>
|
||||
<Unit37>
|
||||
<Filename Value="..\..\..\..\..\lazarus\fpc\2.2.4\source\rtl\objpas\sysutils\sysformt.inc"/>
|
||||
<CursorPos X="12" Y="115"/>
|
||||
<TopLine Value="97"/>
|
||||
<EditorIndex Value="13"/>
|
||||
<UsageCount Value="12"/>
|
||||
<EditorIndex Value="14"/>
|
||||
<UsageCount Value="16"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit37>
|
||||
<Unit38>
|
||||
@ -347,120 +349,143 @@
|
||||
<TopLine Value="53"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit39>
|
||||
<Unit40>
|
||||
<Filename Value="..\..\..\..\..\lazarus\fpc\2.2.4\source\rtl\objpas\classes\streams.inc"/>
|
||||
<CursorPos X="3" Y="654"/>
|
||||
<TopLine Value="621"/>
|
||||
<EditorIndex Value="7"/>
|
||||
<UsageCount Value="11"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit40>
|
||||
<Unit41>
|
||||
<Filename Value="..\..\..\lcl\lclmessageglue.pas"/>
|
||||
<UnitName Value="LCLMessageGlue"/>
|
||||
<CursorPos X="1" Y="109"/>
|
||||
<TopLine Value="86"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit41>
|
||||
</Units>
|
||||
<JumpHistory Count="28" HistoryIndex="26">
|
||||
<JumpHistory Count="30" HistoryIndex="29">
|
||||
<Position1>
|
||||
<Filename Value="..\package\fdockbook.pas"/>
|
||||
<Caret Line="143" Column="1" TopLine="119"/>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="990" Column="1" TopLine="967"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="..\package\fdockbook.pas"/>
|
||||
<Caret Line="144" Column="1" TopLine="120"/>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="994" Column="1" TopLine="971"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="..\package\fdockbook.pas"/>
|
||||
<Caret Line="145" Column="1" TopLine="121"/>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="997" Column="1" TopLine="974"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="..\package\fdockbook.pas"/>
|
||||
<Caret Line="146" Column="1" TopLine="122"/>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="999" Column="1" TopLine="976"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="..\package\fdockbook.pas"/>
|
||||
<Caret Line="147" Column="1" TopLine="123"/>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="1008" Column="1" TopLine="985"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="..\package\fdockbook.pas"/>
|
||||
<Caret Line="148" Column="1" TopLine="124"/>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="1009" Column="1" TopLine="986"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="..\package\fdockbook.pas"/>
|
||||
<Caret Line="143" Column="1" TopLine="119"/>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="1010" Column="1" TopLine="987"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="..\package\fdockbook.pas"/>
|
||||
<Caret Line="151" Column="5" TopLine="119"/>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="1011" Column="1" TopLine="988"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="..\package\ffloatingsite.pas"/>
|
||||
<Caret Line="88" Column="19" TopLine="58"/>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="296" Column="1" TopLine="273"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="..\package\ffloatingsite.pas"/>
|
||||
<Caret Line="75" Column="1" TopLine="62"/>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="304" Column="1" TopLine="281"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="374" Column="68" TopLine="351"/>
|
||||
<Caret Line="305" Column="1" TopLine="282"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="402" Column="7" TopLine="391"/>
|
||||
<Caret Line="306" Column="1" TopLine="283"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="267" Column="18" TopLine="259"/>
|
||||
<Caret Line="289" Column="1" TopLine="266"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="165" Column="10" TopLine="143"/>
|
||||
<Caret Line="290" Column="1" TopLine="267"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="164" Column="18" TopLine="143"/>
|
||||
<Caret Line="291" Column="1" TopLine="268"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="144" Column="52" TopLine="143"/>
|
||||
<Caret Line="292" Column="1" TopLine="269"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="62" Column="25" TopLine="44"/>
|
||||
<Caret Line="293" Column="1" TopLine="270"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="220" Column="20" TopLine="212"/>
|
||||
<Caret Line="294" Column="1" TopLine="271"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="268" Column="24" TopLine="243"/>
|
||||
<Caret Line="295" Column="1" TopLine="272"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="327" Column="1" TopLine="281"/>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="1006" Column="1" TopLine="983"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="558" Column="27" TopLine="521"/>
|
||||
<Caret Line="1008" Column="1" TopLine="985"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="240" Column="1" TopLine="225"/>
|
||||
<Caret Line="1009" Column="1" TopLine="986"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="278" Column="1" TopLine="254"/>
|
||||
<Caret Line="1010" Column="1" TopLine="987"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="242" Column="19" TopLine="208"/>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="1011" Column="1" TopLine="988"/>
|
||||
</Position24>
|
||||
<Position25>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="265" Column="1" TopLine="219"/>
|
||||
<Caret Line="296" Column="1" TopLine="273"/>
|
||||
</Position25>
|
||||
<Position26>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="257" Column="25" TopLine="234"/>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="309" Column="1" TopLine="286"/>
|
||||
</Position26>
|
||||
<Position27>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="247" Column="22" TopLine="213"/>
|
||||
<Caret Line="310" Column="1" TopLine="287"/>
|
||||
</Position27>
|
||||
<Position28>
|
||||
<Filename Value="..\package\easydocksite.pas"/>
|
||||
<Caret Line="303" Column="3" TopLine="301"/>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="311" Column="1" TopLine="288"/>
|
||||
</Position28>
|
||||
<Position29>
|
||||
<Filename Value="fmastersite.pas"/>
|
||||
<Caret Line="52" Column="1" TopLine="28"/>
|
||||
</Position29>
|
||||
<Position30>
|
||||
<Filename Value="..\package\umakesite.pas"/>
|
||||
<Caret Line="274" Column="1" TopLine="251"/>
|
||||
</Position30>
|
||||
</JumpHistory>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
@ -478,6 +503,16 @@
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
<Debugging>
|
||||
<BreakPoints Count="2">
|
||||
<Item1>
|
||||
<Source Value="fmastersite.pas"/>
|
||||
<Line Value="52"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Source Value="..\package\umakesite.pas"/>
|
||||
<Line Value="306"/>
|
||||
</Item2>
|
||||
</BreakPoints>
|
||||
<Exceptions Count="3">
|
||||
<Item1>
|
||||
<Name Value="EAbort"/>
|
||||
|
||||
@ -32,6 +32,7 @@ object MasterSite: TMasterSite
|
||||
Top = 48
|
||||
Width = 75
|
||||
Caption = 'buSave'
|
||||
OnClick = buSaveClick
|
||||
TabOrder = 2
|
||||
end
|
||||
object buRestore: TButton
|
||||
|
||||
@ -18,6 +18,7 @@ type
|
||||
procedure buCreateFormClick(Sender: TObject);
|
||||
procedure buDumpClick(Sender: TObject);
|
||||
procedure buRestoreClick(Sender: TObject);
|
||||
procedure buSaveClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
private
|
||||
ms: TMemoryStream;
|
||||
@ -46,10 +47,18 @@ begin
|
||||
end;
|
||||
|
||||
procedure TMasterSite.buRestoreClick(Sender: TObject);
|
||||
begin
|
||||
if ms <> nil then
|
||||
DockMaster.LoadFromStream(ms);
|
||||
end;
|
||||
|
||||
procedure TMasterSite.buSaveClick(Sender: TObject);
|
||||
begin
|
||||
if ms = nil then
|
||||
ms := TMemoryStream.Create;
|
||||
DockMaster.LoadFromStream(ms);
|
||||
ms := TMemoryStream.Create
|
||||
else
|
||||
ms.Clear;
|
||||
DockMaster.SaveToStream(ms);
|
||||
end;
|
||||
|
||||
procedure TMasterSite.FormCreate(Sender: TObject);
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
<Description Value="EasyDocking Manager and Notebook"/>
|
||||
<License Value="LGPL"/>
|
||||
<Version Major="1"/>
|
||||
<Files Count="13">
|
||||
<Files Count="10">
|
||||
<Item1>
|
||||
<Filename Value="easydocksite.pas"/>
|
||||
<UnitName Value="EasyDockSite"/>
|
||||
@ -56,21 +56,9 @@
|
||||
<UnitName Value="uMiniRestore"/>
|
||||
</Item9>
|
||||
<Item10>
|
||||
<Filename Value="fpageframe.lfm"/>
|
||||
<Type Value="LFM"/>
|
||||
</Item10>
|
||||
<Item11>
|
||||
<Filename Value="fpageframe.lrs"/>
|
||||
<Type Value="LRS"/>
|
||||
</Item11>
|
||||
<Item12>
|
||||
<Filename Value="fpageframe.pas"/>
|
||||
<UnitName Value="fPageFrame"/>
|
||||
</Item12>
|
||||
<Item13>
|
||||
<Filename Value="umakesite.pas"/>
|
||||
<UnitName Value="uMakeSite"/>
|
||||
</Item13>
|
||||
</Item10>
|
||||
</Files>
|
||||
<Type Value="RunAndDesignTime"/>
|
||||
<RequiredPkgs Count="2">
|
||||
|
||||
@ -8,7 +8,7 @@ interface
|
||||
|
||||
uses
|
||||
EasyDockSite, fDockBook, fFloatingSite, fElasticSite, uMiniRestore,
|
||||
fPageFrame, uMakeSite, LazarusPackageIntf;
|
||||
uMakeSite, LazarusPackageIntf;
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
@ -248,6 +248,7 @@ type
|
||||
{$ENDIF}
|
||||
constructor Create(ADockSite: TWinControl); override;
|
||||
destructor Destroy; override;
|
||||
procedure DumpToStream(Stream: TStream);
|
||||
procedure PaintSite(DC: HDC); override;
|
||||
procedure SetStyle(NewStyle: TEasyHeaderStyle);
|
||||
function GetEffectiveStyle: TEasyHeaderStyle;
|
||||
@ -286,6 +287,10 @@ uses
|
||||
Themes, LResources,
|
||||
LCLproc; //debugging
|
||||
|
||||
type
|
||||
TWinControlAccess = class(TWinControl)
|
||||
end;
|
||||
|
||||
const
|
||||
{$IFDEF restore}
|
||||
HeaderButtons = [zpCloseButton, zpRestoreButton];
|
||||
@ -751,11 +756,6 @@ end;
|
||||
{$ELSE}
|
||||
{$ENDIF}
|
||||
|
||||
procedure TEasyTree.LoadFromStream(Stream: TStream);
|
||||
begin
|
||||
//todo
|
||||
end;
|
||||
|
||||
procedure TEasyTree.MessageHandler(Sender: TControl; var Message: TLMessage);
|
||||
//was: procedure TEasyTree.MouseMessage(var Message: TLMessage);
|
||||
var
|
||||
@ -955,7 +955,121 @@ begin
|
||||
FDockSite.Invalidate; //force repaint of headers
|
||||
end;
|
||||
|
||||
|
||||
type
|
||||
RZone = packed record
|
||||
BottomRight: TPoint;
|
||||
Level: byte;
|
||||
Orientation: TDockOrientation;
|
||||
//Width, Height: word;
|
||||
NameLen: byte; //+chars
|
||||
end;
|
||||
|
||||
var
|
||||
ZoneRec: RZone;
|
||||
ZoneName: string;
|
||||
|
||||
procedure TEasyTree.SaveToStream(Stream: TStream);
|
||||
|
||||
procedure DoSaveZone(Zone: TEasyZone; Level: byte);
|
||||
var
|
||||
child: TControl;
|
||||
begin
|
||||
//fill ZoneRec
|
||||
ZoneRec.Level := Level;
|
||||
ZoneRec.Orientation := Zone.Orientation;
|
||||
ZoneRec.BottomRight := Zone.BR;
|
||||
child := Zone.ChildControl;
|
||||
if child = nil then
|
||||
ZoneName := ''
|
||||
else
|
||||
ZoneName := child.Name;
|
||||
ZoneRec.NameLen := Length(ZoneName);
|
||||
//write descriptor
|
||||
Stream.Write(ZoneRec, sizeof(ZoneRec));
|
||||
if ZoneRec.NameLen > 0 then
|
||||
Stream.Write(ZoneName[1], ZoneRec.NameLen);
|
||||
{ TODO -oDoDi : WritePages of notebook }
|
||||
// recurse into first child
|
||||
if Zone.FirstChild <> nil then
|
||||
DoSaveZone(Zone.FirstChild, Level + 1); //all children of Level
|
||||
// recurse into next sibling
|
||||
if Zone.NextSibling <> nil then
|
||||
DoSaveZone(Zone.NextSibling, Level); //all siblings of Level
|
||||
end;
|
||||
|
||||
begin
|
||||
// write top zone data
|
||||
//Stream.Write(FTopXYLimit, SizeOf(FTopXYLimit));
|
||||
//WriteLimits(FTopZone);
|
||||
// write all zones from tree
|
||||
DoSaveZone(FTopZone, 1);
|
||||
//write end marker (dummy record of level 0)
|
||||
ZoneRec.Level := 0;
|
||||
ZoneRec.NameLen := 0;
|
||||
Stream.Write(ZoneRec, sizeof(ZoneRec));
|
||||
end;
|
||||
|
||||
procedure TEasyTree.LoadFromStream(Stream: TStream);
|
||||
|
||||
function GetRec: integer;
|
||||
var
|
||||
NameLen: integer;
|
||||
begin
|
||||
Stream.Read(ZoneRec, SizeOf(ZoneRec));
|
||||
NameLen := ZoneRec.NameLen;
|
||||
if NameLen > 0 then begin
|
||||
SetLength(ZoneName, NameLen);
|
||||
Stream.Read(ZoneName[1], NameLen);
|
||||
end;
|
||||
Result := ZoneRec.Level;
|
||||
end;
|
||||
|
||||
procedure MakeZone(InZone: TEasyZone; Level: byte);
|
||||
var
|
||||
NewZone, PrevZone: TEasyZone;
|
||||
NewCtl: TControl;
|
||||
fSkip: boolean;
|
||||
begin
|
||||
//ZoneRec has been read before
|
||||
NewZone := InZone; //in case this level's zones are skipped
|
||||
PrevZone := nil; //add as first child
|
||||
while ZoneRec.Level >= Level do begin
|
||||
if ZoneRec.Level = Level then begin
|
||||
//create zone at Level in InZone
|
||||
if ZoneRec.NameLen > 0 then begin
|
||||
TWinControlAccess(DockSite).ReloadDockedControl(ZoneName, NewCtl);
|
||||
fSkip := NewCtl = nil;
|
||||
end else
|
||||
fSkip := False;
|
||||
if not fSkip then begin
|
||||
//sibling = child of InZone
|
||||
NewZone := TEasyZone.Create(self);
|
||||
NewZone.Orientation := ZoneRec.Orientation;
|
||||
NewZone.BR := ZoneRec.BottomRight;
|
||||
NewZone.ChildControl := NewCtl;
|
||||
InZone.InsertAfter(PrevZone, NewZone);
|
||||
PrevZone := NewZone;
|
||||
end;
|
||||
//else skip zone without control - at Level!?
|
||||
GetRec;
|
||||
end else begin // > Level, create children
|
||||
//child = child of last added zone
|
||||
MakeZone(NewZone, Level+1);
|
||||
end;
|
||||
end; //until GetRec < Level;
|
||||
end;
|
||||
|
||||
begin
|
||||
//read record
|
||||
if GetRec > 0 then begin
|
||||
FTopZone.BR := ZoneRec.BottomRight;
|
||||
MakeZone(FTopZone, 1);
|
||||
end;
|
||||
//finish?
|
||||
end;
|
||||
|
||||
procedure TEasyTree.DumpToStream(Stream: TStream);
|
||||
var
|
||||
r: TRect;
|
||||
s: string;
|
||||
|
||||
@ -265,7 +265,11 @@ begin
|
||||
//Dock(nil);
|
||||
end;
|
||||
//Release; //Close;
|
||||
{$IFDEF WIN32}
|
||||
PostMessage(Self.Handle, WM_CLOSE, 0, 0);
|
||||
{$ELSE}
|
||||
//how to close from within an event handler?
|
||||
{$ENDIF}
|
||||
end;
|
||||
//update the host dock site and its DockManager
|
||||
if HostDockSite <> nil then begin
|
||||
|
||||
@ -208,6 +208,15 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
type
|
||||
RSiteRec = packed record
|
||||
Bounds: TRect;
|
||||
NameLen: byte; //+name
|
||||
end;
|
||||
var
|
||||
SiteRec: RSiteRec;
|
||||
SiteName: string;
|
||||
|
||||
procedure TDockMaster.LoadFromStream(Stream: TStream);
|
||||
var
|
||||
ctl, pre: TControl;
|
||||
@ -220,6 +229,15 @@ var
|
||||
ctl := CreateDockable('', True, False);
|
||||
end;
|
||||
|
||||
function ReadSite: boolean;
|
||||
begin
|
||||
Stream.Read(SiteRec, sizeof(SiteRec));
|
||||
Result := SiteRec.Bounds.Right > 0;
|
||||
SetLength(SiteName, SiteRec.NameLen);
|
||||
if Result and (SiteRec.NameLen > 0) then
|
||||
Stream.Read(SiteName[1], SiteRec.NameLen);
|
||||
end;
|
||||
|
||||
begin
|
||||
(* Restore a layout.
|
||||
- Create all ElasticSites (to come)
|
||||
@ -234,6 +252,7 @@ Notebooks?
|
||||
Ownership?
|
||||
When notebooks are dockable, they cannot be owned by the DockSite!
|
||||
*)
|
||||
{$IFDEF old}
|
||||
//Test0;
|
||||
site := TFloatingSite.Create(self);
|
||||
MakeForm; ctl.ManualDock(site, nil, alClient);
|
||||
@ -248,11 +267,48 @@ Notebooks?
|
||||
MakeForm; ctl.ManualDock(site, nb, alCustom);
|
||||
MakeForm; ctl.ManualDock(site, nb, alCustom);
|
||||
end;
|
||||
{$ELSE}
|
||||
{$ENDIF}
|
||||
//restore all DockSites
|
||||
//all floating sites
|
||||
while ReadSite do begin
|
||||
site := TFloatingSite.Create(self);
|
||||
site.Name := SiteName;
|
||||
site.BoundsRect := SiteRec.Bounds;
|
||||
site.DockManager.LoadFromStream(Stream);
|
||||
end;
|
||||
//all ElasticSites - to come
|
||||
end;
|
||||
|
||||
procedure TDockMaster.SaveToStream(Stream: TStream);
|
||||
begin
|
||||
|
||||
procedure SaveSite(Site: TWinControl);
|
||||
begin
|
||||
(* what if a site doesn't have an DockManager?
|
||||
*)
|
||||
SiteRec.Bounds := Site.BoundsRect;
|
||||
SiteName := Site.Name;
|
||||
SiteRec.NameLen := Length(SiteName);
|
||||
Stream.Write(SiteRec, sizeof(SiteRec));
|
||||
if SiteName <> '' then
|
||||
Stream.Write(SiteName[1], Length(SiteName));
|
||||
Site.DockManager.SaveToStream(Stream);
|
||||
end;
|
||||
|
||||
var
|
||||
i: integer;
|
||||
cmp: TComponent;
|
||||
wc: TWinControl absolute cmp;
|
||||
begin
|
||||
for i := 0 to ComponentCount - 1 do begin
|
||||
cmp := Components[i];
|
||||
if (cmp is TWinControl) and wc.DockSite then
|
||||
SaveSite(wc);
|
||||
end;
|
||||
//end marker
|
||||
SiteRec.Bounds.Right := -1;
|
||||
SiteRec.NameLen := 0;
|
||||
Stream.Write(SiteRec, sizeof(SiteRec));
|
||||
end;
|
||||
|
||||
function TDockMaster.ReloadForm(const AName: string): TCustomForm;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user