mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-07 14:32:38 +02:00
72 lines
1.5 KiB
ObjectPascal
72 lines
1.5 KiB
ObjectPascal
{ For license see anchordocking.pas
|
|
}
|
|
unit AnchorDockPanel;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
|
AnchorDockStorage;
|
|
|
|
type
|
|
TAnchorDockPanel = class(TPanel)
|
|
protected
|
|
procedure DragOver({%H-}Source: TObject; {%H-}X, {%H-}Y: Integer; {%H-}State: TDragState;
|
|
var Accept: Boolean); override;
|
|
public
|
|
procedure SaveLayout(LayoutTree: TAnchorDockLayoutTree;
|
|
LayoutNode: TAnchorDockLayoutTreeNode);
|
|
function GetOneControl: TControl;
|
|
published
|
|
end;
|
|
|
|
procedure Register;
|
|
|
|
implementation
|
|
|
|
uses AnchorDocking;
|
|
|
|
procedure TAnchorDockPanel.DragOver(Source: TObject; X, Y: Integer; State: TDragState;
|
|
var Accept: Boolean);
|
|
begin
|
|
Accept:=true;
|
|
end;
|
|
|
|
function TAnchorDockPanel.GetOneControl: TControl;
|
|
var
|
|
i: Integer;
|
|
begin
|
|
for i:=0 to ControlCount-1 do begin
|
|
Result:=Controls[i];
|
|
if Result.Owner<>Self then exit;
|
|
end;
|
|
Result:=nil;
|
|
end;
|
|
|
|
procedure TAnchorDockPanel.SaveLayout(
|
|
LayoutTree: TAnchorDockLayoutTree; LayoutNode: TAnchorDockLayoutTreeNode);
|
|
var
|
|
OneControl: TControl;
|
|
begin
|
|
OneControl:=GetOneControl;
|
|
if OneControl is TAnchorDockHostSite then
|
|
begin
|
|
|
|
LayoutNode.NodeType:=adltnControl;
|
|
LayoutNode.Assign(Self,false,false);
|
|
LayoutNode.Name:={OneControl.}Name;
|
|
|
|
TAnchorDockHostSite(OneControl).SaveLayout(LayoutTree,LayoutNode);
|
|
end;
|
|
end;
|
|
|
|
procedure Register;
|
|
begin
|
|
{$I anchordockpanel_icon.lrs}
|
|
RegisterComponents('Additional',[TAnchorDockPanel]);
|
|
end;
|
|
|
|
end.
|