HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Windows asztal ikon feliratok színének beállítása programból


Példaprogram letöltése

5991 bájt

A Windows felülete többé-kevésbé tesztre szabható, rengeteg beállítási lehetőség van, amivel a megjelenését szabályozhatjuk. Van azonban néhány tulajdonság, amit nem tudunk módosítani, legalábbis közvetlenül Windows segédprogrammal nem. A mellékelt példaprogram képes az Asztalon található ikonok szöveg- és háttérszínének megváltoztatására, sőt, a szöveg hátterének átlátszóvá tételére, aminek következtében az ikonok feliratai mögött a háttérkép látszik. Windows 2000 esetében még egy további lehetőséget állíthatunk segítségével, az Asztalon található ikonok megjelenítési formáját is megváltoztathatjuk, így akár listaszerűen is megjeleníthetjük az Asztal tartalmát.
Elöljáróban annyit kell tudnunk, hogy az Asztal nem más, mint egy TListView komponens, pontosabban "SysListView32". Ennek kell megszereznünk a Handle azonosítóját, amit felhasználva különböző tulajdonságokat kérdezhetünk le, illetve módosíthatunk.
A Handle megszerzése viszonylag egyszerű, a GetWindow függvénnyel történik. Ennek első paramétere egy ablak Handle azonosítója, míg a második egy konstans, amely azt határozza meg, hogy milyen ablakot keresünk. A GW_CHILD konstans a megadott ablak első child ablakának Handle-jét fogja keresni.
  FHandle:=GetWindow(GetWindow(FindWindow('ProgMan', nil), GW_CHILD), GW_CHILD);
Ha megvan a Handle, akkor ellenőrizzük, hogy az valóban a szükséges osztályból származik. A GetClassName függvény a paraméterként megadott Handle-ból megállapítja annak típusát, és a második paraméterként megadott bufferben visszaadja a nevét. A harmadik paraméter a buffer mérete.
  GetClassName(FHandle, buff, SizeOf(buff));
Ha a típus SysListView32, akkor ettől kezdve ugyanúgy kezelhetjük, mintha egy TListView komponens lenne, bár a tulajdonságok elérése egy kicsit más. A property-ket lekérdezhetjük, illetve módosíthatjuk a SendMessage függvénnyel úgy, hogy a megfelelő üzeneteket küldjük a ListView-nek. Van azonban egy kényelmesebb megoldás, a "ListView_" karaktersorozattal kezdődő függvények az előző módszernek az egyszerűsített változatai, amiket kényelmesebben tudunk használni, mint az üzenetküldést.
Most nézzük, hogy a bevezetőben említett tulajdonságokat hogyan kérdezhetjük le, illetve hogyan módosíthatjuk.
Az ikon felirat színének lekérdezése a ListView_GetTextColor függvénnyel történhet. A függvénynek egy paramétere van, a ListView Handle azonosítója. Ezt a paramétert az összes függvénynél meg kell adni. A visszatérési érték a szöveg színe. A szín módosítása hasonlóképpen történik, ehhez a ListView_SetTextColor függvényt kell használni. A függvény az azonosítón kívül plusz egy paraméterrel rendelkezik, az új színnel.
A Set függvények, vagyis amelyekkel egy tulajdonságot adunk meg általában logikai típusúak, és igaz értékkel térnek vissza, ha a módosítás sikerült, és hamissal, ha nem.
A szöveg háttérszínének lekérdezése és módosítása hasonlóképpen történik, a ListView_GetTextbkColor és a ListView_SetTextBkColor függvényekkel. Itt viszont van egy trükk, amivel a szöveg háttérszínét eltüntethetjük. Ehhez nem kell mást tennünk, mint a szín helyett a CLR_NONE konstanst megadni.
A módosítások után ne felejtsük el frissíteni a képet, ezt a következőképpen tehetjük meg:
  ListView_RedrawItems(FHandle, 0, ListView_GetItemCount(FHandle)-1);
  UpdateWindow(FHandle);
A ListView_RedrawItems függvény a paraméterként megadott sorszámú elemeket frissíti. Az első paraméter az első frissítendő elem sorszáma, míg az utolsó paraméter az utolsóé. A ListView_GetItemCount függvénnyel lekérdezhetjük, hogy összesen hány elem van.

A következő trükk csak Windows 2000 alatt működik. A ListView Style tulajdonságát fogjuk módosítani. A GetWindowLong függvénnyel lekérdezzük egy dword típusú változóba a jelenlegi tulajdonságokat, és egy logikai művelettel töröljük azokat a biteket, amelyek a megjelenítés stílusát határozzák meg. Ezután a SetWindowLong függvénnyel beállítjuk a stílust meghatározó bitet a CheckBox2 Checked property-jének értékétől függően. Az LVS_SMALLICON stílus listaszerűen jeleníti meg az elemeket, míg az LVS_ICON a normál, megszokott formában.
var
  dwstyle: dword;
...
  dwstyle:=GetWindowLong(FHandle, GWL_STYLE) and (not LVS_TYPEMASK);
  if CheckBox2.Checked then
    SetWindowLong(FHandle, GWL_STYLE, dwstyle or LVS_SMALLICON)
  else
    SetWindowLong(FHandle, GWL_STYLE, dwstyle or LVS_ICON);


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 446. 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 |