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