AGB  ·  Datenschutz  ·  Impressum  







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

TNA (SysTray) und TPopupMenu

Ein Thema von Schwedenbitter · begonnen am 20. Okt 2009 · letzter Beitrag vom 22. Okt 2009
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

TNA (SysTray) und TPopupMenu

  Alt 20. Okt 2009, 17:37
Hallo,

ich habe zwar TurboDelphi. Da ich mein Programm aber manchmal auch mit Delphi 6 compilieren muss, greife ich zum Ablegen meiner Anwendung im SysTray unter anderem auf diesen Code und nicht auf TTrayIcon zurück. Außerdem nutze ich auch ein TPopupMenu, um gleich aus dem SysTray heraus bestimmte Aufgaben gezielt durchzuführen.

Ich habe nun zwei Probleme:
  • Wenn ich den Code von Luckie unverändert ausführe, kommt bei einem Rechtsklick auf mein Tray-Icon manchmal auch das Kontextmenü der Taskleiste mit. Ich habe dann zwei sich überlappende Menüs und es ist im Grunde nicht steuerbar.
  • Wenn ich "meinen" älteren Code benutze, den ich auch von hier irgendwann einmal zusammengesucht hatte, dann kommt mein TPopupMenu zwar exklusiv. Es geht aber auch solange nicht mehr weg, bis ich auf einen der Menüeinträge geklickt habe. Das Menü bleibt bestehen, auch wenn ich irgendwo anders z.B. auf den Desktop klicke (Code ist angehängt).
Kann mir da bitte mal jemand einen Tip geben, wie ich entweder das Menü mit dem Code von Luckie exklusiv bekomme oder aber bei meinem Code das TPopupMenu wieder weg bekomme, falls der Benutzer sich z.B. nur verklickt hat.

Gruß, Alex
Angehängte Dateien
Dateityp: zip fertige_exes_120.zip (310,0 KB, 6x aufgerufen)
Dateityp: zip alter_code_551.zip (1,4 KB, 6x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#2

Re: TNA (SysTray) und TPopupMenu

  Alt 20. Okt 2009, 17:56
Zitat von Schwedenbitter:
[*]Wenn ich "meinen" älteren Code benutze, den ich auch von hier irgendwann einmal zusammengesucht hatte, dann kommt mein TPopupMenu zwar exklusiv. Es geht aber auch solange nicht mehr weg, bis ich auf einen der Menüeinträge geklickt habe. Das Menü bleibt bestehen, auch wenn ich irgendwo anders z.B. auf den Desktop klicke (Code ist angehängt).[/list]
Wenn du dir den verlinkten Quelltext mal durchguckst, wirst du bei WM_RBUTTONDOWN die Zeile
SetForegroundWindow(Handle); finden. Diese sorgt dafür, dass beim "wegklicken" das PopupMenü verschwindet. Ich habe mir jetzt deinen Quelltext noch nicht angesehen, könnte mir aber vorstellen, dass du den mal um diesen Aufruf an passender Stelle ergänzen solltest.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#3

Re: TNA (SysTray) und TPopupMenu

  Alt 22. Okt 2009, 10:41
Hab das gleiche Problem mit Luckys Quelltext. Immer wenn ich in der Taskleiste eine anderes Programm anwähle und dann einen Rechtsklick auf mein Systrayicon mache, dann kommen beide Kontextmenüs. Leider hab ich dafür auch noch keine Lösung...

Gruß

BBB
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#4

Re: TNA (SysTray) und TPopupMenu

  Alt 22. Okt 2009, 11:00
Nun, ich glaub ich hab die Lösung: das Kontextmenü der Systray (sowie auch alle andern) öffnen sich bei
WM_RBUTTONUP und nicht bei
WM_RBUTTONDOWN hab das bei mir gesetzt und siehe da es funzt.

Ich hab die procedure nun so implementiert:
Delphi-Quellcode:
Procedure TfrmKeyMakro.WndProc(Var Msg: TMessage);
Var
  Point : TPoint;
Begin
  If (Msg.Msg = WM_USER_CALLBACK) And (Msg.lParam = WM_RBUTTONUP) then
  Begin
    SetForegroundWindow(Handle);
    GetCursorPos(Point);
    pmSystray.Popup(Point.X, Point.Y);
  End ;

  Inherited;
End;
  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 07:08 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