![]() |
Problem mit TPopupMenu.OnClose
hallo zusammen,
ich habe eine form7 (hauptform = form1) die in jede titelleiste passt und sich mit diesem code immer im vordergrund hält:
Delphi-Quellcode:
(ist von swissdelphicenter.ch)
procedure TForm7.Timer1Timer(Sender: TObject);
begin with Self do SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); end; funktioniert wunderbar. bei einem klick auf einen button öffnet sich ein popupmenu, das ev. bis über 100 items haben kann, und dadurch auch die form7 teilweise verdeckt. nun gibts grosse grafikprobleme, da die form7 ja im vordergrund sein will... ich habe das so gelöst, dass beim öffnen vom popupmenu der timer1 abgeschaltet wird. dann muss er aber beim schliessen vom popupmenu wieder eingeschaltet werden. gesagt, getan! mit ![]() funktioniert wunderbar. nur funktionieren jetzt alle popupmenus vom ganzen programm nicht mehr, das heisst, die popupmenus werden geöffnet, aber bei einem klick auf ein item wird die procedute nicht ausgelöst. entferne ich diesen code wieder, funktioniert alles wieder... weiss jemand, was das problem ist? wie kann ich es lösen? vielen dank schon im voraus. |
Re: Problem mit TPopupMenu.OnClose
Hallo urbanbruhin,
mir scheint die Methode mit dem Timer sehr unguenstig gewaehlt. Versuch mal das Fenster modal zu oeffnen, oder wenn es gaaanz vorne (vor allen anderen Fenstern, auch jener anderer Anwendungen) sein soll, dann setzt du FormStyle auf fsStayOnTop. Ausserdem gibt es beim PopupMenu eine Regel: sobald auf ein Item geklickt wurde, schliesst sich das PopupMenu. Evtl. musst du bei allen Items im OnClick den Timer wieder anschalten ;) Greetz alcaeus |
Re: Problem mit TPopupMenu.OnClose
hallo alcaeus,
Zitat:
Zitat:
|
Re: Problem mit TPopupMenu.OnClose
mir ist gerade in den sinn gekommen, dass es noch besser wäre, wenn man abfragen könnte ob das popupmenu geöffnet ist oder nicht... hab nur noch nicht herausgefunden, wie das geht(falls es überhautp geht)...
weiss das niemand von euch? ich werd noch ein bisschen suchen... |
Re: Problem mit TPopupMenu.OnClose
hallo zusammen, problem gelöst!!
bei ![]() Es muss CallWindowProc sein und nicht DefWindowProc.
Delphi-Quellcode:
habe ich
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 := CallWindowProc(OldPopupListWndProc, PopupList.Window, Msg, WParam, LParam); // <<<<hier! end; end; ![]() vielleicht sollte man das bei ![]() greez urbanbruhin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz