Cum de a adăuga o pictogramă în tava

cum să adăugați o pictogramă în tava?

Programul de scriere. Este necesar să-l aibă în timpul agățat în tavă. Iar atunci când utilizatorul face clic pe mouse-ul pe pictograma din bara de sistem a programului ar trebui să se desfășoare.
Am descarcat în faptele internet pe acest subiect, dar nu este clar.
Am scris aici astfel de proceduri:

Procedura TrayAdd ();
var p: PNOTIFYICONDATA;
# XA0; # XA0; n: cuvânt;
începe
# XA0; n: = RegisterWindowMessage (# 0);
# XA0; p.cbSize: =. ; aici pentru a scrie nu este clar
# XA0; p.Wnd: = Form1.Handle;
# XA0; p.uID: = 1;
# XA0; p.uFlags: = NIF_MESSAGE sau NIF_ICON;
# XA0; p.uCallbackMessage: = n;
# XA0; p.hIcon: = Form1.Icon.Handle;
# XA0; Shell_NotifyIcon (NIM_ADD, p);
se încheie;

Procedura TrayDelete ();
var p: PNOTIFYICONDATA;
începe
# XA0; p.Wnd: = Form1.Handle;
# XA0; p.uID: = 1;
# XA0; Shell_NotifyIcon (NIM_DELETE, p);
se încheie;

// vvvvvvvvvvvv / Adăugați Modifică pictograma Ștergere / vvvvvvvvvvvvvvv
Funcția AddModDelIcon (WND: HWND; R, NiCo: integer; Icon: HICON; S: string): Boolean;
var n: TNotifyIconData;
începe
# XA0; n.cbSize: = sizeof (TNotifyIconData);
# XA0; n.Wnd: = WND;
# XA0; n.uID: = NiCo;
# XA0; n.uFlags: = NIF_MESSAGE sau NIF_ICON sau NIF_TIP;
# XA0; n.uCallbackMessage: = WM_USER;
# XA0; n.hIcon: = Icon;
# XA0; Lstrcpyn (n.szTip, PChar (S), sizeof (n.szTip));
# XA0; dacă R = 1, atunci Rezultat: = Shell_NotifyIcon (NIM_ADD, @ n);
# XA0; dacă R = 2 atunci Rezultat: = Shell_NotifyIcon (NIM_MODIFY, @ n);
# XA0; dacă R = 3 atunci Rezultat: = Shell_NotifyIcon (NIM_DELETE, @ n);
se încheie;

Ai răspunsuri dracului grave: o (((.
deja am încordat în anticiparea ceva care ar trebui sa aduca cu siguranta un zambet: o)).
Sam, cu toate acestea, în oameni VINAP (de exemplu, până la numai AP) ShellExecute „strecurat-lea: a |.

MAI MULT Form1.Visible: = false;

sau c ShowWindow (Form1.handle, SW_HIDE); Experiment ..
sau c ShowWindow (Application.handle, SW_HIDE);

forma și stilul este mai bine pentru a cere Toolbox.

Procedura TForm1.FormCreate (Expeditor: TObject);
începe
Application.ShowMainForm: = false;
se încheie;

Procedura TForm1.FormCreate (Expeditor: TObject);
începe
# XA0; Application.ShowMainForm: = false;
.
se încheie;

Rularea, forma nu este vizibilă atunci când începe programul.
Acum trebuie să facem acest lucru atunci când utilizatorul face clic pe pictograma
„Colaps“, care a folosit pentru a forma dispărut, iar când dă clic pe pictograma din
tavă folosită pentru a apărea din nou.

Am făcut acest lucru:
Procedura TForm1.FormCreate (Expeditor: TObject);
începe
# XA0; Application.OnMinimize: = Minimizare;
# XA0; Application.ShowMainForm: = false;
.
se încheie;

Procedura TForm1.Minimize (Expeditor: TObject);
începe
Form1.Visible: = false;
se încheie;

În principiu lucrări, dar există o buturugă mică.
Când porniți un program nu există nici un formular, faceți clic pe bara de sistem - apare forma,
Fac clic pe formularul „rolă“ dispare, faceți clic pe o tavă - există,
Clic pe „minimiza“ - OPA # XA0 și nu dispare sau redusă la minimum.
Am înțeles: a doua formă de pliere laminate deja (I f nu este
nepliată), astfel încât acest eveniment nu este doar obraatyvaetsya.
Ie Fac clic pe tava de sistem după ce este necesar nu numai # XA0; Form1.Visible: = true;
dar, de asemenea, sub forma în care este razvenut.
Deci, întrebarea este: cum pot implementa sub forma de software.

2Alaman [9]
Utilizare:
SendMessage (mânerul ferestrei, WM_SYSCOMMAND, SC_MINIMIZE, 0);
sau
ShowWindow (Mâner oknp, SW_HIDE);
---
SC_RESTORE
sau
SW_SHOW inversă efect.