Как да добавите икона в тавата

как да добавите икона в тавата?

Писане програма. Необходимо е да го има по време на обесването в тавата. И когато потребителят кликне с мишката върху иконата в системния трей на програмата трябва да се развива.
Свалих в интернет факти по този въпрос, но там не е ясно.
Написах тук такива процедури:

процедура TrayAdd ();
Var р: PNOTIFYICONDATA;
# XA0; # XA0; п: дума;
започвам
# XA0 п: = RegisterWindowMessage (# 0);
# XA0; p.cbSize: =. ; тук, за да пиша, не е ясно
# XA0; p.Wnd: = Form1.Handle;
# XA0; p.uID: = 1;
# XA0; p.uFlags: = NIF_MESSAGE или NIF_ICON;
# XA0; p.uCallbackMessage: = N;
# XA0; p.hIcon: = Form1.Icon.Handle;
# XA0; Shell_NotifyIcon (NIM_ADD, п);
приключи;

процедура TrayDelete ();
Var р: PNOTIFYICONDATA;
започвам
# XA0; p.Wnd: = Form1.Handle;
# XA0; p.uID: = 1;
# XA0; Shell_NotifyIcon (NIM_DELETE, п);
приключи;

// vvvvvvvvvvvv / Добави Промени Изтрий Икона / vvvvvvvvvvvvvvv
функция AddModDelIcon (Вятърни: HWND; R, Нико: число; икона: HICON; S: низ): булева;
Var п: TNotifyIconData;
започвам
# XA0; n.cbSize: = SizeOf (TNotifyIconData);
# XA0; n.Wnd: = Вятърни;
# XA0; n.uID: = Нико;
# XA0; n.uFlags: = NIF_MESSAGE или NIF_ICON или NIF_TIP;
# XA0; n.uCallbackMessage: = WM_USER;
# XA0; n.hIcon: = Икона;
# XA0; Lstrcpyn (n.szTip, PChar (S), SizeOf (n.szTip));
# XA0; ако R = 1, тогава Резултат: = Shell_NotifyIcon (NIM_ADD, @ н);
# XA0; ако R = 2 след Резултат: = Shell_NotifyIcon (NIM_MODIFY, @ н);
# XA0; ако R = 3, тогава Резултат: = Shell_NotifyIcon (NIM_DELETE, @ н);
приключи;

Тъпа сериозни отговори: о (((.
Аз вече се напрегна в очакване на нещо, което определено трябва да донесе усмивка: о)).
Сам, обаче, в VINAP хора (т.е. докато само AP) ShellExecute "напрежение-то: а |.

ПОВЕЧЕ Form1.Visible: = фалшива;

или в ShowWindow (Form1.handle, SW_HIDE); Експериментирайте ..
или в ShowWindow (Application.handle, SW_HIDE);

форма и стил, е по-добре да попитам Toolbox.

процедура TForm1.FormCreate (Sender: TObject);
започвам
Application.ShowMainForm: = фалшива;
приключи;

процедура TForm1.FormCreate (Sender: TObject);
започвам
# XA0; Application.ShowMainForm: = фалшива;
.
приключи;

Лека форма не се вижда, когато програмата започва.
Сега ние трябва да направим така, когато потребителят кликне върху иконата
"Свиване", който използва, за да се образува изчезнали, а когато кликне върху иконата в
тава, която се използва, за да се появи отново.

Направих така:
процедура TForm1.FormCreate (Sender: TObject);
започвам
# XA0; Application.OnMinimize: = Минимизиране;
# XA0; Application.ShowMainForm: = фалшива;
.
приключи;

процедура TForm1.Minimize (Sender: TObject);
започвам
Form1.Visible: = фалшива;
приключи;

По принцип работи, но има една малка успявам да получа.
Когато стартирате програмата не е форма, аз кликнете върху системния трей - се появява на формуляра,
Аз кликнете върху "пълзи" форма изчезне, кликнете върху поднос - има,
Аз натиснете "минимизиране" - опа # XA0; и няма да изчезне или сведени до минимум.
Разбираме, че: вторият формата сгъване вече валцувани (I е не е
разгъната), така че това събитие не е само obraatyvaetsya.
Т.е. Аз кликнете върху системния трей, след това е необходимо не само # XA0; Form1.Visible: = вярно;
но също така и формата, в която е razvenut.
Така че въпросът е: как мога да разположи под формата на софтуер.

2Alaman [9]
Употреба:
SendMessage (дръжка на прозореца, WM_SYSCOMMAND, SC_MINIMIZE, 0);
или
ShowWindow (дръжка oknp, SW_HIDE);
---
SC_RESTORE
или
SW_SHOW обратен ефект.