HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Mi lehet egy RC állományban?


Példaprogram letöltése

5853 bájt

Amikor erőforrás állományokat készítünk Delphi alkalmazásaink számára, számos típus áll a rendelkezésünkre. Ebben a cikkben megnézzük, hogy hogyan lehet egy Delphi erőforrás állományt elkészíteni és felhasználni. Megpróbáljuk összegyűjteni azokat az erőforrás típusokat, amelyeket egy RC állomány elkészítése során használhatunk.

Ha valamilyen képet, ikont, kurzort, vagy bármilyen más adatot bele akarunk fordítani egy exe állományba, vagy egy DLL-be, akkor erőforrás állományt kell készítenünk.
Első lépésben létre kell hoznunk egy *.rc állományt, amelyben felsoroljuk, hogy mely állományokat, milyen típussal és milyen névvel akarjuk felhasználni programunkban. Az egyes erőforrásokat külön sorokban kell megadnunk. Az állományt bármilyen szövegszerkesztő program segítségével létrehozhatjuk, a lényeg, hogy TEXT formátumú legyen.
Az RC állomány egy sora a legtöbb esetben az alábbi módon épül fel.
eyes ANIMCURSOR "eyes.ani"
Az első helyen egy olyan nevet kell megadnunk, amellyel programunkban akarjuk majd azonosítani az erőforrást. Ha az erőforrást befordítjuk majd, akkor csak ezen a néven keresztül tudjuk elérni.
A második paraméter az erőforrás típusa, a harmadik pedig a befordítandó állomány jelenlegi, fizikai neve. Néhány típus használata esetén a harmadik helyen nem állománynév szerepel, de van olyan is, ahol több paraméter is megadható.
Erőforrás típusok:
ACCELERATORS
Gyorsbillentyűk.
táblanév ACCELERATORS [opcionális_paraméterek] {esemény, azonosító, [típus] [opciók] ...;} 
Opcionális paraméterek:
  • CHARACTERISTICS dword: Opcionális. A felhasználó által definiált információ az erőforrásról.
  • LANGUAGE language, sublanguage: Opcionális. Nyelv megadását teszi lehetővé.
  • VERSION dword: Opcionális. Az erőforrás verziója.
Esemény: (a megadható karakter formátumát határozza meg)
  • Karakter megadása idézőjelek között. A karakterrel együtt használhatjuk a ^ jelet is. Pl.: acc ACCELERATORS {„^q”, 1}
  • ASCII: A karakter megadható ASCII kóddal. Pl.: acc ACCELERATORS {98, 1}
  • VIRTKEY: Pl.: acc ACCELERATORS {VK_F2, 1}.
Azonosító: A forróbillentyűt azonosító név.
Típus: Lehet: ASCII, VIRTKEY.
Opciók: A segédbillentyűk használatát teszi lehetővé. Használható értékek: ALT, SHIFT, CONTROL.
acc ACCELERATORS 
{
"^q", 1;
VK_F1, 2, VIRTKEY, ALT;
}
BITMAP
BMP kép.
azonosító BITMAP állománynév
CURSOR
Kurzor.
azonosító CURSOR állománynév
DIALOG
Dialógusablak.
azonosító DIALOG x, y, szélesség, magasság  [opcionális_paraméterek] {az_ablak_elemei ...}
x,y: Az ablak megjelenésének koordinátái.
Opcionális paraméterek:
  • CAPTION "text": Opcionális. Az ablak felirata.
  • CHARACTERISTICS dword: Opcionális. A felhasználó által definiált információ az erőforrásról.
  • CLASS class: Itt a létrejövő ablakhoz egy osztály nevet rendelhetünk.
  • EXSTYLE=extended-styles: Az ablak stílusára van hatással.
  • FONT pointsize, typeface: Betűtípus beállítása.
  • LANGUAGE language, sublanguage: Nyelv megadása.
  • MENU menuname: A használni kívánt menü azonosítója. A menüt azonosíthatjuk név vagy a hozzárendelt szám alapján.
  • STYLE styles: A dialógusablak stílusa.
  • VERSION dword: Verzió infomráció.
d DIALOG 20, 20, 200, 100 
STYLE WS_POPUP | WS_BORDER
CAPTION "Kérdés"
{
    CTEXT "Select One:", 1, 10, 10, 280, 12
    PUSHBUTTON "&OK", 2, 75, 30, 60, 12
    PUSHBUTTON "&CANCEL", 3, 75, 50, 60, 12
}
DIALOGEX
A DIALOG erőforrás kiterjesztett változata.
azonosító DIALOGEX x, y, szélesség, magasság [, súgó_azonosító]] [[opcionális_paraméterek]]  {az_ablak_elemei . . .}
Az ablak a paraméterek tekintetében ugyanúgy működik, mint a DIALOG erőforrás.
Súgó_azonosító: Itt egy számot adhatunk meg, amely egy súgó oldalt azonosít az alkalmazásban.
FONT
Betűtípus.
azonosító FONT állománynév
ICON
Ikon.
azonosító ICON állománynév
MENU
Menü.
azonosító MENU [[opcionális_paraméterek]] {menü_elemek ...}
Azonosító: Egy szám, amely a menüt azonosítja.
Opcionális paraméterek:
  • CHARACTERISTICS dword: Opcionális. A felhasználó által definiált információ az erőforrásról.
  • LANGUAGE language, sublanguage: Opcionális. Nyelv megadását teszi lehetővé.
  • VERSION dword: Opcionális. Az erőforrás verziója.
m MENU
{
 MENUITEM "&Névjegy", 100
 POPUP "&Fájl"
 {
   MENUITEM "&Megnyitás", 200
   MENUITEM "&Mentés", 201
 }
 MENUITEM "&Kilépés", 102
}
MENUEX
A MENU erőforrás kiterjesztett változata.
azonosító MENUEX{ [{[MENUITEM elem [,[elem_azonosító][, [típus][, állapot]]]] |   [POPUP elem [,[elem_azonosító][, [típus][, [állapot][, súgó_azonosító]]]] {almenü_törzs} }...]}
Elem: A menü felirata.
Elem_azonosító: A menüelemet azonosító szám.
Típus: Egy szám, amely a menüelem típusát határozza meg.
Állapot: Egy szám, amely a menü állapotát határozza meg.
POPUP: A kulcsszó segítségével olyan menüelemet hozhatunk létre, amely tartalmaz további almenüpontokat is.
Súgó_azonosító: Egy szám, amely a menüponthoz rendelt súgót azonosítja.
Almenü_törzs: Az egyes menüpontokon belül almenüket is elhelyezhetünk. Ezeket beágyazott módon adhatjuk meg.
MESSAGETABLE
Üzenettábla.
azonosító MESSAGETABLE állománynév
POPUP
Olyan menüelem, amely tartalmaz további almenüpontokat is.
POPUP elem, [[Opciók]]{ elemek ...}
Elem: a menüpont felirata.
Opciók:
  • CHECKED: A menüelemet kiválaszthatóvá (pipa) teszi.
  • GRAYED: A menüelem alapértelmezés szerint inaktív állapotba kerül és szürke árnyalatot kap.
  • HELP: Súgó hozzárendelését teszi lehetővé.
  • INACTIVE: A menüelem megjelenik, de inaktív. Nem használható együtt a GRAYED opcióval.
  • MENUBARBREAK: A megjelenő menüoszlopot egy függőleges vonallal elválasztja az előzőtől.
  • MENUBREAK: Elválasztja a menüt.
RCDATA
Adat.
azonosító RCDATA  [[opcionális_paraméterek]]  {adathalmaz ...}
Opcionális paraméterek:
  • CHARACTERISTICS dword: Opcionális. A felhasználó által definiált információ az erőforrásról. Ez nem kerül befordításra az exe-be vagy DLL-be.
  • LANGUAGE language, sublanguage: Opcionális. Nyelv megadását teszi lehetővé.
  • VERSION dword: Opcionális. Az erőforrás verziója.
Adathalmaz: Az adatsorozatot tartalmazza, mely lehet 0 végű sztring, karakter vagy szám. A számokat megadhatjuk 8-as, 10-es vagy 16-os számrendszerben. Sztringek megadása esetén a záró \0 tag megadásáról nekünk kell gondoskodnunk.
adatok RCDATA
{
 "Szöveg\0",
 625,
 1542 
}
STRINGTABLE
Sztring táblázat.
STRINGTABLE [[opcionális_paraméterek]] { azonosító szöveg ...}
Opcionális paraméterek:
  • CHARACTERISTICS dword: Opcionális. A felhasználó által definiált információ az erőforrásról.
  • LANGUAGE language, sublanguage: Opcionális. Nyelv megadását teszi lehetővé.
  • VERSION dword: Opcionális. Az erőforrás verziója.
Azonosító: Egy szám, amely a szöveget azonosítja.
Szöveg: Tetszőleges szöveg, amely maximum 4097 karakter hosszú lehet. A sortörés létrehozásához a \012 speciális karaktersorozatot használhatjuk.
STRINGTABLE
{
  1,   "Első sor"
  2, "Második sor"
}
User-Defined
Felhasználó által definiált típus. Itt bármilyen típusnevet megadhatunk, ami még nem lefoglalt név.
azonosító típus állománynév
VERSIONINFO
Verzióval kapcsolatos információk.
azonosító VERSIONINFO információk  { kifejezés_blokk ...}
Azonosító: értékének mindig 1-nek kell lennie.
Információk:
  • FILEVERSION version: Az állomány verzióját azonosítja.
  • PRODUCTVERSION version: A termék verziószáma.
  • FILEFLAGSMASK fileflagsmask: Egy bináris maszk, amely megadja, hogy a FILEFLAGS-ben beállított értékek közül mely valós.
  • FILEFLAGS fileflags: Az állomány tulajdonságait tartalmazza. Értéke a következők kombinációja lehet: VS_FF_DEBUG, VS_FF_PATCHED, VS_FF_PRERELEASE, VS_FF_PRIVATEBUILD, VS_FF_SPECIALBUILD.
  • FILEOS fileos: Azt az operációs rendszert azonosítja, amelyre az állományt tervezték. Használható értékek: VOS_UNKNOWN, VOS_DOS, VOS_NT, VOS__WINDOWS16, VOS__WINDOWS32, VOS_DOS_WINDOWS16, VOS_DOS_WINDOWS32, VOS_NT_WINDOWS32.
  • FILETYPE filetype: Az állomány típusát határozza meg. Használható értékek: VFT_UNKNOWN, VFT_APP, VFT_DLL, VFT_DRV, VFT_FONT, VFT_VXD, VFT_STATIC_LIB.
  • FILESUBTYPE subtype: Az állomány funkcióját határozza meg.
  • Kifejezés_blokk: Egy vagy több verzióleíró blokkot tartalmazhat. A blokk lehet sztring- vagy változóblokk.
Ha elkészítettük az RC állományt, akkor a Delphi Bin alkönyvtárában található brcc32.exe program segítségével lefordíthatjuk azt egy RES kiterjesztésű erőforrás állománnyá.
brcc32.exe resoureces.rc
Ha a fordítás sikeresen megtörtént, akkor létrejön egy RES kiterjesztésű állomány, amely tartalmazza a megadott erőforrásokat. Ezt úgy tudjuk egy Delphi alkalmazásba vagy DLL-be befordítani, hogy az R fordítási direktíva után megadjuk a RES állomány nevét.
{$R resources.RES}
A mellékelt példaprogramban egy animált kurzorból készítettünk erőforrást.
Egy befordított erőforrást azonosításához ismernünk kell nevét és típusát. A mellékelt példában készítettünk egy függvényt, amely egy megadott erőforrást megkeres és TMemoryStream formájában eredményül ad.
function GetResource(rsName, rsType: String): TMemoryStream;
Egy erőforrást a FindResource függvény segítségével kereshetünk meg.
h:=FindResource(HInstance,PChar(rsName),PCHar(rsType));
Ha az erőforrás létezik, akkor a LoadResource függvénnyel lekérdezhetjük annak azonosítóját, a SizeOfResource függvénnyel pedig annak méretét.
r:=LoadResource(HInstance,h);
Si:=SizeOfResource(HInstance,r);
Létre kell hoznunk egy mutatót, amely a kiválasztott erőforrásra fog mutatni.
p:=LockResource(r);
Ezután az erőforrás tartalmát egy TMemoryStream segítségével, a függvény visszatérési értékeként átadhatjuk.
Stream:=TMemoryStream.Create;
Stream.Write(p^,Si);
Stream.Seek(0,soFromBeginning);
Result:=Stream;

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