mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-12 13:02:48 +02:00
106 lines
2.2 KiB
ObjectPascal
106 lines
2.2 KiB
ObjectPascal
unit fMasterSite;
|
|
(* Test dockable forms and elastic sites, and save/restore layout.
|
|
|
|
ToDo: restore layout does not re-use existing forms?
|
|
*)
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
|
ExtCtrls, StdCtrls,
|
|
uMakeSite;
|
|
|
|
type
|
|
TMasterSite = class(TForm)
|
|
buDump: TButton;
|
|
buCreateForm: TButton;
|
|
buSave: TButton;
|
|
buRestore: TButton;
|
|
procedure buCreateFormClick(Sender: TObject);
|
|
procedure buDumpClick(Sender: TObject);
|
|
procedure buRestoreClick(Sender: TObject);
|
|
procedure buSaveClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
private
|
|
ms: TMemoryStream;
|
|
public
|
|
DockMaster: TDockMaster;
|
|
end;
|
|
|
|
var
|
|
MasterSite: TMasterSite;
|
|
|
|
implementation
|
|
|
|
uses
|
|
{$IFDEF TestUnwrapped}
|
|
EasyDockSite, //CreateUniqueComponentName
|
|
{$ENDIF}
|
|
LCLProc;
|
|
|
|
{ TMasterSite }
|
|
|
|
procedure TMasterSite.buCreateFormClick(Sender: TObject);
|
|
begin
|
|
DockMaster.CreateDockable('', True, True, True);
|
|
end;
|
|
|
|
procedure TMasterSite.buDumpClick(Sender: TObject);
|
|
begin
|
|
DockMaster.DumpSites;
|
|
end;
|
|
|
|
procedure TMasterSite.buRestoreClick(Sender: TObject);
|
|
begin
|
|
if ms <> nil then begin
|
|
ms.Position := 0; //rewind
|
|
DockMaster.LoadFromStream(ms);
|
|
end;
|
|
end;
|
|
|
|
procedure TMasterSite.buSaveClick(Sender: TObject);
|
|
begin
|
|
if ms = nil then
|
|
ms := TMemoryStream.Create
|
|
else
|
|
ms.Clear;
|
|
DockMaster.SaveToStream(ms);
|
|
end;
|
|
|
|
procedure TMasterSite.FormCreate(Sender: TObject);
|
|
var
|
|
f: TWinControl;
|
|
begin
|
|
DockMaster := TDockMaster.Create(self); //(Application)?
|
|
DockMaster.AddElasticSites(self, [alBottom]);
|
|
f := DockMaster.CreateDockable('', True);
|
|
//f.Visible := True; //???
|
|
if f.HostDockSite <> nil then
|
|
f := f.HostDockSite;
|
|
f.Top := 300;
|
|
f.Show;
|
|
DebugLn('Clients: %d', [f.ControlCount]);
|
|
{$IFDEF TestUnwrapped}
|
|
f := DockMaster.CreateDockable('', True, False);
|
|
if f.Name = '' then //name it - for unique caption
|
|
f.Name := CreateUniqueComponentName(f.ClassName, f.Owner);
|
|
{$ELSE}
|
|
f := DockMaster.CreateDockable('', False);
|
|
if f.HostDockSite <> nil then
|
|
f := f.HostDockSite;
|
|
f.Top := 600;
|
|
{$ENDIF}
|
|
f.Show;
|
|
end;
|
|
|
|
{$R *.lfm}
|
|
|
|
initialization
|
|
{.$I fmastersite.lrs}
|
|
|
|
end.
|
|
|