Hallo,
evt möchte HeikoAdams auch reagieren, wenn das Popup geschlossen wurde ohne das ein Menüpunkt ausgewählt wurde.
Das habe ich mal folgendermaßen gelöst.
Delphi-Quellcode:
TForm1 = class(TForm)
Label1: TLabel;
PopupMenu1: TPopupMenu;
Test1: TMenuItem;
Memo1: TMemo;
PopupMenu2: TPopupMenu;
Memo2: TMenuItem;
ApplicationEvents1: TApplicationEvents;
procedure PopupMenu1Popup(Sender: TObject);
procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
procedure Test1Click(Sender: TObject);
private
{ Private-Deklarationen }
FActivePopup : TPopupmenu;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.PopupMenu1Popup(Sender: TObject);
// alle Popup's auf dem Formular brauchen denselben OnPopup Handler !
begin
FActivePopup:=TPopupmenu(Sender);
end;
procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
begin
If Assigned(FActivePopup) then
begin
// wird aufgerufen wenn das Popup verlassen wird.
// Auch wenn außerhalb des Popups mit der Maus geklickt wurde
// Hat den Effekt eines OnClose Events
Label1.Caption:=IntToStr(StrToInt(Label1.Caption)+1);
FActivePopup:=Nil;
end;
end;
procedure TForm1.Test1Click(Sender: TObject);
begin
Case FActivePopup.PopupComponent.Tag of
0 : Memo1.Lines.Add('Form Popup wurde benutzt');
1 : Memo1.Lines.Add('Memo Popup wurde benutzt');
end;
end;
end.