Egy System Tray alkalmazás elkészítése alapvetően három fő lépésre bontható le:
a) A program ikonjának hozzáadása a SysTray-hez.
b) Menü (ill. események) hozzárendelése az ikonhoz.
c) A program FőFormjának elrejtése. (ha szükséges)
A program ikonjának hozzáadása a System Tray-hez
1. A feladat megoldása a Shell_NotifyIcon(dwMessage, lpData) Windows API függvény használatával
történik. A függvény első paramétere egy üzenet, amely meghatározza, hogy mit teszünk az ikonnal, a
második pedig egy az ikon adatstruktúrájára vonatkozó mutató (pointer). Mivel ez az adatstruktúra a
ShellAPI unitban van deklarálva (TNotifyIconData), ezért azt bele kell foglalni a uses klauzulába.

2. Ezután a Form deklarációjának private részében létre kell hozni egy TNotifyIconData típusú
változót az alábbi módon:

private
{ Private declarations }
TrayIcon: TNotifyIconData;

3. Majd a Form On Create eseményében rendeljük hozzá a megfelelő értékeket ehhez a változóhoz és
hívjuk meg a Shell_NotifyIcon API függvényt.

procedure TForm1.FormCreate(Sender: TObject);
begin
with TrayIcon do
begin
cbSize := SizeOf(TrayIcon);
Wnd := Handle; {A FőForm Handle-je }
uId := 100;
uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE;
uCallBackMessage := WM_USER + 1;{A Formnak küldött üzenet azonosítója}
hIcon := Application.Icon.Handle; {A megjelenítendő ikon Handle-je}
szTip := 'Az ikonhoz tartozó tipp...'; {Az ikonhoz tartozó tipp}
end;
Shell_NotifyIcon(NIM_ADD, @TrayIcon); {A függvény meghívása}
end;

A megadott értékek a későbbiekben a NIM_MODIFY üzenettel változtathatók meg. Egyszerűen rendeljük
hozzá az új értékeket a változóhoz és hívjuk meg a függvényt. Például így:
StrPCopy(TrayIcon.szTip, Application.Title);
Shell_NotifyIcon(NIM_MODIFY, @TrayIcon);

FONTOS! Az alkalmazás bezárásakor ne feledjük el a NIM_DELETE üzenettel eltávolítani az ikont a
System Tray-ből.
Shell_NotifyIcon(NIM_DELETE, @TrayIcon);