mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-03 03:20:50 +02:00
anchordocking: sharing popupmenu
git-svn-id: trunk@26053 -
This commit is contained in:
parent
6669dc093d
commit
d0db9180ce
@ -346,6 +346,7 @@ type
|
|||||||
fUpdateCount: integer;
|
fUpdateCount: integer;
|
||||||
fDisabledAutosizing: TFPList; // list of TControl
|
fDisabledAutosizing: TFPList; // list of TControl
|
||||||
fTreeNameToDocker: TADNameToControl;
|
fTreeNameToDocker: TADNameToControl;
|
||||||
|
fPopupMenu: TPopupMenu;
|
||||||
function GetControls(Index: integer): TControl;
|
function GetControls(Index: integer): TControl;
|
||||||
procedure SetHeaderAlignLeft(const AValue: integer);
|
procedure SetHeaderAlignLeft(const AValue: integer);
|
||||||
procedure SetHeaderAlignTop(const AValue: integer);
|
procedure SetHeaderAlignTop(const AValue: integer);
|
||||||
@ -358,6 +359,8 @@ type
|
|||||||
procedure DisableControlAutoSizing(AControl: TControl);
|
procedure DisableControlAutoSizing(AControl: TControl);
|
||||||
procedure EnableAllAutoSizing;
|
procedure EnableAllAutoSizing;
|
||||||
procedure ClearLayoutProperties(AControl: TControl);
|
procedure ClearLayoutProperties(AControl: TControl);
|
||||||
|
procedure PopupMenuPopup(Sender: TObject);
|
||||||
|
procedure PopupMenuCloseUp(Sender: TObject);
|
||||||
protected
|
protected
|
||||||
procedure Notification(AComponent: TComponent; Operation: TOperation);
|
procedure Notification(AComponent: TComponent; Operation: TOperation);
|
||||||
override;
|
override;
|
||||||
@ -370,6 +373,7 @@ type
|
|||||||
function FindControl(const aName: string): TControl;
|
function FindControl(const aName: string): TControl;
|
||||||
function IsSite(AControl: TControl): boolean;
|
function IsSite(AControl: TControl): boolean;
|
||||||
function IsCustomSite(AControl: TControl): boolean;
|
function IsCustomSite(AControl: TControl): boolean;
|
||||||
|
function GetPopupMenu: TPopupMenu;
|
||||||
|
|
||||||
// show / make a control dockable
|
// show / make a control dockable
|
||||||
procedure MakeDockable(AControl: TControl; Show: boolean = true;
|
procedure MakeDockable(AControl: TControl; Show: boolean = true;
|
||||||
@ -969,6 +973,25 @@ begin
|
|||||||
AControl.AnchorSide[a].Control:=nil;
|
AControl.AnchorSide[a].Control:=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TAnchorDockMaster.PopupMenuPopup(Sender: TObject);
|
||||||
|
var
|
||||||
|
Popup: TPopupMenu;
|
||||||
|
begin
|
||||||
|
if not (Sender is TPopupMenu) then exit;
|
||||||
|
Popup:=TPopupMenu(Sender);
|
||||||
|
if Popup.PopupComponent is TAnchorDockHeader then
|
||||||
|
TAnchorDockHeader(Popup.PopupComponent).PopupMenuPopup(Sender);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAnchorDockMaster.PopupMenuCloseUp(Sender: TObject);
|
||||||
|
var
|
||||||
|
Popup: TPopupMenu;
|
||||||
|
begin
|
||||||
|
if not (Sender is TPopupMenu) then exit;
|
||||||
|
Popup:=TPopupMenu(Sender);
|
||||||
|
Popup.Items.Clear;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockMaster.Notification(AComponent: TComponent;
|
procedure TAnchorDockMaster.Notification(AComponent: TComponent;
|
||||||
Operation: TOperation);
|
Operation: TOperation);
|
||||||
var
|
var
|
||||||
@ -1010,6 +1033,7 @@ destructor TAnchorDockMaster.Destroy;
|
|||||||
var
|
var
|
||||||
AControl: TControl;
|
AControl: TControl;
|
||||||
begin
|
begin
|
||||||
|
FreeAndNil(fPopupMenu);
|
||||||
FreeAndNil(fTreeNameToDocker);
|
FreeAndNil(fTreeNameToDocker);
|
||||||
if FControls.Count>0 then begin
|
if FControls.Count>0 then begin
|
||||||
while ControlCount>0 do begin
|
while ControlCount>0 do begin
|
||||||
@ -1059,6 +1083,16 @@ begin
|
|||||||
and (TCustomForm(AControl).DockManager is TAnchorDockManager);
|
and (TCustomForm(AControl).DockManager is TAnchorDockManager);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TAnchorDockMaster.GetPopupMenu: TPopupMenu;
|
||||||
|
begin
|
||||||
|
if fPopupMenu=nil then begin
|
||||||
|
fPopupMenu:=TPopupMenu.Create(Self);
|
||||||
|
fPopupMenu.OnPopup:=@PopupMenuPopup;
|
||||||
|
fPopupMenu.OnClose:=@PopupMenuCloseUp;
|
||||||
|
end;
|
||||||
|
Result:=fPopupMenu;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockMaster.MakeDockable(AControl: TControl; Show: boolean;
|
procedure TAnchorDockMaster.MakeDockable(AControl: TControl; Show: boolean;
|
||||||
BringToFront: boolean; AddDockHeader: boolean);
|
BringToFront: boolean; AddDockHeader: boolean);
|
||||||
var
|
var
|
||||||
@ -3098,12 +3132,16 @@ begin
|
|||||||
|
|
||||||
// header position
|
// header position
|
||||||
HeaderPosItem:=AddPopupMenuItem('HeaderPosMenuItem', adrsHeaderPosition, nil);
|
HeaderPosItem:=AddPopupMenuItem('HeaderPosMenuItem', adrsHeaderPosition, nil);
|
||||||
AddPopupMenuItem('HeaderPosAutoMenuItem', adrsAutomatically,
|
Item:=AddPopupMenuItem('HeaderPosAutoMenuItem', adrsAutomatically,
|
||||||
@HeaderPositionItemClick, HeaderPosItem);
|
@HeaderPositionItemClick, HeaderPosItem);
|
||||||
for Side:=Low(TAnchorKind) to High(TAnchorKind) do
|
if Item<>nil then Item.Tag:=ord(adlhpAuto);
|
||||||
AddPopupMenuItem('HeaderPos'+AnchorNames[Side]+'MenuItem',
|
for Side:=Low(TAnchorKind) to High(TAnchorKind) do begin
|
||||||
|
Item:=AddPopupMenuItem('HeaderPos'+AnchorNames[Side]+'MenuItem',
|
||||||
SideCaptions[Side], @HeaderPositionItemClick,
|
SideCaptions[Side], @HeaderPositionItemClick,
|
||||||
HeaderPosItem);
|
HeaderPosItem);
|
||||||
|
if Item<>nil then Item.Tag:=ord(Side)+1;
|
||||||
|
end;
|
||||||
|
|
||||||
// enlarge
|
// enlarge
|
||||||
for Side:=Low(TAnchorKind) to High(TAnchorKind) do begin
|
for Side:=Low(TAnchorKind) to High(TAnchorKind) do begin
|
||||||
Item:=AddRemovePopupMenuItem(ParentSite.EnlargeSide(Side,true),
|
Item:=AddRemovePopupMenuItem(ParentSite.EnlargeSide(Side,true),
|
||||||
@ -3167,7 +3205,7 @@ var
|
|||||||
begin
|
begin
|
||||||
if not (Sender is TMenuItem) then exit;
|
if not (Sender is TMenuItem) then exit;
|
||||||
Item:=TMenuItem(Sender);
|
Item:=TMenuItem(Sender);
|
||||||
HeaderPosition:=TADLHeaderPosition(Item.Parent.IndexOf(Item));
|
HeaderPosition:=TADLHeaderPosition(Item.Tag);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockHeader.UndockButtonClick(Sender: TObject);
|
procedure TAnchorDockHeader.UndockButtonClick(Sender: TObject);
|
||||||
@ -3297,8 +3335,7 @@ begin
|
|||||||
Align:=alTop;
|
Align:=alTop;
|
||||||
AutoSize:=true;
|
AutoSize:=true;
|
||||||
ShowHint:=true;
|
ShowHint:=true;
|
||||||
PopupMenu:=TPopupMenu.Create(Self);
|
PopupMenu:=DockMaster.GetPopupMenu;
|
||||||
PopupMenu.OnPopup:=@PopupMenuPopup;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TAnchorDockCloseButton }
|
{ TAnchorDockCloseButton }
|
||||||
|
@ -54,8 +54,8 @@ type
|
|||||||
|
|
||||||
TADLHeaderPosition = (
|
TADLHeaderPosition = (
|
||||||
adlhpAuto,
|
adlhpAuto,
|
||||||
adlhpLeft,
|
|
||||||
adlhpTop,
|
adlhpTop,
|
||||||
|
adlhpLeft,
|
||||||
adlhpRight,
|
adlhpRight,
|
||||||
adlhpBottom
|
adlhpBottom
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user