Ahhoz, hogy az alkalmazást kezelni tudjuk magából a létrehozott ikonból az ikonhoz hozzá kell rendelni egy menüt (vagy egyéb eseményeket). 1. Először helyezz a Formra egy előugró menüt (TPopupMenu) és határozd meg az egyes menüpontok OnClick eseményéhez tartozó eljárásokat (pl. kilépés, a Form elrejtése ill. mutatása). 2. Ezt követően a WndProc eljárás felülírásával elérjük, hogy a SysTray-ben elhelyezkedő ikon "válaszoljon" az általunk meghatározott üzenetekre. private { Private declarations } procedure WndProc(var Msg: TMessage); override; . . . procedure TForm1.WndProc(var Msg: TMessage); var p : TPoint; begin case Msg.Msg of WM_USER + 1 : //az üzenet azonosítója case Msg.LParam of WM_RBUTTONDOWN : //kattintás az egér jobb gombjával begin GetCursorPos(p); //a kurzor pozíciója a kattintáskor PopupMenu1.Popup(p.x,p.y); //a menü kinyitása end; WM_LBUTTONDBLCLK : //bal dupla-kattintás begin Form1.Show; end; WM_LBUTTONDOWN : //kattintás az egér bal gombjával; end; end; inherited; //a le nem kezelt üzenetek elintéztetése end; Egyéb hasznos dolgok 1. Ha azt akarjuk elérni, hogy a FőForm a program indulásánál teljesen rejtve maradjon, akkor a Project fájlban (az Application.Run előtt) állítsuk be a következő alkalmazás-tulajdonságot: Application.ShowMainForm:= False; 2. Abban az esetben, ha nem szeretnénk a FőForm (rendszergombokkal történő) bezárásakor kilépni a programból, csupán a System Tray-be kívánjuk "ledobni", akkor a Form OnClose eseményét az alábbiak szerint kell meghatároznunk: procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:= caNone; Form1.Hide; end; A program bezárását ilyenkor a SysTray-ikon egy menüparancsával érdemes megoldani. Mégpedig a következő módon: procedure TForm1.meExitClick(Sender: TObject); begin Shell_NotifyIcon(NIM_DELETE, @TrayIcon); Application.ProcessMessages; Application.Terminate; end;