From 554e1663e9e5711b4762b51f574fec3e2d6fddde Mon Sep 17 00:00:00 2001 From: dodi Date: Sun, 25 Apr 2010 09:55:26 +0000 Subject: [PATCH] dockmanager example: added Visible flag to DockMaster methods git-svn-id: trunk@24904 - --- .gitattributes | 3 -- .../dockmanager/elasticsite/fmastersite.pas | 4 +- examples/dockmanager/ide_demo/fclientform.lfm | 22 -------- examples/dockmanager/ide_demo/fclientform.pas | 1 - examples/dockmanager/package/fdockbook.lrs | 12 ----- examples/dockmanager/package/felasticsite.lrs | 28 ---------- .../dockmanager/package/ffloatingsite.lrs | 8 --- .../dockmanager/package/ffloatingsite.pas | 2 +- examples/dockmanager/package/umakesite.pas | 51 ++++++++----------- 9 files changed, 24 insertions(+), 107 deletions(-) delete mode 100644 examples/dockmanager/package/fdockbook.lrs delete mode 100644 examples/dockmanager/package/felasticsite.lrs delete mode 100644 examples/dockmanager/package/ffloatingsite.lrs diff --git a/.gitattributes b/.gitattributes index e37fd444d7..fac7498946 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2880,13 +2880,10 @@ examples/dockmanager/package/easydockmgr.lpk svneol=native#text/plain examples/dockmanager/package/easydockmgr.pas svneol=native#text/pascal examples/dockmanager/package/easydocksite.pas svneol=native#text/plain examples/dockmanager/package/fdockbook.lfm svneol=native#text/plain -examples/dockmanager/package/fdockbook.lrs svneol=native#text/pascal examples/dockmanager/package/fdockbook.pas svneol=native#text/pascal examples/dockmanager/package/felasticsite.lfm svneol=native#text/plain -examples/dockmanager/package/felasticsite.lrs svneol=native#text/plain examples/dockmanager/package/felasticsite.pas svneol=native#text/pascal examples/dockmanager/package/ffloatingsite.lfm svneol=native#text/plain -examples/dockmanager/package/ffloatingsite.lrs svneol=native#text/plain examples/dockmanager/package/ffloatingsite.pas svneol=native#text/pascal examples/dockmanager/package/umakesite.pas svneol=native#text/pascal examples/dockmanager/package/uminirestore.pas svneol=native#text/pascal diff --git a/examples/dockmanager/elasticsite/fmastersite.pas b/examples/dockmanager/elasticsite/fmastersite.pas index 1620d7de19..1750c01f73 100644 --- a/examples/dockmanager/elasticsite/fmastersite.pas +++ b/examples/dockmanager/elasticsite/fmastersite.pas @@ -73,10 +73,11 @@ var begin DockMaster := TDockMaster.Create(self); //(Application)? DockMaster.AddElasticSites(self, [alBottom]); - f := DockMaster.CreateDockable('', True); + f := DockMaster.CreateDockable('', True, False); if f.HostDockSite <> nil then f := f.HostDockSite; f.Top := 300; + f.Show; {$IFDEF TestUnwrapped} f := DockMaster.CreateDockable('', True, False); if f.Name = '' then //name it - for unique caption @@ -87,6 +88,7 @@ begin f := f.HostDockSite; f.Top := 600; {$ENDIF} + f.Show; end; initialization diff --git a/examples/dockmanager/ide_demo/fclientform.lfm b/examples/dockmanager/ide_demo/fclientform.lfm index 98afba0bf1..de39b4ba74 100644 --- a/examples/dockmanager/ide_demo/fclientform.lfm +++ b/examples/dockmanager/ide_demo/fclientform.lfm @@ -20,26 +20,4 @@ object ViewWindow: TViewWindow Caption = 'Label1' ParentColor = False end - object Image1: TImage - Left = 384 - Height = 16 - Top = 0 - Width = 16 - Anchors = [akTop, akRight] - AutoSize = True - OnMouseMove = Image1MouseMove - Picture.Data = { - 055449636F6E3E01000000000100010010101000000000002801000016000000 - 2800000010000000200000000100040000000000C00000000000000000000000 - 0000000000000000000000000000800000800000008080008000000080008000 - 8080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00 - FFFF0000FFFFFF00000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000990000000000009999990000000000999999000000000999999990 - 0000000999999990000000009999990000000000999999000000000000990000 - 00000000000000007FFF0000BFFF0000DFFF0000EFFF0000F7FF0000FBFF0000 - FDCF0000FE030000FE010000FE010000FC000000FC000000FE010000FE010000 - FF030000FFCF0000 - } - end end diff --git a/examples/dockmanager/ide_demo/fclientform.pas b/examples/dockmanager/ide_demo/fclientform.pas index e9255175cc..f43269ecc8 100644 --- a/examples/dockmanager/ide_demo/fclientform.pas +++ b/examples/dockmanager/ide_demo/fclientform.pas @@ -18,7 +18,6 @@ uses type TViewWindow = class(TForm) - Image1: TImage; Label1: TLabel; procedure FormEndDock(Sender, Target: TObject; X, Y: Integer); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; diff --git a/examples/dockmanager/package/fdockbook.lrs b/examples/dockmanager/package/fdockbook.lrs deleted file mode 100644 index 1e6cd62351..0000000000 --- a/examples/dockmanager/package/fdockbook.lrs +++ /dev/null @@ -1,12 +0,0 @@ -{ This is an automatically generated lazarus resource file } - -LazarusResources.Add('TEasyDockBook','FORMDATA',[ - 'TPF0'#241#13'TEasyDockBook'#12'EasyDockBook'#4'Left'#3#7#1#6'Height'#3','#1#3 - +'Top'#3#146#0#5'Width'#3#144#1#7'Caption'#6#12'EasyDockBook'#12'ClientHeight' - +#3','#1#11'ClientWidth'#3#144#1#8'DockSite'#9#8'DragKind'#7#6'dkDock'#7'OnCl' - +'ose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#10'OnDockDrop'#7#12'FormDo' - +'ckDrop'#10'OnDockOver'#7#12'FormDockOver'#9'OnEndDock'#7#11'FormEndDock'#13 - +'OnGetSiteInfo'#7#15'FormGetSiteInfo'#8'OnUnDock'#7#10'FormUnDock'#0#242#2#0 - +#6'TPanel'#7'pnlDock'#4'Left'#2#0#6'Height'#3','#1#3'Top'#2#0#5'Width'#3#144 - +#1#5'Align'#7#8'alClient'#8'TabOrder'#2#0#14'UseDockManager'#8#0#0#0 -]); diff --git a/examples/dockmanager/package/felasticsite.lrs b/examples/dockmanager/package/felasticsite.lrs deleted file mode 100644 index a92479fc0d..0000000000 --- a/examples/dockmanager/package/felasticsite.lrs +++ /dev/null @@ -1,28 +0,0 @@ -{ This is an automatically generated lazarus resource file } - -LazarusResources.Add('TDockingSite','FORMDATA',[ - 'TPF0'#12'TDockingSite'#11'DockingSite'#4'Left'#3#253#1#6'Height'#3#163#0#3'T' - +'op'#3#12#1#5'Width'#3#255#0#8'AutoSize'#9#7'Caption'#6#9'Dock Site'#12'Clie' - +'ntHeight'#3#163#0#11'ClientWidth'#3#255#0#10'LCLVersion'#6#6'0.9.29'#7'Visi' - +'ble'#9#0#6'TPanel'#7'pnlLeft'#4'Left'#2#0#6'Height'#3#138#0#3'Top'#2#0#5'Wi' - +'dth'#2#0#5'Align'#7#6'alLeft'#7'Caption'#6#7'pnlLeft'#5'Color'#7#7'clWhite' - +#8'DockSite'#9#11'ParentColor'#8#8'TabOrder'#2#0#10'OnDockDrop'#7#15'pnlLeft' - +'DockDrop'#10'OnDockOver'#7#15'pnlLeftDockOver'#13'OnGetSiteInfo'#7#18'pnlLe' - +'ftGetSiteInfo'#8'OnUnDock'#7#13'pnlLeftUnDock'#0#0#9'TSplitter'#9'splitLeft' - +#4'Left'#2#0#6'Height'#3#138#0#3'Top'#2#0#5'Width'#2#4#0#0#6'TPanel'#8'pnlRi' - +'ght'#4'Left'#3#255#0#6'Height'#3#138#0#3'Top'#2#0#5'Width'#2#0#5'Align'#7#7 - +'alRight'#7'Caption'#6#8'pnlRight'#5'Color'#7#6'clAqua'#8'DockSite'#9#11'Par' - +'entColor'#8#8'TabOrder'#2#2#10'OnDockDrop'#7#15'pnlLeftDockDrop'#10'OnDockO' - +'ver'#7#15'pnlLeftDockOver'#13'OnGetSiteInfo'#7#18'pnlLeftGetSiteInfo'#8'OnU' - +'nDock'#7#13'pnlLeftUnDock'#0#0#6'TPanel'#9'pnlBottom'#4'Left'#2#0#6'Height' - +#2#1#3'Top'#3#142#0#5'Width'#3#255#0#5'Align'#7#8'alBottom'#7'Caption'#6#9'p' - +'nlBottom'#8'DockSite'#9#8'TabOrder'#2#3#10'OnDockDrop'#7#15'pnlLeftDockDrop' - +#10'OnDockOver'#7#15'pnlLeftDockOver'#13'OnGetSiteInfo'#7#18'pnlLeftGetSiteI' - +'nfo'#8'OnUnDock'#7#13'pnlLeftUnDock'#0#0#9'TSplitter'#10'splitRight'#4'Left' - +#3#251#0#6'Height'#3#138#0#3'Top'#2#0#5'Width'#2#4#5'Align'#7#7'alRight'#12 - +'ResizeAnchor'#7#7'akRight'#0#0#10'TStatusBar'#10'StatusBar1'#4'Left'#2#0#6 - +'Height'#2#20#3'Top'#3#143#0#5'Width'#3#255#0#6'Panels'#14#0#0#0#9'TSplitter' - +#11'splitBottom'#6'Cursor'#7#8'crVSplit'#4'Left'#2#0#6'Height'#2#4#3'Top'#3 - +#138#0#5'Width'#3#255#0#5'Align'#7#8'alBottom'#12'ResizeAnchor'#7#8'akBottom' - +#0#0#0 -]); diff --git a/examples/dockmanager/package/ffloatingsite.lrs b/examples/dockmanager/package/ffloatingsite.lrs deleted file mode 100644 index 76acc031c1..0000000000 --- a/examples/dockmanager/package/ffloatingsite.lrs +++ /dev/null @@ -1,8 +0,0 @@ -{ This is an automatically generated lazarus resource file } - -LazarusResources.Add('TFloatingSite','FORMDATA',[ - 'TPF0'#13'TFloatingSite'#12'FloatingSite'#4'Left'#3#175#1#6'Height'#3#9#1#3'T' - +'op'#3#242#1#5'Width'#3'y'#1#7'Caption'#6#12'FloatingSite'#8'DockSite'#9#7'O' - +'nClose'#7#9'FormClose'#10'OnDockDrop'#7#12'FormDockDrop'#8'OnUnDock'#7#10'F' - +'ormUnDock'#14'UseDockManager'#9#10'LCLVersion'#6#6'0.9.29'#0#0 -]); diff --git a/examples/dockmanager/package/ffloatingsite.pas b/examples/dockmanager/package/ffloatingsite.pas index 4199c2c560..1ef5d1d2d3 100644 --- a/examples/dockmanager/package/ffloatingsite.pas +++ b/examples/dockmanager/package/ffloatingsite.pas @@ -188,7 +188,7 @@ end; {$ENDIF} initialization - {$I ffloatingsite.lrs} + {.$I ffloatingsite.lrs} end. diff --git a/examples/dockmanager/package/umakesite.pas b/examples/dockmanager/package/umakesite.pas index 6f64774c5d..91d7241fcd 100644 --- a/examples/dockmanager/package/umakesite.pas +++ b/examples/dockmanager/package/umakesite.pas @@ -72,8 +72,8 @@ type protected //event handlers procedure FormEndDock(Sender, Target: TObject; X, Y: Integer); protected //utilities - function ReloadForm(const AName: string; fMultiInst: boolean): TWinControl; virtual; - function WrapDockable(Client: TControl): TFloatingSite; + function ReloadForm(const AName: string; fMultiInst: boolean; fVisible: boolean): TWinControl; virtual; + function WrapDockable(Client: TControl; fVisible: boolean): TFloatingSite; private LastPanel: TDockPanel; //last elastic panel created {$IFDEF ownPanels} @@ -88,8 +88,8 @@ type destructor Destroy; override; procedure AddElasticSites(AForm: TCustomForm; Sides: sDockSides); function CreateDockable(const AName: string; - fMultiInst: boolean; fWrap: boolean = True): TWinControl; - function MakeDockable(AForm: TWinControl; fWrap: boolean = True): TForm; + fMultiInst: boolean; fWrap: boolean = True; fVisible: boolean = False): TWinControl; + function MakeDockable(AForm: TWinControl; fWrap: boolean = True; fVisible: boolean = False): TForm; procedure DumpSites; //persistence procedure LoadFromStream(Stream: TStream); @@ -220,7 +220,7 @@ begin end; function TDockMaster.CreateDockable(const AName: string; - fMultiInst: boolean; fWrap: boolean): TWinControl; + fMultiInst: boolean; fWrap: boolean; fVisible: boolean): TWinControl; begin (* Create a dockable form, based on its name. Used also to restore a layout. @@ -230,15 +230,15 @@ Options (to come or to be removed) otherwise an already existing instance is returned. (really returned?) *) //get the form - Result := ReloadForm(AName, fMultiInst); + Result := ReloadForm(AName, fMultiInst, False); if Result = nil then exit; - MakeDockable(Result, fWrap); + MakeDockable(Result, fWrap, fVisible); //problem with first show? //Result.Invalidate; - doesn't help end; -function TDockMaster.MakeDockable(AForm: TWinControl; fWrap: boolean): TForm; +function TDockMaster.MakeDockable(AForm: TWinControl; fWrap, fVisible: boolean): TForm; var Site: TFloatingSite absolute Result; Res: TWinControlAccess absolute AForm; @@ -259,7 +259,7 @@ begin Res.OnEndDock := @FormEndDock; //float into default host site {$ENDIF} AForm.DisableAlign; - Site := WrapDockable(AForm); + Site := WrapDockable(AForm, fVisible); AForm.EnableAlign; end; //IDE? @@ -293,7 +293,7 @@ begin //not found Result := inherited ReloadControl(AName, Site); if Result = nil then - Result := ReloadForm(AName, True); + Result := ReloadForm(AName, False, True); end; procedure TDockMaster.FormEndDock(Sender, Target: TObject; X, Y: Integer); @@ -318,7 +318,7 @@ begin ctl := Sender as TControl; //if not (csDestroying in ctl.ComponentState) and (ctl.HostDockSite = nil) then begin //if (ctl.HostDockSite = nil) then - WrapDockable(ctl); + WrapDockable(ctl, True); end; procedure TDockMaster.LoadFromFile(const AName: string); @@ -395,7 +395,7 @@ var begin (* AName is
*) - hcomp := self.ReloadForm(FormName, True); //try multi-instance first + hcomp := self.ReloadForm(FormName, True, False); //try multi-instance first if host <> nil then begin AddElasticSites(host, [aln]); Result := LastPanel; //found or created @@ -403,6 +403,7 @@ var Result.BoundsRect := SiteRec.Extent; Result.AutoExpand := SiteRec.AutoExpand; Result.EnableAlign; + Result.Visible := True; exit; end; //failed @@ -598,7 +599,7 @@ begin end; function TDockMaster.ReloadForm(const AName: string; - fMultiInst: boolean): TWinControl; + fMultiInst: boolean; fVisible: boolean): TWinControl; var //instname: string basename: string; @@ -681,13 +682,7 @@ begin //search/create ourselves fo := Owner; //our owner also owns the forms if AName = '' then begin - {$IFDEF new} - Result := TForm(TForm.NewInstance); - //Result.DisableAlign; - Result.Create(fo); //named Form1, Form2... - not now??? - {$ELSE} Result := TForm.Create(fo); //named Form1, Form2... - not now??? - {$ENDIF} end else begin //create new instance //DebugLn('!!! create new: ', AName); @@ -697,21 +692,16 @@ begin DebugLn(basename , ' is not a registered class'); exit(nil); //bad form name end; - {$IFDEF new} - Result := TWinControl(fc.NewInstance); - Result.DisableAlign; - Result.Create(fo); - {$ELSE} Result := TWinControl(fc.Create(fo)); - {$ENDIF} if (AName <> '') and (Result.Name <> AName) then TryRename(Result, AName); end; //if not DisableUpdate then Result.EnableAlign; - //Result.Visible := True; //required for docking + if fVisible then + Result.Visible := True; end; -function TDockMaster.WrapDockable(Client: TControl): TFloatingSite; +function TDockMaster.WrapDockable(Client: TControl; fVisible: boolean): TFloatingSite; var Site: TFloatingSite absolute Result; ctl: TControlAccess absolute Client; @@ -742,10 +732,8 @@ begin //retry make client auto-dockable ctl.DragKind := dkDock; ctl.DragMode := dmAutomatic; - {$IFDEF ForceVisible} - Client.Visible := True; - {$ENDIF} Client.ManualDock(Site); + Client.Visible := True; //shown only if Site is visible //DebugLn('After Wrap: ', DbgS(Site.BoundsRect)); if ForIDE then begin @@ -754,7 +742,8 @@ begin //Client.Left := 0; Site.DockManager.ResetBounds(True); end; - Site.Visible := True; + if fVisible then; + Site.Visible := True; except DebugLn('error WrapDockable: ' + Client.Name); if Client.HostDockSite <> Site then