mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 09:59:20 +02:00
dockmanager example: DockBook has Owner=Application.
BorderStyle=bsNone as a workaround for otherwise visible form caption. git-svn-id: trunk@24901 -
This commit is contained in:
parent
6f5d42e5f5
commit
f4b09c31ba
@ -381,13 +381,17 @@ const
|
|||||||
function NoteBookCreate(AOwner: TWinControl): TCustomDockSite;
|
function NoteBookCreate(AOwner: TWinControl): TCustomDockSite;
|
||||||
begin
|
begin
|
||||||
(* Create default dockbook type.
|
(* Create default dockbook type.
|
||||||
|
Dockable notebooks must not have an specific owner.
|
||||||
*)
|
*)
|
||||||
{
|
{
|
||||||
if assigned(AppDockBookClass) then
|
if assigned(AppDockBookClass) then
|
||||||
Result := AppDockBookClass.Create(AOwner)
|
Result := AppDockBookClass.Create(AOwner)
|
||||||
else
|
else
|
||||||
}
|
}
|
||||||
Result := TEasyDockBook.Create(AOwner);
|
//Result := TEasyDockBook.Create(AOwner);
|
||||||
|
Result := TEasyDockBook.Create(Application);
|
||||||
|
{ TODO : form style should become bsNone when docked - workaround here }
|
||||||
|
Result.BorderStyle := bsNone;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure NoteBookAdd(ABook: TCustomDockSite; AItem: TControl);
|
procedure NoteBookAdd(ABook: TCustomDockSite; AItem: TControl);
|
||||||
@ -676,7 +680,7 @@ begin
|
|||||||
{$IFDEF replace}
|
{$IFDEF replace}
|
||||||
NoteBook.ReplaceDockedControl(DropZone.ChildControl, NoteBook, nil, alCustom);
|
NoteBook.ReplaceDockedControl(DropZone.ChildControl, NoteBook, nil, alCustom);
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
NoteBook.ManualDock(nil, nil); //float it - purpose???
|
//NoteBook.ManualDock(nil, nil); //float it - purpose???
|
||||||
//hack: manually dock the notebook
|
//hack: manually dock the notebook
|
||||||
FReplacingControl := NoteBook; //ignore insert (see above)
|
FReplacingControl := NoteBook; //ignore insert (see above)
|
||||||
NoteBook.ManualDock(FDockSite); //move into DockClients[]
|
NoteBook.ManualDock(FDockSite); //move into DockClients[]
|
||||||
|
@ -12,9 +12,9 @@ inherited EasyDockBook: TEasyDockBook
|
|||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDockDrop = FormDockDrop
|
OnDockDrop = FormDockDrop
|
||||||
OnDockOver = FormDockOver
|
OnDockOver = FormDockOver
|
||||||
|
OnEndDock = FormEndDock
|
||||||
OnGetSiteInfo = FormGetSiteInfo
|
OnGetSiteInfo = FormGetSiteInfo
|
||||||
OnUnDock = FormUnDock
|
OnUnDock = FormUnDock
|
||||||
Visible = True
|
|
||||||
object pnlDock: TPanel[0]
|
object pnlDock: TPanel[0]
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 300
|
Height = 300
|
||||||
|
@ -5,8 +5,8 @@ LazarusResources.Add('TEasyDockBook','FORMDATA',[
|
|||||||
+'Top'#3#146#0#5'Width'#3#144#1#7'Caption'#6#12'EasyDockBook'#12'ClientHeight'
|
+'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'
|
+#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'
|
+'ose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#10'OnDockDrop'#7#12'FormDo'
|
||||||
+'ckDrop'#10'OnDockOver'#7#12'FormDockOver'#13'OnGetSiteInfo'#7#15'FormGetSit'
|
+'ckDrop'#10'OnDockOver'#7#12'FormDockOver'#9'OnEndDock'#7#11'FormEndDock'#13
|
||||||
+'eInfo'#8'OnUnDock'#7#10'FormUnDock'#7'Visible'#9#0#242#2#0#6'TPanel'#7'pnlD'
|
+'OnGetSiteInfo'#7#15'FormGetSiteInfo'#8'OnUnDock'#7#10'FormUnDock'#0#242#2#0
|
||||||
+'ock'#4'Left'#2#0#6'Height'#3','#1#3'Top'#2#0#5'Width'#3#144#1#5'Align'#7#8
|
+#6'TPanel'#7'pnlDock'#4'Left'#2#0#6'Height'#3','#1#3'Top'#2#0#5'Width'#3#144
|
||||||
+'alClient'#8'TabOrder'#2#0#14'UseDockManager'#8#0#0#0
|
+#1#5'Align'#7#8'alClient'#8'TabOrder'#2#0#14'UseDockManager'#8#0#0#0
|
||||||
]);
|
]);
|
||||||
|
@ -54,6 +54,7 @@ HostDockSite.UpdateDockCaption (provide composed dock caption)
|
|||||||
|
|
||||||
{.$DEFINE undockFix}
|
{.$DEFINE undockFix}
|
||||||
{$DEFINE closeFix}
|
{$DEFINE closeFix}
|
||||||
|
{$DEFINE autoWrap} //request FloatingDockSiteClass
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
@ -88,6 +89,7 @@ type
|
|||||||
X, Y: Integer);
|
X, Y: Integer);
|
||||||
procedure FormDockOver(Sender: TObject; Source: TDragDockObject;
|
procedure FormDockOver(Sender: TObject; Source: TDragDockObject;
|
||||||
X, Y: Integer; State: TDragState; var Accept: Boolean);
|
X, Y: Integer; State: TDragState; var Accept: Boolean);
|
||||||
|
procedure FormEndDock(Sender, Target: TObject; X, Y: Integer);
|
||||||
procedure FormGetSiteInfo(Sender: TObject; DockClient: TControl;
|
procedure FormGetSiteInfo(Sender: TObject; DockClient: TControl;
|
||||||
var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
|
var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
|
||||||
procedure FormUnDock(Sender: TObject; Client: TControl;
|
procedure FormUnDock(Sender: TObject; Client: TControl;
|
||||||
@ -97,6 +99,7 @@ type
|
|||||||
Tabs: TTabs;
|
Tabs: TTabs;
|
||||||
CurTab: TTabButton;
|
CurTab: TTabButton;
|
||||||
protected
|
protected
|
||||||
|
function GetFloatingDockSiteClass: TWinControlClass; override;
|
||||||
function GetDefaultDockCaption: string; override;
|
function GetDefaultDockCaption: string; override;
|
||||||
function GetControlTab(AControl: TControl): TTabButton;
|
function GetControlTab(AControl: TControl): TTabButton;
|
||||||
procedure AfterUndock(tabidx: integer); virtual;
|
procedure AfterUndock(tabidx: integer); virtual;
|
||||||
@ -166,12 +169,16 @@ begin
|
|||||||
for i := DockClientCount - 1 downto 0 do begin
|
for i := DockClientCount - 1 downto 0 do begin
|
||||||
ctl := DockClients[i];
|
ctl := DockClients[i];
|
||||||
if not (csDestroying in ctl.ComponentState) then begin
|
if not (csDestroying in ctl.ComponentState) then begin
|
||||||
|
{$IFDEF old}
|
||||||
ctl.Visible := True; //make hidden notebook pages visible
|
ctl.Visible := True; //make hidden notebook pages visible
|
||||||
if ctl is TCustomForm then
|
if ctl is TCustomForm then
|
||||||
if frm.CloseQuery then
|
if frm.CloseQuery then
|
||||||
frm.Close
|
frm.Close
|
||||||
else
|
else
|
||||||
ctl.Visible := True; //make hidden notebook pages visible
|
ctl.Visible := True; //make hidden notebook pages visible
|
||||||
|
{$ELSE}
|
||||||
|
ctl.Visible := False; //hide notebook page
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
@ -230,6 +237,12 @@ begin
|
|||||||
Source.DockRect := ScreenRect(pnlDock);
|
Source.DockRect := ScreenRect(pnlDock);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TEasyDockBook.FormEndDock(Sender, Target: TObject; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
(* wrap into an FloatHost
|
||||||
|
*)
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TEasyDockBook.FormGetSiteInfo(Sender: TObject; DockClient: TControl;
|
procedure TEasyDockBook.FormGetSiteInfo(Sender: TObject; DockClient: TControl;
|
||||||
var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
|
var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
|
||||||
begin
|
begin
|
||||||
@ -363,6 +376,17 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TEasyDockBook.GetFloatingDockSiteClass: TWinControlClass;
|
||||||
|
begin
|
||||||
|
(* Try: request a floating site
|
||||||
|
*)
|
||||||
|
{$IFDEF autoWrap}
|
||||||
|
Result:= TFloatingSite;
|
||||||
|
{$ELSE}
|
||||||
|
Result := inherited GetFloatingDockSiteClass;
|
||||||
|
{$ENDIF}
|
||||||
|
end;
|
||||||
|
|
||||||
{$IFDEF new}
|
{$IFDEF new}
|
||||||
procedure TEasyDockBook.LoadFromStream(strm: TStream);
|
procedure TEasyDockBook.LoadFromStream(strm: TStream);
|
||||||
begin
|
begin
|
||||||
|
@ -25,6 +25,7 @@ Default floating sites are owned by Application,
|
|||||||
|
|
||||||
{$DEFINE ownPanels} //elastic panels owned by DockMaster?
|
{$DEFINE ownPanels} //elastic panels owned by DockMaster?
|
||||||
{.$DEFINE appDockMgr} //using special AppDockManager?
|
{.$DEFINE appDockMgr} //using special AppDockManager?
|
||||||
|
{.$DEFINE NeedHost} //request float host?
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
@ -251,8 +252,12 @@ begin
|
|||||||
Res.DragMode := dmAutomatic;
|
Res.DragMode := dmAutomatic;
|
||||||
//wrap into floating site, if requested (not on restore Layout)
|
//wrap into floating site, if requested (not on restore Layout)
|
||||||
if fWrap then begin
|
if fWrap then begin
|
||||||
|
{$IFDEF NeedHost}
|
||||||
|
Res.FloatingDockSiteClass := TFloatingSite;
|
||||||
|
{$ELSE}
|
||||||
//if not ForIDE then //problems with the IDE?
|
//if not ForIDE then //problems with the IDE?
|
||||||
Res.OnEndDock := @FormEndDock; //float into default host site
|
Res.OnEndDock := @FormEndDock; //float into default host site
|
||||||
|
{$ENDIF}
|
||||||
AForm.DisableAlign;
|
AForm.DisableAlign;
|
||||||
Site := WrapDockable(AForm);
|
Site := WrapDockable(AForm);
|
||||||
AForm.EnableAlign;
|
AForm.EnableAlign;
|
||||||
|
Loading…
Reference in New Issue
Block a user