Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TTrayIcon: PopUp-Menü bei keiner Auswahl ausblenden (https://www.delphipraxis.net/193889-ttrayicon-popup-menue-bei-keiner-auswahl-ausblenden.html)

Helmi 19. Sep 2017 18:03

TTrayIcon: PopUp-Menü bei keiner Auswahl ausblenden
 
Hallo,

ich habe ein Programm mit einem TTrayIcon das ein PopUp-Menü aufruft.
Soweit funktioniert alles ganz normal.

Nur kenn ich das von anderen Programmen mit TrayIcons und PopUp-Menü, dass das PopUp-Menü verschwindet, wenn man es zwar öffnet, aber nichts auswählt und dann in die Taskleiste klickt.
(z. B. beim Outlook-Icon).

Wie kann ich das bei mir mit dem TTrayIcon realisieren?

Aviator 19. Sep 2017 18:48

AW: TTrayIcon: PopUp-Menü bei keiner Auswahl ausblenden
 
Das sollte eigentlich Standard sein. Zumindest bei mir funktioniert das ohne irgend ein Zutun. :shock:

Helmi 19. Sep 2017 18:55

AW: TTrayIcon: PopUp-Menü bei keiner Auswahl ausblenden
 
mmh - ich hätt doch zuerst das Ganze noch in einem Testprogramm testen sollen

Jedenfalls in nem Testprogramm funktioniert es.

In meinem eigentlichen Programm blende ich bei Programmstart die MainForm hiermit aus:
Delphi-Quellcode:
  Hide;
  WindowState := wsMinimized;
Und dieser Code ausgeführt und schon funktionierts nicht mehr.
Mein Programm hat eigentlich keine MainForm - nur das PopUp

EWeiss 19. Sep 2017 19:26

AW: TTrayIcon: PopUp-Menü bei keiner Auswahl ausblenden
 
Du möchtest das Popup Menu schließen? wenn du nichts auswählst.
Ich habe das so gelöst.
Bei dir könnte es aber das Problem geben das ein PopUpMenu kein Fensterhandle hat.
Delphi-Quellcode:
var
 gP.ProgManHandle := FindWindow('Progman', 'Program Manager');
........
    WM_TIMER:
      begin
        if wP = POPUP_TIMER then
        begin
          gP.FocusHandle := GetForegroundWindow;
          if gP.FocusHandle = gP.ProgManHandle then
          begin
            if SkinEngine.IsLButtonDown then
            begin
              KillTimer(WinHandle, POPUP_TIMER);
              ShowWindow(WinHandle, SW_HIDE);
              if Assigned(SkinPopUpMenu) then
              begin
                gP.DlgItem := 0;
                SkinPopUpMenu.DestroyWindow;
              end;
            end;
          end;
        end;
      end;
gruss

Helmi 19. Sep 2017 20:32

AW: TTrayIcon: PopUp-Menü bei keiner Auswahl ausblenden
 
Das Problem ist, dass ich meine MainForm ausblende (weder Fenster noch Taskbar-Button sichtbar) und somit der Fokus (wie ich es denke) nicht mehr an die MainForm übergehen kann.

Headbucket 20. Sep 2017 07:03

AW: TTrayIcon: PopUp-Menü bei keiner Auswahl ausblenden
 
Ich habe in einem aktuellen Projekt die selben Anforderungen wie du. Kein MainForm und ein TrayIcon mit PopUp-Menü. Bei mir funktioniert das Ausblenden bei keiner Auswahl jedoch.

Ich habe das Ausblenden der MainForm direkt beim Programmstart in der Projektdatei realisiert:

Delphi-Quellcode:
Application.ShowMainForm := false;


Vllt macht das den kleinen aber feinen Unterschied?

Du meintest ja, dass es in einem Testprojekt geht. Du kannst ja dein Testprojekt mal soweit ausbauen, dass du auch dort das MainForm ausblendest.

Grüße
Headbucket

Helmi 20. Sep 2017 17:27

AW: TTrayIcon: PopUp-Menü bei keiner Auswahl ausblenden
 
Hallo,

Delphi-Quellcode:
Application.ShowMainForm := false;
ergibt leider das gleiche Ergebnis.
Das PopUp-Menü bleibt da (nur die Taskleiste kommt nach vorne)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 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