HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Komponensekhez ikon rendelése, Delphi kiegészítés és segédprogram egyben


Példaprogram letöltése

9349 bájt

Ha komponenst, vagy komponens csomagot készítünk, s azt valahol publikáljuk is, akkor érdemes minden komponenshez egy kis ikont rendelni, melyből a felhasználó könnyebben tudja azonosítani az adott komponenst. Ikonok hozzárendelését végezhetjük a Delphi-hez adott Image Editor segédprogrammal is, de ez eléggé kényelmetlen, és csak maximum 256 színű ikonokat készíthetünk vele. A mellékelt példában egy olyan segédprogramot készítünk, amellyel akár 24 bites színmélységű képeket is rendelhetünk a komponenseinkhez, és mindezt rendkívül egyszerűen. A segédprogram használható önállóan is, de akár Delphi kiegészítésként is telepíthetjük.

Ha Delphi kiegészítésként kívánja használni a programot, akkor telepítse a mellékelt ComponentIconEditor_pkg.dpk fájlt a Delphi alá. Ha sikerült, akkor az Animare menüben létrejön egy Component Icon Editor menüpont, amellyel a segédprogram indítható.
A program használata nagyon egyszerű. Mielőtt azonban használnánk, készítsük el a komponensek 24x24 pixel méretű ikonjait egy tetszőleges rajzolóprogrammal, és mentsük el BMP formátumban. Ezután indítsuk el a programot a menüből, vagy a Project1.dpr-t lefordítva, a Project1.exe-t. Ezután nyissuk meg azt a forráskódot, amelyben a komponens vagy komponensek regisztrációja található (általában a Register eljárásban a RegisterComponents eljárás). A program a listába beolvassa a forráskódból regisztrált komponenseket. Alaphelyzetben a No Icon kép jelenik meg a komponens osztályok nevei mellett. A program nem tudja a már létező dcr fájlból kiolvasni a komponensek ikonjait, de erre figyelmeztet is, ha olyan forráskódot nyitunk meg, amelyhez már van dcr. Ezt ugyanis felül fogja írni!
Egy komponenshez úgy rendelhetünk ikont, hogy kijelöljük a listában, majd kattintunk a Kép megadása gombon. Kiválaszthatunk 24x24 pixelnél nagyobb képeket is, de ekkor a program automatikusan átméretezi a megadott képet a megfelelő méretre.
Ha mégsem akarunk a komponenshez képet rendelni, akkor használjuk a Kép törlése gombot.
A dcr fájlt elkészíteni a Mentés gombbal tudjuk. Figyelem! Ez felülírja a már létező dcr fájlt, tehát annak tartalma elvész! A felülírás csak a Mentés gombra való kattintáskor történik meg, a forráskód megnyitásakor nem.
Miután elkészítettük a dcr fájlt, lépjünk ki a programból, és telepítsük újra a komponenseket. Ha minden jól ment, akkor a palettán a komponensek az újonnan megadott képekkel jelennek meg.
Most nézzük a program gyakorlati megvalósítását. Ahhoz, hogy egy komponenshez képet tudjunk rendelni, szükségünk lesz egy dcr fájlra, melynek neve megegyezik a komponenst tartalmazó forráskód nevével (pl. „Component.pas”-nál „Component.dcr” lesz). Ez egy egyszerű erőforrás fájl (.res), csak más a kiterjesztése. Az erőforrás fájlban kell létrehozni 24x24 méretű bitképeket. A bitképek nevének meg kell egyeznie a komponens osztály nevével, beleértve a kezdő T betűt is, és a név csak nagybetűket tartalmazhat. Ha például a komponens neve TMyControl, akkor a hozzá tartozó kép nevének TMYCONTROL-nak kell lennie. A bevezetőben már említettük, hogy ilyen dcr fájlokat az Image Editor programmal is létrehozhatunk de csak maximum 256 színű képekkel.
Mivel a dcr fájl is egy erőforrás fájl (res), ezért nyilván előállítható egy .rc fájlból, a Delphi Bin könyvtárában található brcc32.exe programmal. A programunknak tehát nincs más dolga, mint előállítani az rc fájlt, majd meghívni a brcc32.exe programot a megfelelő paraméterekkel. A paraméterezés szintén egyszerű. Az első paraméter az –fo kapcsoló után a készítendő fájl neve lesz. A kapcsoló és a név között nem lehet szóköz (pl. „-foMyControl”). A második paraméter az rc fájl neve. Tehát a parancssor a következőképpen fog kinézni, ha a komponens forráskódjának neve MyControl:
brcc32.exe –foMyControl.dcr MyControl.rc
Természetesen a fájlnevek előtt az elérési út is szerepel.
A lényeg tehát ez, de nézzük meg egy kicsit részletesebben, hogy a program mit hogyan csinál. Először is honnan tudjuk meg, hogy a megadott forráskódban milyen komponensek találhatók. Ehhez meg kell keresnünk a forráskódban található összes RegisterComponents eljárást. Ennek egy olyan paramétere van, amelyben a komponens osztályokat meg kell adni. Szerencsére ez egy tömb paraméter, tehát a megadott értékek (komponens osztályok nevei) szögletes zárójelek között találhatók, vesszővel elválasztva egymástól. Arra figyelni kell, hogy egy forráskód több RegisterComponents eljárást is tartalmazhat.
A képek tárolásához egy ImageList komponenst használunk, melyet hozzárendelünk a komponensek listáját tartalmazó ListView-hez. Ebben eredetileg egy képet tárolunk, a No Icon feliratút. Ennek indexe értelemszerűen 0, és minden elem (komponens) ezt kapja meg alapértelmezettként, illetve erre lesz beállítva a Kép törlése gomb hatására. Ez utóbbi esetben nem töröljük a képet az ImageList-ből, mivel úgyis kevés, és kicsi képekről van szó, és ez a programot feleslegesen bonyolítaná (a törölt kép utáni képek indexe eggyel csökkenne, így a ListView elemeinél is csökkenteni kellene ezeket). Ha valamelyik komponensnél nincs kép megadva (ImageIndex=0), akkor az nem kerül bele az rc fájlba. Amikor megnyitunk egy képet, akkor azt felvesszük az ImageList-be, és a kijelölt elem ImageIndex property-jében megadjuk az új kép indexét.
A mentésnél először is elmentjük a képeket. Ehhez a forráskódot tartalmazó könyvtárban készítünk egy pics nevű alkönyvtárat, majd sorban elmentjük a képeket névként a hozzá tartozó komponens nevét megadva.
Ezután előállítjuk az rc fájlt, ami egy egyszerű szövegfájl. Minden sora egy komponenshez tartozik. A sor a komponens nagybetűs nevével kezdődik (ez lesz az erőforrás kép neve, lásd feljebb), majd szóközzel elválasztva a „BITMAP” kulcsszó következik, ami az erőforrás típusát adja meg, és ezt követi szintén szóközzel elválasztva a képet tartalmazó fájl neve.
Ha elkészült az rc fájl, akkor lefordítjuk a brcc32.exe programmal, amit a WinExec függvénnyel hívunk meg. Ezzel előáll ugyan a dcr fájl, de még nem készültünk el, ugyanis a forráskódba ezt be kellene szúrni. Betöltjük tehát a forráskódot, és megnézzük, hogy a {$R Név.dcr} sor megtalálható-e benne. Természetesen a „Név” helyén a dcr fájl neve áll. Ha nincs, akkor az implementation kulcsszó után beszúrjuk a forráskódba, majd elmentjük.
Már csak egy újratelepítés kell, és a komponensek az új képekkel jelennek meg a palettán.

Cikksorozat

#IDKategóriaCikk címeSorozat
1018DelphiVonalkód készítő komponens1. rész
1028DelphiVonalkód nyomtatása a QuickReport-al2. rész


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