// Hiermit reagiert
man auf das Schließen eines TPopupMenu.
// Das PopupMenu muss händisch geöffnet sein und darf der
// Komponente nicht direkt zugewiesen werden
(siehe FormCreate).
// Getestet mit D2010 unter
Win7
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
// ...
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
procedure MyPop(X, Y: Integer);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.MyPop(X, Y: Integer);
var
Msg: TMsg;
begin
PopupMenu1.Popup(X, Y);
while PeekMessage(Msg, PopupMenu1.Handle, WM_MOUSEFIRST, WM_MOUSELAST,
PM_REMOVE) do ;
// mach etwas, z.B.
ShowMessage('Nu is zu');
end;
// Beispiel mit einem Memo
procedure TForm1.FormCreate(Sender: TObject);
begin
// --- Das darf nicht sein:
// Memo1.PopupMenu := PopupMenu1;
// --- auch nicht im ObjektInspektor !
end;
procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Punkt: TPoint;
begin
if Button = mbRight then
begin
GetCursorPos(Punkt);
MyPop(Punkt.X, Punkt.Y);
end;
end;
|