| Autor |
Beitrag |
galagher
      
Beiträge: 2562
Erhaltene Danke: 46
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Fr 09.10.09 15:42
Hallo zusammen!
Habe hier: www.swissdelphicente...showcode.php?id=2262 folgenden Code gefunden, den ich gebrauchen kann:
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure HidePopupMenu; begin PostMessage(Handle, WM_LBUTTONDOWN, MK_LBUTTON, 0); PostMessage(Handle, WM_LBUTTONUP, MK_LBUTTON, 0); end; |
Ich habe ein Programm, dass im SysTray als Symbol liegt, man kann es per PopupMenu wieder aktivieren. Wenn man nun ausserhalb des PopupMenu's klickt, zB. auf die Taskleiste, möchte ich, dass sich das PopupMenu schliesst und weiters nichts ausgeführt wird.
Dazu habe ich folgende Fragen:
-> Wie stelle ich fest, ob sich die Maus innerhalb des PopupMenu's befindet? (Ist das dazu überhaupt nötig?)
-> Wo baue ich obigen Code ein, damit sich das PopupMenu schliesst?
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
galagher 
      
Beiträge: 2562
Erhaltene Danke: 46
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mo 12.10.09 21:15
Weiss denn dazu niemand etwas?
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Mo 12.10.09 23:15
Hallo,
hab auch einige selbst entwickelte Programme im Bereich SysTry, deren Popup schließt sich eigemtlich automatisch, wenn man daneben klickt. Wie realisierst Du das Popup-Menü in Deinem Programm?
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
galagher 
      
Beiträge: 2562
Erhaltene Danke: 46
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Di 13.10.09 17:40
Lannes hat folgendes geschrieben : | | Wie realisierst Du das Popup-Menü in Deinem Programm? |
Mit einer Komponente TDFTrayIcon. Macht eigentlich alles perfekt und man kann ihr ein PopupMenu zuweisen. Ich verstehe zwar, dass dieses dann sein eigenes Ding macht, aber nicht, dass es sich nicht wieder schliesst, wenn man "daneben" klickt.
TDFTrayIcon zeigt das PopupMenu in procedure TDFTrayIcon.DoRightClick; mit PopupMenu.Popup(Pos.X, Pos.Y); an.
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Di 13.10.09 19:47
Hallo,
Auszug aus der unit DFTrayIcon:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| if assigned(FPopupMenu) then begin PopupMenu.Popup(Pos.X, Pos.Y); end; |
Hast Du mal bei SetForeGroundWindow die Auskommentierung entfernt?
In meinem Code ist die Zeile aktiv.
Noch das aus DFTrayIcon:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TDFTrayIcon.WndProc(var msg: TMessage); case LParam of WM_RBUTTONUP: begin DoRightClick; end; |
Bei mir wird bei WM_RBUTTONDOWN das Popup aufgerufen.
Sind aber alles nur Vermutungen, habe es nicht getestet.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
galagher 
      
Beiträge: 2562
Erhaltene Danke: 46
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Di 13.10.09 20:18
Lannes hat folgendes geschrieben : | | Hast Du mal bei SetForeGroundWindow die Auskommentierung entfernt? |
Bei mir ist die Zeile auskommentiert - und was soll ich sagen? Ich habe sie aktiviert, und es klappt wie es sein soll!
Vielen Dank!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
galagher 
      
Beiträge: 2562
Erhaltene Danke: 46
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mi 14.10.09 18:19
Da fällt mir doch noch etwas ein:
Es tritt bei der merkwürdige Effekt auf, dass, wenn das Projekt in Delphi geladen ist und ich Delphi minimiere, dass dann kein Taskbar-Button von Delphi sichtbar ist!
Und es wird noch besser: Wenn ich auf "Datei/Alle schliessen" klicke, und dann Delphi minimiere, gibt's ebenfalls keinen Delphi-Taskbar-Button - obwohl das Projekt nicht mehr geladen ist!
Öffne ich Delphi hingegen mit einem anderen Projekt oder einfach ohne Projekt, tritt der Effekt nicht auf!
Ich habe zwar ShowWindow(GetWindow(Handle,GW_OWNER), SW_HIDE); in meinem Code, aber auch, wenn ich diese Zeile auskommentiere, ändert das nichts!
Ist ja im Grunde egal, denn wie gesagt, ansonsten verhält sich Delphi bzw. Windows ja normal, aber warum ist das so?
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
|