Namestitev aplikacij Delphi v sistemsko vrstico
Thomas Barwick/Stone/Getty Images
Oglejte si opravilno vrstico. Vidite območje, kjer se nahaja čas? Ali so tam še kakšne druge ikone? Mesto se imenuje sistemska vrstica Windows. Ali želite postaviti svoj Delphi tam ikona aplikacije? Ali želite, da je ta ikona animirana - ali odraža stanje vaše aplikacije?
To bi bilo uporabno za programe, ki se izvajajo dlje časa brez interakcije uporabnika (opravila v ozadju, ki jih običajno izvajate na vašem računalniku ves dan).
Kar lahko storite, je, da vaše aplikacije Delphi izgledajo, kot da se minimizirajo v pladenj (namesto v opravilno vrstico, desno do gumba Win Start), tako da v pladenj postavite ikono in hkrati naredite obrazce nevidne .
Let's Tray It
Na srečo je ustvarjanje aplikacije, ki se izvaja v sistemski vrstici, precej enostavno - za dokončanje naloge je potrebna samo ena (API) funkcija, Shell_NotifyIcon.
Funkcija je definirana v Enota ShellAPI in zahteva dva parametra. Prva je zastavica, ki označuje, ali je ikona dodana, spremenjena ali odstranjena, druga pa je kazalec na strukturo TNotifyIconData, ki vsebuje informacije o ikoni. To vključuje ročaj ikone, ki se prikaže, besedilo, ki se prikaže kot nasvet orodja, ko je miška nad ikono, ročaj okna, ki bo prejelo sporočila ikone, in vrsto sporočila, ki ga bo ikona poslala v to okno .
Najprej v razdelek Zasebno glavnega obrazca vnesite vrstico:
TrayIconData: TNotifyIconData;
Nato v glavnem obrazcuOnCreatemetodo, inicializirajte podatkovno strukturo TrayIconData in pokličite funkcijo Shell_NotifyIcon:
|_+_|Parameter Wnd strukture TrayIconData kaže na okno, ki prejema obvestila, povezana z ikono.
Ikona h kaže na ikono, ki jo želimo dodati v pladenj - v tem primeru je uporabljena glavna ikona aplikacij.
SzTip vsebuje besedilo Tooltip za prikaz za ikono - v našem primeru naslov aplikacije. SzTip lahko vsebuje do 64 znakov.
Parameter uFlags je nastavljen tako, da ikoni pove, naj obdeluje sporočila aplikacije, uporablja ikono aplikacije in njen nasvet. The uCallbackMessage kaže na identifikator sporočila, ki ga definira aplikacija. Sistem uporablja podani identifikator za obvestilna sporočila, ki jih pošlje oknu, ki ga prepozna Wnd, kadar koli pride do miškinega dogodka v omejujočem pravokotniku ikone. Ta parameter je nastavljen na konstanto WM_ICONTRAY, definirano v razdelku vmesnika enote obrazcev, in je enak: WM_USER + 1;
Ikono dodate v pladenj s klicem funkcije API Shell_NotifyIcon. Prvi parameter 'NIM_ADD' doda ikono v področje pladnja. Drugi dve možni vrednosti, NIM_DELETE in NIM_MODIFY, se uporabljata za brisanje ali spreminjanje ikone v pladnju – kasneje v tem članku bomo videli, kako. Drugi parameter, ki ga pošljemo v Shell_NotifyIcon, je inicializirana struktura TrayIconData.
Vzemi enega
Če zdaj ZAGNETE svoj projekt, boste blizu ure v pladnju videli ikono. Upoštevajte tri stvari.
1) Prvič, nič se ne zgodi, ko kliknete (ali naredite kar koli drugega z miško) na ikono v pladnju - še nismo ustvarili postopka (obravnavalnik sporočil).
2) Drugič, v opravilni vrstici je gumb (očitno ga tam ne želimo).
3) Tretjič, ko zaprete aplikacijo, ikona ostane v vrstici.
Vzemi dva
Rešimo to za nazaj. Če želite ikono odstraniti iz vrstice, ko zapustite aplikacijo, morate znova poklicati Shell_NotifyIcon, vendar s prvim parametrom NIM_DELETE. To storite v OnDestroyobdelovalec dogodkovza glavni obrazec.
|_+_|Če želite skriti aplikacijo (gumb aplikacije) v opravilni vrstici, bomo uporabili preprost trik. V izvorno kodo projektov dodajte naslednjo vrstico: Application.ShowMainForm := False; pred Application.CreateForm(TMainForm, MainForm); Naj zgleda npr.:
|_+_|
In končno, da se naša ikona na pladnju odziva na dogodke miške, moramo ustvariti postopek za obravnavanje sporočil. Najprej deklariramo proceduro za obravnavanje sporočil v javnem delu deklaracije obrazca: procedure TrayMessage(var Msg: TMessage); sporočilo WM_ICONTRAY; Drugič, definicija tega postopka izgleda takole:
|_+_|Ta postopek je zasnovan tako, da obravnava samo naše sporočilo, WM_ICONTRAY. Iz strukture sporočila vzame vrednost LParam, ki nam lahko poda stanje miške ob aktivaciji procedure. Zaradi poenostavitve bomo obravnavali le levo miško navzdol (WM_LBUTTONDOWN) in desno miško navzdol (WM_RBUTTONDOWN). Ko je levi gumb miške na ikoni, prikažemo glavni obrazec, ko pritisnemo desni gumb, ga skrijemo. Seveda obstajajo tudi druga vnosna sporočila z miško, ki jih lahko obravnavate v postopku, na primer dvig gumba, dvojni klik gumba itd.
To je to. Hitro in enostavno. Nato boste videli, kako animirati ikono v vrstici in kako naj ta ikona odraža stanje vaše aplikacije. Še več, videli boste, kako prikazati pojavni meni blizu ikone.