mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-14 09:20:23 +02:00
99 lines
2.4 KiB
PHP
99 lines
2.4 KiB
PHP
{%MainUnit ../menu.pp}
|
|
{******************************************************************************
|
|
TPopupMenu
|
|
******************************************************************************
|
|
|
|
*****************************************************************************
|
|
This file is part of the Lazarus Component Library (LCL)
|
|
|
|
See the file COPYING.modifiedLGPL.txt, included in this distribution,
|
|
for details about the license.
|
|
*****************************************************************************
|
|
}
|
|
|
|
function TPopupMenu.GetHelpContext: THelpContext;
|
|
begin
|
|
Result := Items.HelpContext;
|
|
end;
|
|
|
|
procedure TPopupMenu.SetHelpContext(const AValue: THelpContext);
|
|
begin
|
|
Items.HelpContext := AValue;
|
|
end;
|
|
|
|
class procedure TPopupMenu.WSRegisterClass;
|
|
begin
|
|
inherited WSRegisterClass;
|
|
RegisterPopupMenu;
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
procedure TPopupMenu.DoPopup(Sender: TObject);
|
|
|
|
Creates the popup window and shows it.
|
|
------------------------------------------------------------------------------}
|
|
procedure TPopupMenu.DoPopup(Sender: TObject);
|
|
begin
|
|
if Assigned(FOnPopup) then FOnPopup(Sender);
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TPopupMenu.Create
|
|
Params: AOwner: the owner of the class
|
|
Returns: Nothing
|
|
|
|
Constructor for the class.
|
|
------------------------------------------------------------------------------}
|
|
constructor TPopupMenu.Create(AOwner : TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
FCompStyle := csPopupMenu;
|
|
FAutoPopup := True;
|
|
end;
|
|
|
|
destructor TPopupMenu.Destroy;
|
|
begin
|
|
DestroyHandle;
|
|
Close;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TPopupMenu.PopUp;
|
|
var
|
|
MousePos: TPoint;
|
|
begin
|
|
GetCursorPos(MousePos);
|
|
PopUp(MousePos.x, MousePos.y);
|
|
end;
|
|
|
|
procedure TPopupMenu.PopUp(X, Y: Integer);
|
|
begin
|
|
if ActivePopupMenu <> nil then ActivePopupMenu.Close;
|
|
FPopupPoint := Point(X, Y);
|
|
ReleaseCapture;
|
|
DoPopup(Self);
|
|
if Items.Count = 0 then exit;
|
|
ActivePopupMenu := Self;
|
|
Items.InitiateActions;
|
|
DestroyHandle;
|
|
CreateHandle;
|
|
if Assigned(OnMenuPopupHandler) then OnMenuPopupHandler(Self);
|
|
TWSPopupMenuClass(WidgetSetClass).Popup(Self, X, Y);
|
|
end;
|
|
|
|
procedure TPopupMenu.Close;
|
|
begin
|
|
if ActivePopupMenu = Self then
|
|
begin
|
|
DoClose;
|
|
ActivePopupMenu := nil;
|
|
end;
|
|
end;
|
|
|
|
procedure TPopupMenu.DoClose;
|
|
begin
|
|
if Assigned(OnClose) then OnClose(Self);
|
|
end;
|
|
|
|
|