diff --git a/.gitattributes b/.gitattributes index 78012ddb7f..3c6217da52 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2773,6 +2773,9 @@ examples/dockmanager/easytree/ftree.pas svneol=native#text/plain examples/dockmanager/elasticsite/SiteTest.lpi svneol=native#text/plain examples/dockmanager/elasticsite/SiteTest.lpr svneol=native#text/plain examples/dockmanager/elasticsite/SiteTest.lrs svneol=native#text/plain +examples/dockmanager/elasticsite/fclientform.lfm svneol=native#text/plain +examples/dockmanager/elasticsite/fclientform.lrs svneol=native#text/plain +examples/dockmanager/elasticsite/fclientform.pas svneol=native#text/pascal examples/dockmanager/elasticsite/fdockclient.lfm svneol=native#text/plain examples/dockmanager/elasticsite/fdockclient.lrs svneol=native#text/plain examples/dockmanager/elasticsite/fdockclient.pas svneol=native#text/pascal @@ -2793,6 +2796,7 @@ 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/pen.ico -text examples/dockmanager/package/zoneheader.inc svneol=native#text/pascal examples/dockmanager/patches/FloatHostDockable.patch svneol=native#text/pascal examples/dockmanager/patches/NewClients.patch svneol=native#text/pascal diff --git a/examples/dockmanager/easytree/fmain.lfm b/examples/dockmanager/easytree/fmain.lfm index 40d232149a..3b7be442da 100644 --- a/examples/dockmanager/easytree/fmain.lfm +++ b/examples/dockmanager/easytree/fmain.lfm @@ -11,7 +11,7 @@ object EasyDockMain: TEasyDockMain Font.Name = 'MS Sans Serif' OnCreate = FormCreate ShowHint = True - LCLVersion = '0.9.27' + LCLVersion = '0.9.29' object sb: TStatusBar Left = 0 Height = 20 @@ -85,7 +85,7 @@ object EasyDockMain: TEasyDockMain end object edDock: TEdit Left = 327 - Height = 23 + Height = 21 Top = 2 Width = 56 DragKind = dkDock diff --git a/examples/dockmanager/easytree/fmain.lrs b/examples/dockmanager/easytree/fmain.lrs index 528a7c55a6..ca889d36f6 100644 --- a/examples/dockmanager/easytree/fmain.lrs +++ b/examples/dockmanager/easytree/fmain.lrs @@ -5,7 +5,7 @@ LazarusResources.Add('TEasyDockMain','FORMDATA',[ +'op'#2'{'#5'Width'#3#254#1#13'ActiveControl'#7#6'buDump'#7'Caption'#6#12'Eas' +'yDockMain'#12'ClientHeight'#3#29#1#11'ClientWidth'#3#254#1#11'Font.Height'#2 +#245#9'Font.Name'#6#13'MS Sans Serif'#8'OnCreate'#7#10'FormCreate'#8'ShowHin' - +'t'#9#10'LCLVersion'#6#6'0.9.27'#0#10'TStatusBar'#2'sb'#4'Left'#2#0#6'Height' + +'t'#9#10'LCLVersion'#6#6'0.9.29'#0#10'TStatusBar'#2'sb'#4'Left'#2#0#6'Height' +#2#20#3'Top'#3#9#1#5'Width'#3#254#1#6'Panels'#14#0#0#0#8'TToolBar'#8'ToolBar' +'1'#4'Left'#2#0#6'Height'#2#29#3'Top'#2#0#5'Width'#3#254#1#7'Caption'#6#8'To' +'olBar1'#8'TabOrder'#2#1#0#6'TShape'#6'Shape1'#4'Left'#2#1#6'Height'#2#22#4 @@ -23,16 +23,16 @@ LazarusResources.Add('TEasyDockMain','FORMDATA',[ +'Kind'#7#6'dkDock'#8'DragMode'#7#11'dmAutomatic'#11'ParentColor'#8#0#0#7'TBu' +'tton'#6'buDump'#4'Left'#3#155#0#6'Height'#2#22#3'Top'#2#2#5'Width'#2':'#7'C' +'aption'#6#4'Dump'#7'OnClick'#7#11'buDumpClick'#8'TabOrder'#2#0#0#0#5'TEdit' - +#6'edDock'#4'Left'#3'G'#1#6'Height'#2#23#3'Top'#2#2#5'Width'#2'8'#8'DragKind' + +#6'edDock'#4'Left'#3'G'#1#6'Height'#2#21#3'Top'#2#2#5'Width'#2'8'#8'DragKind' +#7#6'dkDock'#8'TabOrder'#2#1#4'Text'#6#8'Drag Me!'#0#0#7'TButton'#9'buManDoc' - +'k'#4'Left'#3''#1#6'Height'#2#22#3'Top'#2#2#5'Width'#2'K'#7'Caption'#6#9'bu' - +'ManDock'#7'OnClick'#7#14'buManDockClick'#8'TabOrder'#2#2#0#0#9'TCheckBox'#10 - +'swCaptions'#4'Left'#2'^'#6'Height'#2#17#4'Hint'#6#16'Show zone names?'#3'To' - +'p'#2#2#5'Width'#2'='#7'Caption'#6#8'Captions'#8'OnChange'#7#16'swCaptionsCh' - +'ange'#8'TabOrder'#2#3#0#0#7'TButton'#10'buDockEdit'#4'Left'#3'6'#1#6'Height' - +#2#22#3'Top'#2#2#5'Width'#2#17#7'Caption'#6#2'->'#11'OnMouseDown'#7#19'buDoc' - +'kEditMouseDown'#8'TabOrder'#2#4#0#0#0#6'TPanel'#9'pnlDocker'#4'Left'#2#0#6 - +'Height'#3#236#0#3'Top'#2#29#5'Width'#3#254#1#5'Align'#7#8'alClient'#7'Capti' - +'on'#6#10'Dock here!'#8'TabOrder'#2#2#14'UseDockManager'#8#10'OnDockOver'#7 + +'k'#4'Left'#3#127#1#6'Height'#2#22#3'Top'#2#2#5'Width'#2'K'#7'Caption'#6#9'b' + +'uManDock'#7'OnClick'#7#14'buManDockClick'#8'TabOrder'#2#2#0#0#9'TCheckBox' + +#10'swCaptions'#4'Left'#2'^'#6'Height'#2#17#4'Hint'#6#16'Show zone names?'#3 + +'Top'#2#2#5'Width'#2'='#7'Caption'#6#8'Captions'#8'OnChange'#7#16'swCaptions' + +'Change'#8'TabOrder'#2#3#0#0#7'TButton'#10'buDockEdit'#4'Left'#3'6'#1#6'Heig' + +'ht'#2#22#3'Top'#2#2#5'Width'#2#17#7'Caption'#6#2'->'#11'OnMouseDown'#7#19'b' + +'uDockEditMouseDown'#8'TabOrder'#2#4#0#0#0#6'TPanel'#9'pnlDocker'#4'Left'#2#0 + +#6'Height'#3#236#0#3'Top'#2#29#5'Width'#3#254#1#5'Align'#7#8'alClient'#7'Cap' + +'tion'#6#10'Dock here!'#8'TabOrder'#2#2#14'UseDockManager'#8#10'OnDockOver'#7 +#14'DockerDockOver'#0#0#0 ]); diff --git a/examples/dockmanager/elasticsite/SiteTest.lpi b/examples/dockmanager/elasticsite/SiteTest.lpi index f59d0fe179..5b859eaa36 100644 --- a/examples/dockmanager/elasticsite/SiteTest.lpi +++ b/examples/dockmanager/elasticsite/SiteTest.lpi @@ -36,7 +36,7 @@ - + @@ -57,6 +57,13 @@ + + + + + + + diff --git a/examples/dockmanager/elasticsite/SiteTest.lpr b/examples/dockmanager/elasticsite/SiteTest.lpr index 001f29f3b9..07b4e6d628 100644 --- a/examples/dockmanager/elasticsite/SiteTest.lpr +++ b/examples/dockmanager/elasticsite/SiteTest.lpr @@ -7,13 +7,14 @@ uses cthreads, {$ENDIF}{$ENDIF} Interfaces, // this includes the LCL widgetset - Forms, EasyDockMgr, fEditorSite, fEditBook; + Forms, EasyDockMgr, fEditorSite, fEditBook, fClientForm; {$IFDEF WINDOWS}{$R SiteTest.rc}{$ENDIF} begin Application.Initialize; Application.CreateForm(TEditorSite, EditorSite); + Application.CreateForm(TViewWindow, ViewWindow); Application.Run; end. diff --git a/examples/dockmanager/elasticsite/fclientform.lfm b/examples/dockmanager/elasticsite/fclientform.lfm new file mode 100644 index 0000000000..07b7544b5b --- /dev/null +++ b/examples/dockmanager/elasticsite/fclientform.lfm @@ -0,0 +1,46 @@ +object ViewWindow: TViewWindow + Left = 321 + Height = 300 + Top = 332 + Width = 400 + Caption = 'ViewWindow' + ClientHeight = 300 + ClientWidth = 400 + DragKind = dkDock + DragMode = dmAutomatic + OnEndDock = FormEndDock + LCLVersion = '0.9.29' + object Label1: TLabel + Left = 16 + Height = 14 + Top = 8 + Width = 142 + AutoSize = False + Caption = 'Label1' + DragKind = dkDock + DragMode = dmAutomatic + 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/elasticsite/fclientform.lrs b/examples/dockmanager/elasticsite/fclientform.lrs new file mode 100644 index 0000000000..5affc25f83 --- /dev/null +++ b/examples/dockmanager/elasticsite/fclientform.lrs @@ -0,0 +1,24 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TViewWindow','FORMDATA',[ + 'TPF0'#11'TViewWindow'#10'ViewWindow'#4'Left'#3'A'#1#6'Height'#3','#1#3'Top'#3 + +'L'#1#5'Width'#3#144#1#7'Caption'#6#10'ViewWindow'#12'ClientHeight'#3','#1#11 + +'ClientWidth'#3#144#1#8'DragKind'#7#6'dkDock'#8'DragMode'#7#11'dmAutomatic'#9 + +'OnEndDock'#7#11'FormEndDock'#10'LCLVersion'#6#6'0.9.29'#0#6'TLabel'#6'Label' + +'1'#4'Left'#2#16#6'Height'#2#14#3'Top'#2#8#5'Width'#3#142#0#8'AutoSize'#8#7 + +'Caption'#6#6'Label1'#8'DragKind'#7#6'dkDock'#8'DragMode'#7#11'dmAutomatic' + +#11'ParentColor'#8#0#0#6'TImage'#6'Image1'#4'Left'#3#128#1#6'Height'#2#16#3 + +'Top'#2#0#5'Width'#2#16#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#11 + +'OnMouseMove'#7#15'Image1MouseMove'#12'Picture.Data'#10'H'#1#0#0#5'TIcon>'#1 + +#0#0#0#0#1#0#1#0#16#16#16#0#0#0#0#0'('#1#0#0#22#0#0#0'('#0#0#0#16#0#0#0' '#0 + +#0#0#1#0#4#0#0#0#0#0#192#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0#128#128#128#0 + +#192#192#192#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0#255#255 + +#0#0#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#153#0#0#0#0 + +#0#0#153#153#153#0#0#0#0#0#153#153#153#0#0#0#0#9#153#153#153#144#0#0#0#9#153 + +#153#153#144#0#0#0#0#153#153#153#0#0#0#0#0#153#153#153#0#0#0#0#0#0#153#0#0#0 + +#0#0#0#0#0#0#0#127#255#0#0#191#255#0#0#223#255#0#0#239#255#0#0#247#255#0#0 + +#251#255#0#0#253#207#0#0#254#3#0#0#254#1#0#0#254#1#0#0#252#0#0#0#252#0#0#0 + +#254#1#0#0#254#1#0#0#255#3#0#0#255#207#0#0#0#0#0 +]); diff --git a/examples/dockmanager/elasticsite/fclientform.pas b/examples/dockmanager/elasticsite/fclientform.pas new file mode 100644 index 0000000000..4e83779ce6 --- /dev/null +++ b/examples/dockmanager/elasticsite/fclientform.pas @@ -0,0 +1,59 @@ +unit fClientForm; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, ExtCtrls; + +type + TViewWindow = class(TForm) + Image1: TImage; + Label1: TLabel; + procedure FormEndDock(Sender, Target: TObject; X, Y: Integer); + procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; + X, Y: Integer); + private + { private declarations } + public + { public declarations } + end; + +var + ViewWindow: TViewWindow; + +implementation + +uses + LCLProc, fFloatingSite; + +{ TViewWindow } + +procedure TViewWindow.FormEndDock(Sender, Target: TObject; X, Y: Integer); +var + Site: TFloatingSite; +begin + if HostDockSite = nil then begin + DebugLn('--- floating'); + Site := TFloatingSite.Create(Application); + Site.BoundsRect := self.BoundsRect; + ManualDock(Site); + end else + DebugLn('--- in ' + HostDockSite.Name); +end; + +procedure TViewWindow.Image1MouseMove(Sender: TObject; Shift: TShiftState; + X, Y: Integer); +begin + if ssLeft in Shift then begin + BeginDrag(False); + end; +end; + +initialization + {$I fclientform.lrs} + +end. + diff --git a/examples/dockmanager/elasticsite/feditorsite.lfm b/examples/dockmanager/elasticsite/feditorsite.lfm index 290e9e42ca..447e0257e7 100644 --- a/examples/dockmanager/elasticsite/feditorsite.lfm +++ b/examples/dockmanager/elasticsite/feditorsite.lfm @@ -6,7 +6,11 @@ inherited EditorSite: TEditorSite ClientHeight = 281 ClientWidth = 400 Menu = MainMenu1 + OnActivate = FormActivate OnCreate = FormCreate + OnDeactivate = FormDeactivate + OnHide = FormHide + OnResize = FormResize ShowInTaskBar = stAlways inherited pnlLeft: TPanel Height = 256 diff --git a/examples/dockmanager/elasticsite/feditorsite.lrs b/examples/dockmanager/elasticsite/feditorsite.lrs index a90aa7448c..f2bf035467 100644 --- a/examples/dockmanager/elasticsite/feditorsite.lrs +++ b/examples/dockmanager/elasticsite/feditorsite.lrs @@ -3,36 +3,38 @@ LazarusResources.Add('TEditorSite','FORMDATA',[ 'TPF0'#241#11'TEditorSite'#10'EditorSite'#4'Left'#3'b'#1#6'Height'#3','#1#5'W' +'idth'#3#144#1#7'Caption'#6#10'EditorSite'#12'ClientHeight'#3#25#1#11'Client' - +'Width'#3#144#1#4'Menu'#7#9'MainMenu1'#8'OnCreate'#7#10'FormCreate'#13'ShowI' - +'nTaskBar'#7#8'stAlways'#0#241#6'TPanel'#7'pnlLeft'#6'Height'#3#0#1#0#0#241#9 - +'TSplitter'#9'splitLeft'#6'Height'#3#0#1#0#0#241#6'TPanel'#8'pnlRight'#4'Lef' - +'t'#3#144#1#6'Height'#3#0#1#0#0#241#6'TPanel'#9'pnlBottom'#3'Top'#3#4#1#5'Wi' - +'dth'#3#144#1#0#0#241#9'TSplitter'#10'splitRight'#4'Left'#3#140#1#6'Height'#3 - +#0#1#0#0#241#10'TStatusBar'#10'StatusBar1'#3'Top'#3#5#1#5'Width'#3#144#1#0#0 - +#241#9'TSplitter'#11'splitBottom'#3'Top'#3#0#1#5'Width'#3#144#1#0#0#242#2#7#9 - +'TMainMenu'#9'MainMenu1'#4'left'#3#240#0#3'top'#2'0'#0#9'TMenuItem'#6'mnFile' - +#7'Caption'#6#5'&File'#0#9'TMenuItem'#6'mnOpen'#7'Caption'#6#5'&Open'#7'OnCl' - +'ick'#7#11'mnOpenClick'#0#0#9'TMenuItem'#9'MenuItem1'#7'Caption'#6#1'-'#0#0#9 - +'TMenuItem'#6'mnExit'#7'Caption'#6#5'E&xit'#7'OnClick'#7#11'mnExitClick'#0#0 - +#0#9'TMenuItem'#6'mnView'#7'Caption'#6#5'&View'#0#9'TMenuItem'#9'MenuItem2'#7 - +'Caption'#6#16'Object Inspector'#7'OnClick'#7#13'ViewMenuClick'#0#0#9'TMenuI' - +'tem'#9'MenuItem3'#7'Caption'#6#8'Messages'#7'OnClick'#7#13'ViewMenuClick'#0 - +#0#9'TMenuItem'#9'MenuItem4'#7'Caption'#6#13'Code Explorer'#7'OnClick'#7#13 - +'ViewMenuClick'#0#0#9'TMenuItem'#9'MenuItem5'#7'Caption'#6#9'ToDo List'#7'On' - +'Click'#7#13'ViewMenuClick'#0#0#9'TMenuItem'#9'MenuItem6'#7'Caption'#6#13'De' - +'bug windows'#0#9'TMenuItem'#9'MenuItem7'#7'Caption'#6#7'Watches'#7'OnClick' - +#7#13'ViewMenuClick'#0#0#9'TMenuItem'#9'MenuItem8'#7'Caption'#6#11'BreakPoin' - +'ts'#7'OnClick'#7#13'ViewMenuClick'#0#0#9'TMenuItem'#9'MenuItem9'#7'Caption' - +#6#15'Local Variables'#7'OnClick'#7#13'ViewMenuClick'#0#0#9'TMenuItem'#10'Me' - +'nuItem10'#7'Caption'#6#9'Registers'#7'OnClick'#7#13'ViewMenuClick'#0#0#9'TM' - +'enuItem'#10'MenuItem11'#7'Caption'#6#10'Call Stack'#7'OnClick'#7#13'ViewMen' - +'uClick'#0#0#9'TMenuItem'#10'MenuItem12'#7'Caption'#6#9'Assembler'#7'OnClick' - +#7#13'ViewMenuClick'#0#0#9'TMenuItem'#10'MenuItem13'#7'Caption'#6#12'Debug O' - +'utput'#7'OnClick'#7#13'ViewMenuClick'#0#0#0#0#9'TMenuItem'#10'MenuItem14'#7 - +'Caption'#6#8'&Windows'#0#9'TMenuItem'#12'mnWindowDump'#7'Caption'#6#5'&Dump' - +#7'OnClick'#7#17'mnWindowDumpClick'#0#0#9'TMenuItem'#10'mnMinimize'#7'Captio' - +'n'#6#12'Minimize all'#7'OnClick'#7#15'mnMinimizeClick'#0#0#9'TMenuItem'#9'm' - +'nRestore'#7'Caption'#6#11'Restore all'#7'OnClick'#7#14'mnRestoreClick'#0#0#0 - +#0#242#2#8#11'TOpenDialog'#11'OpenDialog1'#6'Filter'#6#25'*.pas|*.pas|All Fi' - +'les|*.*'#4'left'#3'5'#1#3'top'#2'0'#0#0#0 + +'Width'#3#144#1#4'Menu'#7#9'MainMenu1'#10'OnActivate'#7#12'FormActivate'#8'O' + +'nCreate'#7#10'FormCreate'#12'OnDeactivate'#7#14'FormDeactivate'#6'OnHide'#7 + +#8'FormHide'#8'OnResize'#7#10'FormResize'#13'ShowInTaskBar'#7#8'stAlways'#0 + +#241#6'TPanel'#7'pnlLeft'#6'Height'#3#0#1#0#0#241#9'TSplitter'#9'splitLeft'#6 + +'Height'#3#0#1#0#0#241#6'TPanel'#8'pnlRight'#4'Left'#3#144#1#6'Height'#3#0#1 + +#0#0#241#6'TPanel'#9'pnlBottom'#3'Top'#3#4#1#5'Width'#3#144#1#0#0#241#9'TSpl' + +'itter'#10'splitRight'#4'Left'#3#140#1#6'Height'#3#0#1#0#0#241#10'TStatusBar' + +#10'StatusBar1'#3'Top'#3#5#1#5'Width'#3#144#1#0#0#241#9'TSplitter'#11'splitB' + +'ottom'#3'Top'#3#0#1#5'Width'#3#144#1#0#0#242#2#7#9'TMainMenu'#9'MainMenu1'#4 + +'left'#3#240#0#3'top'#2'0'#0#9'TMenuItem'#6'mnFile'#7'Caption'#6#5'&File'#0#9 + +'TMenuItem'#6'mnOpen'#7'Caption'#6#5'&Open'#7'OnClick'#7#11'mnOpenClick'#0#0 + +#9'TMenuItem'#9'MenuItem1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#6'mnExit'#7'Ca' + +'ption'#6#5'E&xit'#7'OnClick'#7#11'mnExitClick'#0#0#0#9'TMenuItem'#6'mnView' + +#7'Caption'#6#5'&View'#0#9'TMenuItem'#9'MenuItem2'#7'Caption'#6#16'Object In' + +'spector'#7'OnClick'#7#13'ViewMenuClick'#0#0#9'TMenuItem'#9'MenuItem3'#7'Cap' + +'tion'#6#8'Messages'#7'OnClick'#7#13'ViewMenuClick'#0#0#9'TMenuItem'#9'MenuI' + +'tem4'#7'Caption'#6#13'Code Explorer'#7'OnClick'#7#13'ViewMenuClick'#0#0#9'T' + +'MenuItem'#9'MenuItem5'#7'Caption'#6#9'ToDo List'#7'OnClick'#7#13'ViewMenuCl' + +'ick'#0#0#9'TMenuItem'#9'MenuItem6'#7'Caption'#6#13'Debug windows'#0#9'TMenu' + +'Item'#9'MenuItem7'#7'Caption'#6#7'Watches'#7'OnClick'#7#13'ViewMenuClick'#0 + +#0#9'TMenuItem'#9'MenuItem8'#7'Caption'#6#11'BreakPoints'#7'OnClick'#7#13'Vi' + +'ewMenuClick'#0#0#9'TMenuItem'#9'MenuItem9'#7'Caption'#6#15'Local Variables' + +#7'OnClick'#7#13'ViewMenuClick'#0#0#9'TMenuItem'#10'MenuItem10'#7'Caption'#6 + +#9'Registers'#7'OnClick'#7#13'ViewMenuClick'#0#0#9'TMenuItem'#10'MenuItem11' + +#7'Caption'#6#10'Call Stack'#7'OnClick'#7#13'ViewMenuClick'#0#0#9'TMenuItem' + +#10'MenuItem12'#7'Caption'#6#9'Assembler'#7'OnClick'#7#13'ViewMenuClick'#0#0 + +#9'TMenuItem'#10'MenuItem13'#7'Caption'#6#12'Debug Output'#7'OnClick'#7#13'V' + +'iewMenuClick'#0#0#0#0#9'TMenuItem'#10'MenuItem14'#7'Caption'#6#8'&Windows'#0 + +#9'TMenuItem'#12'mnWindowDump'#7'Caption'#6#5'&Dump'#7'OnClick'#7#17'mnWindo' + +'wDumpClick'#0#0#9'TMenuItem'#10'mnMinimize'#7'Caption'#6#12'Minimize all'#7 + +'OnClick'#7#15'mnMinimizeClick'#0#0#9'TMenuItem'#9'mnRestore'#7'Caption'#6#11 + +'Restore all'#7'OnClick'#7#14'mnRestoreClick'#0#0#0#0#242#2#8#11'TOpenDialog' + +#11'OpenDialog1'#6'Filter'#6#25'*.pas|*.pas|All Files|*.*'#4'left'#3'5'#1#3 + +'top'#2'0'#0#0#0 ]); diff --git a/examples/dockmanager/elasticsite/feditorsite.pas b/examples/dockmanager/elasticsite/feditorsite.pas index 4f1f320e8e..26029b46ba 100644 --- a/examples/dockmanager/elasticsite/feditorsite.pas +++ b/examples/dockmanager/elasticsite/feditorsite.pas @@ -26,6 +26,7 @@ Known bugs: {$mode objfpc}{$H+} +{$DEFINE clientform} //clients are forms? {.$DEFINE stdfloat} //using standard floating host? interface @@ -60,7 +61,11 @@ type mnExit: TMenuItem; mnOpen: TMenuItem; mnFile: TMenuItem; + procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); + procedure FormDeactivate(Sender: TObject); + procedure FormHide(Sender: TObject); + procedure FormResize(Sender: TObject); procedure mnMinimizeClick(Sender: TObject); procedure mnRestoreClick(Sender: TObject); procedure mnWindowDumpClick(Sender: TObject); @@ -71,7 +76,7 @@ type FEdit: TEditBook; //to become a frame! CurEdit: TEditPage; public - function CreateDockable(const cap: string): TPanel; + function CreateDockable(const cap: string): TWinControl; function OpenFile(const FileName: string): TObject; end; @@ -82,6 +87,7 @@ implementation uses LCLProc, + fClientForm, fFloatingSite; { TEditorSite } @@ -100,15 +106,26 @@ begin FAutoExpand := True; end; -function TEditorSite.CreateDockable(const cap: string): TPanel; +function TEditorSite.CreateDockable(const cap: string): TWinControl; var Site: TFloatingSite; - Client: TPanel; +{$IFDEF clientform} + Client: TViewWindow; +{$ELSE} + Client: TWinControl; +{$ENDIF} begin +{$IFDEF clientform} + Client := TViewWindow.Create(Application); + Client.Label1.Caption := cap; + Client.Visible := True; + //Client.FloatingDockSiteClass := TFloatingSite; +{$ELSE} Client := TPanel.Create(self); Client.DragMode := dmAutomatic; Client.DragKind := dkDock; Client.Visible := True; +{$ENDIF} //name it Client.Caption := cap; try @@ -119,7 +136,7 @@ begin {$IFDEF stdfloat} Client.ManualDock(nil); {$ELSE} - Client.FloatingDockSiteClass := TFloatingSite; + //Client.FloatingDockSiteClass := TFloatingSite; {$IFDEF old} //ManualFloat doesn't work as expected :-( //Client.Align := alClient; //required for proper docking @@ -146,9 +163,40 @@ begin Close; end; -procedure TEditorSite.mnMinimizeClick(Sender: TObject); +procedure TEditorSite.FormActivate(Sender: TObject); begin - self.WindowState := wsMinimized; + //DebugLn('--- Activate'); +end; + +procedure TEditorSite.FormDeactivate(Sender: TObject); +begin + //DebugLn('--- Deactivate'); +end; + +procedure TEditorSite.FormHide(Sender: TObject); +begin + DebugLn('--- FormHide'); //not when minimized manually (win32) + //mnMinimizeClick(Sender); +end; + +procedure TEditorSite.FormResize(Sender: TObject); +begin + DebugLn('--- Resize'); +end; + +procedure TEditorSite.mnMinimizeClick(Sender: TObject); +var + i: integer; + f: TForm; +begin + for i := 0 to Screen.FormCount - 1 do begin + f := Screen.Forms[i]; + //if f = self then f.WindowState := wsMinimized else + if f.Visible and (f.WindowState = wsNormal) then begin + f.Hide; + f.WindowState := wsMinimized; + end; + end; end; procedure TEditorSite.mnRestoreClick(Sender: TObject); diff --git a/examples/dockmanager/package/ffloatingsite.lfm b/examples/dockmanager/package/ffloatingsite.lfm index 5241e6b163..e813d42ca2 100644 --- a/examples/dockmanager/package/ffloatingsite.lfm +++ b/examples/dockmanager/package/ffloatingsite.lfm @@ -1,8 +1,8 @@ object FloatingSite: TFloatingSite Left = 431 - Height = 300 + Height = 265 Top = 498 - Width = 400 + Width = 377 Caption = 'FloatingSite' DockSite = True OnDockDrop = FormDockDrop diff --git a/examples/dockmanager/package/ffloatingsite.lrs b/examples/dockmanager/package/ffloatingsite.lrs index 7540ef9a8c..911c9b0def 100644 --- a/examples/dockmanager/package/ffloatingsite.lrs +++ b/examples/dockmanager/package/ffloatingsite.lrs @@ -1,8 +1,8 @@ { 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','#1#3 - +'Top'#3#242#1#5'Width'#3#144#1#7'Caption'#6#12'FloatingSite'#8'DockSite'#9#10 + '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#10 +'OnDockDrop'#7#12'FormDockDrop'#10'OnDockOver'#7#12'FormDockOver'#8'OnUnDock' +#7#10'FormUnDock'#13'ShowInTaskBar'#7#7'stNever'#14'UseDockManager'#9#10'LCL' +'Version'#6#6'0.9.29'#7'Visible'#9#0#0 diff --git a/examples/dockmanager/package/ffloatingsite.pas b/examples/dockmanager/package/ffloatingsite.pas index 8902fe70b3..58721e1fc5 100644 --- a/examples/dockmanager/package/ffloatingsite.pas +++ b/examples/dockmanager/package/ffloatingsite.pas @@ -83,7 +83,7 @@ When a second control is dragged away, the entire site is moved. if DockClientCount <= 1 then begin if NewTarget = nil then begin Allow := False; //deny - //Allow := True; //move form? + //Allow := True; //move form - where??? end else Release; end else begin @@ -91,8 +91,8 @@ When a second control is dragged away, the entire site is moved. (* strange behaviour: client is undocked, but stays in the site. The site is moved to the drop location. *) - Allow := NewTarget <> nil; //simply disallow undock to floating state (for now) - //Allow := True; //bug!!! + //Allow := NewTarget <> nil; //simply disallow undock to floating state (for now) + Allow := True; //bug!!! //DragManager. - not helpful - where is the DockObject??? end; if Allow then begin diff --git a/examples/dockmanager/package/pen.ico b/examples/dockmanager/package/pen.ico new file mode 100644 index 0000000000..43b84f817a Binary files /dev/null and b/examples/dockmanager/package/pen.ico differ