Secretele pictogramei din bara de sistem

Deci, aceasta este a doua parte a micului meu "epic" dedicat pictogramei din tava de sistem.

Astăzi vom examina și vom învăța cum să rezolvăm următoarele probleme:
1. Cum adaug un meniu pop-up unei pictograme?






2. Cum să ascundeți forma principală a aplicației la pornire și să o arătați prin comanda meniului pop-up.

Programul a fost actualizat. Forma principală ar trebui să arate astfel:

Acum, să abordăm întrebările de la începutul acestui articol.

Apoi, să scriem codurile necesare în comenzile de evenimente ale butonului mouse-ului în fiecare dintre elementele de meniu:

Elementul "Despre program":
procedura TForm1.PAboutClick (expeditor: TObject);
începe
// Afișează forma principală în zona deschisă "Despre program"
AboutClick (Form1); // Realizăm procedura de apăsare a butonului "Despre program"
Form1.Show; // Și, este această linie pe care o afișăm
// forma principală a cererii.
Form1.Activate; // .. și activați-o :)
se încheie;

Elementul "Setări":
procedura TForm1.PSettingsClick (expeditor: TObject);
începe
// Descrierea este deasupra :)
Form1.Show;
Form1.Activate;
se încheie;

Elementul "Ieșire":
procedura TForm1.PExitClick (expeditor: TObject);
începe
Închide; // o ieșire obișnuită din program.
se încheie;

Și acum vom face cele mai importante și cele mai interesante: faceți meniul nostru "pop up" pe pictogramă în timp ce apăsați butonul din dreapta al mouse-ului, iar forma principală "apare" când faceți dublu clic pe butonul stâng al mouse-ului.

În codul sursă al programului, găsiți procedura IconCallBackMessage și actualizați-o astfel încât aceasta să arate astfel:

procedura TForm1.IconCallBackMessage (varianta Mess Messaging);
var Mouse: mouse-ul;
începe
caz Mess.lParam din
// Aici puteți gestiona toate evenimentele care apar pe pictograma :)
// Pe formularul principal am aranjat două etichete, în care,
// la apariția oricărui eveniment va fi scris ce sa întâmplat exact :)






// Dar acum, în a doua parte, în timpul unor evenimente se va întâmpla
// procese reale.
WM_LBUTTONDBLCLK. // Procesați un dublu clic pe butonul stâng al mouse-ului.
începe
PSettingsClick (Form1); // Rulați elementul de meniu "Setări".
se încheie;
WM_LBUTTONDOWN. TI_Event.Caption: = 'Faceți clic pe butonul stâng al mouse-ului';
WM_LBUTTONUP. TI_Event.Caption: = 'Apăsarea butonului stâng al mouse-ului';
WM_MBUTTONDBLCLK. TI_DC.Caption: = 'Faceți dublu clic pe butonul mijlociu al mouse-ului';
WM_MBUTTONDOWN. TI_Event.Caption: = 'Faceți clic pe butonul mijlociu al mouse-ului';
WM_MBUTTONUP. TI_Event.Caption: = 'Apăsarea butonului mijlociu al mouse-ului';
WM_MOUSEMOVE. TI_Event.Caption: = 'Deplasarea mouse-ului';
WM_MOUSEWHEEL. TI_Event.Caption: = 'Rotirea roții mouse-ului';
WM_RBUTTONDBLCLK. TI_DC.Caption: = 'Faceți dublu clic pe butonul din dreapta';
WM_RBUTTONDOWN. TI_Event.Caption: = 'Faceți clic pe butonul drept al mouse-ului';
WM_RBUTTONUP. // Procesați clic-dreapta.
începe
PopupMenu.Popup (Mouse.CursorPos.x, Mouse.CursorPos.y);
// facem meniul nostru să vină :)
se încheie;
se încheie;
se încheie;

Cu primul eveniment de a face dublu clic pe butonul stâng al mouse-ului, totul este clar - executăm procedura de preluare a apelantului din meniul "Setări".
Dar, cu click-dreapta, este probabil mai dificil? Ei bine, totul în ordine:
La începutul procedurii, declarăm un obiect Mouse de tip TMouse. Mai târziu, cu ajutorul acestuia, să cunoașteți coordonatele mouse-ului pe ecran.
Apoi scriem următoarea linie:
PopupMenu.Popup (Mouse.CursorPos.x, Mouse.CursorPos.y);
Înțelesul său este simplu. Metoda Popup este utilizată pentru a afișa meniul la un anumit punct de pe ecran. Aici este obiectul obișnuit al Mouse-ului. cu ajutorul căror proprietăți învățăm coordonatele mouse-ului pe ecran, în timp ce apăsăm butonul din dreapta al mouse-ului.
Dar, în meniul "pop-up" există o nuanță mai clară. Dacă acum totul este lăsat așa cum este, acesta se va "atârna" atunci când se va pierde focalizarea - adică pur și simplu nu vor dispărea. Pentru a remedia această problemă în procesul de tratare a evenimentului OnPopup din meniul nostru, introduceți următoarele:
SetForegroundWindow (Form1.Handle);
Prin aceasta indicăm faptul că forma principală a aplicației noastre este activă (chiar dacă este invizibilă). Și, atunci când comutați între aplicații, își pierde activitatea și, prin urmare, meniul pop-up dispare din vizualizare. este un copil al formei.

Aceasta este, de fapt, toate :). ah, da. complet uitat. La început, am schimbat inscripția de pe butonul anterior pentru a închide aplicația la "Ascunde", adică Acum, când îl apăsați, trebuie să faceți formularul principal de aplicare "ascuns". Ei bine, este ușor, în cazul unui handler pentru acest buton, să introduceți o singură linie:
Form1.Hide;
Și acum totul! Sper ca, pe măsură ce citiți articolele din această serie, devine mai ușor pentru dvs. să înțelegeți elementele de bază ale lucrului cu pictograma aplicației din tava de sistem :)
Codul sursă pentru acest articol puteți descărca aici.







Trimiteți-le prietenilor: