Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi 2 Menüs bei Rechtsklick auf TrayIcon (https://www.delphipraxis.net/88103-2-menues-bei-rechtsklick-auf-trayicon.html)

Mazel 10. Mär 2007 09:26


2 Menüs bei Rechtsklick auf TrayIcon
 
Liste der Anhänge anzeigen (Anzahl: 2)
Guten Morgen,

ich habe bei mir mit meinem TrayIcon ein, nicht gerade großes aber dennoch nicht schönes, Problem. Ich lege mein Programm in der TNA mit einem Icon ab, mein Programm hat ein Popup-Menu welches bei einem Rechtsklick erscheint. Nun ist es aber so, dass, obwohl ich ein Rechtsklick auf die Mitte des Icons setzte, nicht nur mein Popup-Menu erscheint, sondern auch das was sonst dort erscheinen soll, wenn man kein Rechtsklick auf das Icon setzt, sondern daneben.

Im Anhang habe ich ein Bild (A) zur Veranschaulichung.

Man könnte denken, dass mein Menu im Vordergrund ist, ist es aber nicht. Fahre ich mit der Maus drüber, so "verschmelzen" beide miteinander. Bild (B).

Ich nutzte zwar eine Komponente (CoolTrayIcon), aber ich habe es auch mit dem Code aus der Code-Lib versucht, jedoch mit dem selben Ergebnis.

Dieser Effekt kommt nicht immer aber wenn er kommt ist ein 2. Effekt zu sehen und zwar verschwindet das Menu nicht mehr, wenn man wo anders klickt, mann muss erst auf "Desktop anzeigen" klicken.


Hat jemand eine Lösung oder den selben Effekt gehabt und nun wegbekommen?

Gruß
Mazel

matashen 10. Mär 2007 09:57

Re: 2 Menüs bei Rechtsklick auf TrayIcon
 
Poste mal ein bischen Code um zu sehen wie du dein Trayicon ablegst, vieleicht liegt da der Fehler. Ohne Code läßt sich das schwer sagen.

Luckie 10. Mär 2007 09:57

Re: 2 Menüs bei Rechtsklick auf TrayIcon
 
Nutze zum Anzeigen des Popupmnüs das Loslassen der Maustaste und nicht das Drücken.

Mazel 10. Mär 2007 12:23

Re: 2 Menüs bei Rechtsklick auf TrayIcon
 
Ok erstmal hier der schon abgeänderte Code:
Delphi-Quellcode:
{--[WndProc]-------------------------------------------------------------------}

procedure TMain.WndProc(var Msg: TMessage);
var
 Point: TPoint;

begin
 If Msg.Msg = WM_USER + 20 then
  begin
   case Msg.LParam of
    WM_RBUTTONUP: // vorher WM_RBUTTONDOWN
     begin
      SetForegroundWindow(Handle);
      GetCursorPos(Point);
      Popup.PopUp(Point.X, Point.Y);
     end;
   end;
  end;
 inherited;
end;
@Luckie: Es scheint zu funktionieren, nach mehrfachen Tests ist der Effekt nicht wieder aufgetreten. :thumb:

Wie bist du auf die Idee gekommen das Popup beim Loslassen anzuzeigen? Welcher Grund steckt dahinter?

Mfg
Mazel

Muetze1 10. Mär 2007 13:39

Re: 2 Menüs bei Rechtsklick auf TrayIcon
 
Grundlegend sollte die Click Aktion auf eine Maustaste erst erfolgen, wenn diese losgelassen wird. Der Benutzer kann sich beim verklicken oder sonstigen Aktionen immernoch überlegen, ob er die Aktion ausführen will. Beispiel: Ein Button (z.B. ShowMessage/MessageDlg): Drück den Button, fahr mit der Maus ausserhalb des Buttons und lasse los. Die Aktion wird nicht ausgelöst.

Mazel 10. Mär 2007 15:21

Re: 2 Menüs bei Rechtsklick auf TrayIcon
 
Stimmt, das ist ein einleuchtendes Beispiel.

Danke. :)


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