Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Feststellen ob Kontextmenü offen ist

  Alt 26. Jan 2006, 20:03
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.
I come from outer space to save the human race
  Mit Zitat antworten Zitat