Vessen egy pillantást a tálcára. Lásd a területet, ahol az idő található? Van itt más ikon is? A hely neve Windows rendszertálca. Szeretné elhelyezni a Delphi az alkalmazás ikonja ott? Szeretné, hogy ez az ikon animálódjon - vagy tükrözze az alkalmazás állapotát?
Ez akkor lenne hasznos, ha olyan programokat használunk, amelyeket hosszú ideig hagyunk futtatni, felhasználói beavatkozás nélkül (háttérfeladatok, amelyeket általában egész nap a számítógépen futtatunk).
Amit tehetsz, ha úgy dönt, hogy a Delphi alkalmazásai úgy néznek ki, mintha minimalizálnák a tálcát (ahelyett, hogy a tálcára csökkennének) Tálca, közvetlenül a Win Start gombra), ha ikont helyez a tálcába, és egyidejűleg elkészíti az űrlapjait láthatatlan.
Töltsük le
Szerencsére a tálcán futó alkalmazás létrehozása elég egyszerű - csak egy (API) funkcióra, a Shell_NotifyIcon szükséges a feladat végrehajtásához.
A funkciót a ShellAPI egység és két paramétert igényel. Az első egy zászló, amely jelzi, hogy az ikont hozzáadják, módosítják vagy eltávolítják, és a második egy TNotifyIconData struktúra mutatója, amely az ikonra vonatkozó információkat tartalmazza. Ez magában foglalja a megjelenítendő ikon fogantyúját, a szöveg tippeként megjelenítendő szöveget, amikor az egér az ikon fölött van, a annak az ablaknak a fogantyúja, amely fogadja az ikon üzeneteit, és az üzenet típusa, amelyet az ikon erre küld ablak.
Először a fő űrlap Privát részében tedd a sort:
TrayIconData: TNotifyIconData;
típus
TMainForm = osztály(TForm)
eljárás FormCreate (Feladó: TObject);
magán
TrayIconData: TNotifyIconData;
{Magánnyilatkozatok}nyilvános{Nyilvános nyilatkozatok}vég;
Akkor a fő formádban OnCreate módszerrel inicializálja a TrayIconData adatstruktúrát, és hívja meg a Shell_NotifyIcon függvényt:
val vel TrayIconData dobegin
cbSize: = SizeOf (TrayIconData);
Wnd: = Fogantyú;
uID: = 0;
uFlags: = NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage: = WM_ICONTRAY;
hIcon: = Alkalmazás. Ikon. Fogantyú;
StrPCopy (szTip, alkalmazás. Cím);
vég;
Shell_NotifyIcon (NIM_ADD, @TrayIconData);
A TrayIconData struktúra Wnd paramétere arra az ablakra mutat, amely egy ikonhoz társított értesítési üzeneteket fogad.
A hIcon arra az ikonra mutat, amelyet hozzá akarunk adni a tálcához - ebben az esetben az Alkalmazások fő ikont kell használni.
A szTip tartja a Tooltip szöveget az ikon megjelenítéséhez - esetünkben az alkalmazás címe. A szTip legfeljebb 64 karakterből állhat.
Az uFlags paraméter úgy van beállítva, hogy megmondja az ikonnak az alkalmazás üzeneteinek feldolgozására, az alkalmazás ikonjának és annak tippjének használatára. Az uCallbackMessage az alkalmazás által meghatározott üzenet azonosítóra mutat. A rendszer a megadott azonosítót használja az értesítési üzenetekhez, amelyeket elküld a Wnd által azonosított ablakhoz, amikor egy egér esemény történik az ikon határoló téglalapjában. Ezt a paramétert az űrlap egység interfész szakaszában meghatározott WM_ICONTRAY állandóra állítja, és egyenlő: WM_USER + 1;
A ikont hozzáadja a tálcához a Shell_NotifyIcon API funkció meghívásával. Az első "NIM_ADD" paraméter hozzáad egy ikont a tálca területéhez. A másik két lehetséges értéket (NIM_DELETE és NIM_MODIFY) egy ikon törlésére vagy módosítására használják a tálcában - később meglátjuk ebben a cikkben. A második paraméter, amelyet a Shell_NotifyIcon-nek küldünk, az inicializált TrayIconData struktúra.
Vegyél egyet
Ha most futtatja a projektet, egy ikon jelenik meg a tálca Óra közelében. Vegye figyelembe három dolgot.
1) Először semmi sem történik, ha rákattint (vagy ha az egérrel bármi mást csinál) a tálcába helyezett ikonra - még nem hoztuk létre az eljárást (üzenetkezelő).
2) Másodszor, van egy gomb a tálcán (nyilvánvalóan nem akarjuk ott).
3) Harmadszor, amikor bezárja az alkalmazást, az ikon a tálcában marad.
Vegyél kettőt
Oldjuk meg ezt hátra. Az ikon eltávolításához a tálcából, amikor kilép az alkalmazásból, újra meg kell hívnia a Shell_NotifyIcon-t, de az első paraméterként a NIM_DELETE-t kell megadni. Ezt az OnDestroy-ban teheti meg eseménykezelő a fő űrlaphoz.
eljárás Megadott. FormDestroy (feladó: TObject);
kezdődik
Shell_NotifyIcon (NIM_DELETE, @TrayIconData);
vég;
Az alkalmazás (alkalmazás gomb) elrejtéséhez a tálcán egy egyszerű trükköt használunk. A Projektek forráskódjába adja hozzá a következő sort: Alkalmazás. ShowMainForm: = Hamis; a jelentkezés előtt. CreateForm (TMainForm, MainForm); E.g nézzen így:
...
kezdődik
Alkalmazás. inicializálása;
Alkalmazás. ShowMainForm: = Hamis;
Alkalmazás. CreateForm (TMainForm, MainForm);
Alkalmazás. Fuss;
véget.
És végül, hogy a Tálca ikon válaszoljon az egér eseményeire, létre kell hoznunk egy üzenetkezelési eljárást. Először bejelentjük az üzenetkezelési eljárást az űrlapnyilatkozat nyilvános részében: TrayMessage eljárás (var Msg: TMessage); WM_ICONTRAY üzenet; Másodszor, ennek az eljárásnak a meghatározása a következőképpen néz ki:
eljárás Megadott. TrayMessage (var Üzenet: TMessage);
begincase Msg.lParam nak,-nek
WM_LBUTTONDOWN:
kezdődik
ShowMessage ('A bal gomb kattintva
- mutassuk meg az űrlapot! ');
MainForm. Előadás;
vég;
WM_RBUTTONDOWN:
kezdődik
ShowMessage ('A jobb gombra kattintott
- Nézzük elrejteni az űrlapot! ');
MainForm. Elrejt;
vég;
vég;
vég;
Ez az eljárás csak az üzenetünk, a WM_ICONTRAY kezelésére szolgál. Az üzenet szerkezetéből az LParam értéket veszi fel, amely megadhatja az egér állapotát az eljárás aktiválásakor. Az egyszerűség kedvéért csak a bal egér lefelé (WM_LBUTTONDOWN) és a jobb egér lefelé (WM_RBUTTONDOWN) fogunk kezelni. Amikor a bal egérgomb lefelé van az ikonon, megmutatjuk a fő űrlapot, amikor a jobb gombot nyomjuk, elrejtjük. Természetesen vannak más egérbeviteli üzenetek is, amelyeket kezelhetünk az eljárás során, például: gomb fel, gomb dupla kattintás stb.
Ez az. Gyors és könnyű. Ezután megtudhatja, hogyan animálhatja az ikont a tálcán, és hogyan lehet, hogy az ikon tükrözze az alkalmazás állapotát. Még ennél is látni fogja, hogyan jeleníthető meg az előugró menü az ikon mellett.