// 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; 


 

Zugriffe seit 6.9.2001 auf Delphi-Ecke