AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TPopupMenu.OnClose?

Ein Thema von Shaman · begonnen am 26. Okt 2004 · letzter Beitrag vom 28. Okt 2004
Antwort Antwort
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#1

TPopupMenu.OnClose?

  Alt 26. Okt 2004, 17:17
Hallo zusammen

Ich vermisse beim PopupMenu das Ereignis, wenn es geschlossen wird - egal wie, auch durch Klick irgendwo ausserhalb. Wie bekomme ich das mit?

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: TPopupMenu.OnClose?

  Alt 27. Okt 2004, 21:24
Schwupps
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#3

Re: TPopupMenu.OnClose?

  Alt 27. Okt 2004, 22:22
Zitat von Shaman:
Ich vermisse beim PopupMenu das Ereignis, wenn es geschlossen wird - egal wie, auch durch Klick irgendwo ausserhalb. Wie bekomme ich das mit?
Windows sendet dazu die Nachricht WM_EXITMENULOOP. Bei TMainMenu kannst du die ohne weiters abfangen, weil dort die Nachricht an
die Form geschickt wird. Bei TPopupMenu's musst du das Fensterhandle von TPopupList subclassen. Das kannst du zum Beispiel so machen...

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  ...
  private
    { Private-Deklarationen }
    OldPopupListWndProc: TFNWndProc;
    NewPopupListWndProc: TFNWndProc;
    procedure PopupListWndProc(var Message: TMessage);
  ...
  end;
Delphi-Quellcode:
{--------------------------------------------------------------------------------------------------}

procedure TForm1.FormCreate(Sender: TObject);
begin
  NewPopupListWndProc := MakeObjectInstance(PopupListWndProc);
  OldPopupListWndProc := TFNWndProc(GetWindowLong(PopupList.Window, GWL_WNDPROC));
  SetWindowLong(PopupList.Window, GWL_WNDPROC, Longint(NewPopupListWndProc));
end;

{--------------------------------------------------------------------------------------------------}

procedure TForm1.FormDestroy(Sender: TObject);
begin
  SetWindowLong(PopupList.Window, GWL_WNDPROC, Longint(OldPopupListWndProc));
end;

{--------------------------------------------------------------------------------------------------}

procedure TForm1.PopupListWndProc(var Message: TMessage);
begin
  with Message do
  begin
    case Msg of
      WM_ENTERMENULOOP:; // PopupMenu wird geöffnet
      WM_EXITMENULOOP:; // PopupMenu wird geschlossen
    end;
    Result := DefWindowProc(PopupList.Window, Msg, WParam, LParam);
  end;
end;

{--------------------------------------------------------------------------------------------------}
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: TPopupMenu.OnClose?

  Alt 28. Okt 2004, 12:04
Vielen Dank!

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz