HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Ballon tippek megjelenítése saját programból


Példaprogram letöltése

5218 bájt

Amikor olyan alkalmazást készítünk, mely a Windows tálcájának jobb szélén jelenik meg kis ikon formájában, akkor a Windows XP-től, vagy az IE 5-től kezdve új lehetőségünk van, mely lehetővé teszi, hogy tetszőleges üzeneteket jelenítsünk meg felhasználóink számára, szöveg ballon formájában.
E példában annak járunk utána, hogy ez miként valósítható meg.

A program helyes működéséhez elengedhetetlen, hogy a ballon megjelenítés engedélyezett legyen. Ehhez a Windows regisztrációs adatbázisában a HKEY_CURRENT_USER főkulcs alatt található \Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced címen kell lennie egy EnableBalloonTips bejegyzésnek, mely DWORD típusú és értéke 1. Ha ez nem így lenne, akkor változtassuk meg, majd a jelentkezzünk ki és újra be, mivel csak ekkor jut érvényre a módosításunk.
A megoldáshoz először is el kell érnünk, hogy alkalmazásunk ikonja megjelenjen ezen a helyen is a Windows tálcán. Ehhez csak annyit kell tennünk, hogy regisztráljuk alkalmazásunkat a Shell_NotifyIcon függvény hívásával. Ennek első paraméterében a NIM_ADD konstans az ikon hozzáadását fogja eredményezni, míg a második paraméterben megadott TExNotifyIconData struktúrában írhatjuk le a további tulajdonságokat.
procedure TForm1.FormCreate(Sender: TObject);
begin
  FillChar(FIconData, SizeOf(TExNotifyIconData), 0);
  FIconData.cbSize:=SizeOf(TExNotifyIconData);
Például a Wnd mezőben kell megadnunk egy ablakkezelő függvényt, mely képes üzenetek feldolgozására. Ehhez létre is hozunk egy újat az AllocateHWnd függvény hívásával, melynek paraméterként megadjuk a saját DoTrayIconMessage függvényünket.
  FIconData.Wnd:=AllocateHWnd(DoTrayIconMessage);
Az uFlags-ban írjuk elő, hogy milyen funkciókkal kell rendelkeznie az ikonnak. Itt a NIF_INFO konstans fogja meghatározni, hogy használhatjuk a ballon funkciót.
  FIconData.uFlags:=NIF_ICON+NIF_MESSAGE+NIF_INFO;
Az uCallbackMessage mezőben egy egyedi számot adunk meg, mellyel majd azonosítani tudjuk, hogy az érkező üzenet, melyik ikonunktól érkezik, mivel egy alkalmazás több ikont is elhelyezhetne ezen a területen.
  FIconData.uCallbackMessage:=MESSAGECALLBACK;
A hIcon-ban egy Icon azonosítóját kell megadnunk, melynél most a saját alkalmazásunk ikonját használjuk fel, de létrehozhatnánk egy külön TIcon osztályt is egyedi ikonnal erre a célra.
  FIconData.hIcon:=Application.Icon.Handle;
  Shell_NotifyIcon(NIM_ADD, @FIconData);
Az alkalmazásunk indulása utána ShowBallon függvényünk meghívásával rögtön meg is jelenítünk egy üzenetet.
  ShowBalloon;
end;
Amikor az alkalmazásunk futása befejeződik, akkor nem árt megszüntetni a létrehozott ablakkezelő függvényt, valamint eltüntetni az ikon a Windows tálcáról.
procedure TForm1.FormDestroy(Sender: TObject);
begin
  DeallocateHWnd(FIconData.Wnd);
  Shell_NotifyIcon(NIM_DELETE, @FIconData);
end;
Amikor az ikon fölött mozog az egér, vagy rákattint a felhasználó, akkor a megadott DoTrayIconMessage üzenetkezelő függvényünk kap szerepet. Itt ellenőrizhetjük, hogy milyen jellegű esemény is következett be és ennek megfelelően rányithatjuk tovább alkalmazásunkat.
procedure TForm1.DoTrayIconMessage(var Msg: TMessage);
var
  ie: variant;
begin
  case Msg.lParam of
    WM_MOUSEMOVE: ListBox1.Items.Add('WM_MOUSEMOVE');
    WM_LBUTTONDOWN: ListBox1.Items.Add('WM_LBUTTONDOWN');
    NIN_BALLOONSHOW: ListBox1.Items.Add('NIN_BALLOONSHOW');
    ...
  end;
  ...
end;
Végül már csak egy tennivalónk maradt: a ShowBallon függvény létrehozása, mely képes arra, hogy egyedi üzenetet jelenítsen meg ballon formában a programunk futása során bármikor. Ehhez módosítanunk kell a már feltöltött TExNotifyIconData struktúrát: megadjuk az szInfoTitle mezőben a szükséges fejléc szöveget, valamint az szInfo mezőben magát az üzenet szövegét. Az uTimeout-ban beállíthatunk egy időtartamot, amíg maximum látható a ballon. Végül a dwInfoFlags mezőben azt adjuk meg, hogy milyen kis kép jelenjen meg a ballonban. Ennek három lehetséges értéke van: NIIF_INFO, NIIF_WARNING, NIIF_ERROR, illetve ha nem szeretnénk képet megjeleníteni, akkor a NIIF_NONE konstans használatával ezt letilthatjuk.
  strPLCopy(FIconData.szInfoTitle, 'Software Online', SizeOf(FIconData.szInfoTitle) - 1);
  strPLCopy(FIconData.szInfo, 'http://www.SoftwareOnline.hu'#13#10+DateTimeToStr(Now), SizeOf(FIconData.szInfo)-1);
  FIconData.UnionData.uTimeout:=5000;
  FIconData.dwInfoFlags:=NIIF_WARNING;
  Shell_NotifyIcon(NIM_MODIFY, @FIconData);
  ...

Cikksorozat

#IDKategóriaCikk címeSorozat
1488DelphiMS SQL tárolt eljárások1. rész
1499DelphiMS SQL tárolt eljárások2. rész
1507DelphiMS SQL tárolt eljárások3. rész
1519DelphiMS SQL tárolt eljárások4. rész
1526DelphiMS SQL tárolt eljárások5. rész
1537DelphiMS SQL tárolt eljárások6. rész
1546DelphiMS SQL tárolt eljárások7. rész
1553DelphiMS SQL tárolt eljárások8. rész
1564DelphiMS SQL tárolt eljárások9. rész
1573DelphiMS SQL tárolt eljárások10. rész
1582DelphiMS SQL tárolt eljárások11. rész
1591DelphiMS SQL tárolt eljárások12. rész
1600DelphiMS SQL tárolt eljárások13. rész
1609DelphiMS SQL tárolt eljárások14. rész
1617DelphiMS SQL tárolt eljárások15. rész
1626DelphiMS SQL tárolt eljárások16. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 381. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |