HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Asztal háttérkép cserélő alkalmazás


Példaprogram letöltése

11097 bájt

Amikor megunjuk a Windows asztalon lévő aktuális háttérképet, akkor választhatunk egy másikat, de ez a művelet egy idő után fárasztó lehet. Sokkal kényelmesebb lenne, ha készítenénk egy listát a megjelenítendő képekből, és egy program minden indításkor kiválasztana egyet ebből a listából háttérképnek. Megtehetné ezt automatikusan, mondjuk a Windows minden újraindításakor, így mindig más-más hátteret kapnánk. Készítettünk egy komponenst, ami ezt a feladatot látja el.
A mellékelt példaprogram megnyitása előtt a WallpaperChanger.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A háttérképnek használható képek fájlneveit az elérési útvonallal együtt egy egyszerű szövegfájlban tároljuk. Minden sor egy fájlnevet tartalmaz. A kép kiválasztása kétféleképpen történhet. Az első eset, amikor a képek egymás után követik egymást, a másik, amikor véletlenszerűen választunk egyet a listából.
A ListFileName property-ben adhatjuk meg annak a fájlnak a nevét, amiben a képek listája található. Amikor egy létező fájl nevét adjuk meg, akkor az abban található lista automatikusan betöltődik az ImageList property-be. Az ImageList property tartalmát kétféleképpen is szerkeszthetjük. Az egyik a szokásos módszer a TStringList típusú property-knél használt szerkesztő, amiben be kell gépelnünk a fájlok neveit. A másik, kényelmesebb módszer a komponens menüjének "Image list editor…" nevű menüpontjának használata. Erről később még szólunk néhány szót. A komponens menüjében további három menüpontot találhatunk. A"Load image list" menüponttal visszatölthetjük a ListFileName property-ben megadott fájl tartalmát. A "Save image list" elmenti a ListFileName property-ben megadott fájlba az ImageLIst property tartalmát. Az "Execute" menüponttal meghívjuk a komponens Execute metódusát, ami végrehajtja a háttérkép váltását. Ha a RandomSelect property értéke igaz, akkor a kép kiválasztása véletlenszerűen történik, ellenkező esetben a Registry-ben tárolt sorszámú kép lesz megjelenítve.

A megjelenítendő kép sorszámát a GetIndex függvénnyel tudjuk lekérdezni, míg a paraméterként megadott sorszámot a SetIndex eljárás tárolja el a Registry-ben.

Az Edit eljárás meghívásával egy szerkesztő ablakot kapunk, amiben a képek listáját tudjuk egyszerűen szerkeszteni. Amikor a menüből kiválasztjuk az "Image list editor…" menüpontot, akkor tulajdonképpen ezt az eljárást hívjuk meg. Ez a szerkesztő ablak azért került ilyen módon megvalósításra, hogy a képek listájának szerkesztése abból a programból is könnyen elérhető lehessen, amiben a komponenst felhasználjuk. Mielőtt az ablak megjelenik, az azon található TListBox típusú komponensbe áttöltjük az ImageList property tartalmát. Miután az ablak bezáródik, visszatöltjük a módosított listát a property-be.
A Load eljárás a ListFileName property-ben megadott fájl tartalmát betölti az ImageList property-be, ha a fájl létezik. A Save eljárás elmenti a képek listáját a megadott fájlba.

A képek váltását az Execute eljárás végzi. Ebben első lépésben lekérdezzük a megjelenítendő kép sorszámát a GetIndex függvénnyel, és ellenőrizzük, hogy van-e ilyen sorszámú kép a listában. Ha van, akkor lekérdezzük a fájl nevét, és ellenőrizzük a kiterjesztését. A program BMP és JPEG típusú képeket tud kezelni. Az eljárás mindkét esetben hasonló, a betöltött képet elmentjük egy adott néven, BMP formátumban. A különbség csak annyi, hogy a JPEG kép betöltéséhez a TJPEGImage osztályt használjuk fel. Itt kell szólnunk az OnSaveWallpaper eseményről. Ez az esemény azelőtt jön létre, mielőtt a képet elmentenénk BMP formátumban, és lehetőséget ad arra, hogy a képet módosítsuk, mielőtt elmentenénk. Így elhelyezhetünk rajta feliratokat, képeket, vagy akár rajzolhatunk rá egy naptárat is.
A háttérkép beállítását a SystemParametersInfo függvénnyel végezzük el:
      SystemParametersInfo(
        SPI_SETDESKWALLPAPER, 0,
        PChar(PicName),
        SPIF_SENDWININICHANGE + SPIF_UPDATEINIFILE);
Az első paraméterrel megadjuk, hogy mit is szeretnénk csinálni. A második paraméter jelen esetben 0, mivel ezt nem használjuk. A harmadik paraméter egy #0 karakterrel végződő fájlnév, ami a háttérkép-fájl neve. Az SPIF_SENDWININICHANGE és SPIF_UPDATEINIFILE konstansokkal megadjuk, hogy az új beállítást mentse el a rendszer, és értesítse a változásokról az összes futó alkalmazást.

A képek kiválasztásánál vegyük figyelembe, hogy a komponens a háttérkép megjelenítésének módját (középre, nyújtás, mozaikszerűen) nem módosítja, tehát azt előzőleg be kell állítani!

A komponenshez két példaprogramot is készítettünk. Az egyikben egy gombbal tudjuk váltani a komponensben megadott háttérképeket. A másik egy kicsit komolyabb program, amely akár önállóan is használható. Ez egy Form nélküli program, ami az első indítás után bejegyzi magát a Registry-be, és minden Windows indításkor automatikusan elindul. A komponenst futásidőben hozza létre, és betölti a piclist.txt fájl tartalmát, ami a képek listáját kell, hogy tartalmazza. Miután megváltoztatta a háttérképet, automatikusan bezáródik, és nem foglalja tovább a memóriát és a processzoridőt. A program törléséhez a megfelelő Registry kulcs alatt bejegyzett WPChanger értéket kell törölni. A kulcs a forrásban megtalálható.

A Project1 példaprogram futtatása előtt a komponens ImageList property-jét töltsük fel adattal, vagyis adjunk meg létező BMP és JPEG képeket.
A WPChanger példaprogram egy "piclist.txt" nevű fájlból tölti be a képek listáját, ezért ezt is töltsük fel adatokkal. Erre a legegyszerűbb módszer a másik példaprogramban megadott lista mentése.


Cikksorozat

#IDKategóriaCikk címeSorozat
1063DelphiInterbase 6 alkalmazása Delphi-ben1. rész
1072DelphiInterbase 6 alkalmazása Delphi-ben2. rész
1084DelphiInterbase 6 alkalmazása Delphi-ben3. rész
1092DelphiTIBTable komponens4. rész
1102DelphiTIBTransaction komponens5. rész
1111DelphiTIBQuery komponens6. rész
1120DelphiTIBStoredProc komponens7. rész
1128DelphiTIBDataSet komponens8. rész
1141DelphiTIBSQL komponens9. rész
1150DelphiTIBSQLMonitor komponens10. rész
1159DelphiTIBUpdateSQL komponens11. rész
1167DelphiIBEvents komponens12. rész
1177DelphiIBDatabaseInfo komponens használata13. rész
1183DelphiTIBConfigService komponens14. rész
1192DelphiTIBSecurityService komponens15. rész
1204DelphiTIBServerProperties komponens16. rész
1213DelphiTIBBackupService komponens17. rész
1222DelphiTIBRestoreService komponens18. rész
1231DelphiTIBValidationService komponens19. rész
1240DelphiTIBStatisticalService komponens20. rész
1249DelphiTIBLogService komponens21. rész
1258DelphiTIBUninstall komponens22. rész
1267DelphiInterBase Express komponenscsomag23. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 435. 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 |