Thema: Delphi TrayIcon ohne MainForm

Einzelnen Beitrag anzeigen

Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#1

TrayIcon ohne MainForm

  Alt 10. Mär 2008, 14:58
Hi,

ich habe ein programm ohne main form, möchte aber ein TrayIcon erstellen. Zum erstellen des Tray Icons gibt es ja genug tuts, nur was ich mich fraghe, wie reagiere ich auf klicks auf das TrayIcon? In allen tuts wied der mainform das hier hinzugefügt:


Delphi-Quellcode:
uses
  ShellAPI;

const
  WM_TASKABAREVENT = WM_USER+1; //Taskbar message
[...]

type
  TMainForm = class(TForm)
[...]
private
    { Private-Deklarationen }
    procedure TaskbarEvent(var Msg: TMessage);
      Message WM_TASKABAREVENT;
[...]

{Message-Prozedur für das TrayIcon}
procedure TMainForm.TaskbarEvent(var Msg: TMessage);
var Point : TPoint;
begin

  { Die WM_TaskbarEvent-Message "Msg" gibt in Msg.LParam
    das genaue Ereignis an. Msg.LParam kann folgende Werte für
    Mausereignisse annehmen:

    WM_MouseMove
    WM_LButtonDown
    WM_LButtonUp
    WM_LButtonDblClk
    WM_RButtonDown
    WM_RButtonUp
    WM_RButtonDblClk }


  { Eventhandler-Beispiele von Robert Fischer: }
  case Msg.LParam of
    WM_LBUTTONDBLCLK:
      begin
        //Mach etwas nach einem Doppelklick...
      end;
    WM_LBUTTONUP:
      begin
        //Mach etwas nach einem Linksklick...
      end;
    WM_RBUTTONUP:
      begin
        // Rechtsklick
        // Diese Zeile ist wichtig, damit das PopupMenu korrekt
        // wieder geschlossen wird:
        SetForegroundWindow(Handle);
        // PopupMenu anzeigen:
        GetCursorPos(Point);
        PopupMenu1.Popup(Point.x, Point.y);
        //oder ohne Variable Point:
        //PopupMenu1.Popup(Mouse.CursorPos.x, Mouse.CursorPos.y);
      end;
  end;
end;
Wie reagiere ich auf klicks ohne mainform? wo sage ich ihm welche procedure er ausführen soll sobald es geklickt wird?

Danke für alle antworten.

MfG Hybrid666
  Mit Zitat antworten Zitat