OnDock (Delphi)
Description
The following example is taken from the docking demo. It shows how to set permissions to dock dockable objects onto a docking site.
Code
procedure TMainForm.LeftDockPanelDockDrop(Sender: TObject;
Source: TDragDockObject; X, Y: Integer);
begin
//OnDockDrop gets called AFTER the client has actually docked,
//so you check for DockClientCount = 1 before making the dock panel visible.
if (Sender as TPanel).DockClientCount = 1 then
ShowDockPanel(Sender as TPanel, True, nil);
(Sender as TPanel).DockManager.ResetBounds(True);
//Make DockManager repaint its clients.
end;
procedure TMainForm.LeftDockPanelDockOver(Sender: TObject;
Source: TDragDockObject; X, Y: Integer; State: TDragState;
var Accept: Boolean);
var
ARect: TRect;
begin
Accept := Source.Control is TDockableForm;
if Accept then
begin
//Modify the DockRect to preview dock area.
ARect.TopLeft := LeftDockPanel.ClientToScreen(Point(0, 0));
ARect.BottomRight := LeftDockPanel.ClientToScreen(
Point(Self.ClientWidth div 3, LeftDockPanel.Height));
Source.DockRect := ARect;
end;
end;
procedure TMainForm.LeftDockPanelUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
begin
//OnUnDock gets called BEFORE the client is undocked, in order to optionally
//disallow the undock. DockClientCount is never 0 when called from this event.
if (Sender as TPanel).DockClientCount = 1 then
ShowDockPanel(Sender as TPanel, False, nil);
end;
procedure TMainForm.LeftDockPanelGetSiteInfo(Sender: TObject;
DockClient: TControl; var InfluenceRect: TRect; MousePos: TPoint;
var CanDock: Boolean);
begin
//If CanDock is True, the panel will not automatically draw the preview rect.
CanDock := DockClient is TDockableForm;
end;
Uses
- Vcl.Controls.TWinControl.OnUnDock ( fr | de | ja )
- Vcl.Controls.TWinControl.OnDockDrop ( fr | de | ja )
- Vcl.Controls.TWinControl.OnDockOver ( fr | de | ja )
- Vcl.Controls.TWinControl.OnGetSiteInfo ( fr | de | ja )
- Vcl.Controls.TWinControl.DockManager ( fr | de | ja )
- Vcl.Controls.IDockManager.ResetBounds ( fr | de | ja )
- Vcl.Controls.TControl.ClientToScreen ( fr | de | ja )
- Vcl.Controls.TDragDockObject.DockRect ( fr | de | ja )