HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Magyar kártya komponens készítése


Példaprogram letöltése

1628549 bájt

Készítünk egy komponenst, amely segítségével megjeleníthetjük a képernyőn a magyar kártyában szereplő lapokat. Mindegyik lapról lekérdezhetjük annak nevét és értékét. A komponenst felhasználhatjuk arra, hogy különböző kártyajátékokat készítsünk. A mellékelt példaprogramban egy leegyszerűsített huszonegy játékot készítettünk.

A mellékelt példaprogram megnyitása előtt a HungarianCard.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens használata
Amikor elhelyezzük a komponenst egy Form-on, a CardIndex tulajdonság beállításával választhatjuk ki, hogy melyik lapot jelenítse meg a pakliból. A magyar kártyában 32 lap található, ennek megfelelően a tulajdonság értéke is 1-32 intervallumban mozoghat. A kártyák színenként csoportosítva, növekvő sorrendben helyezkednek el.
Az 1-es index a piros alsóé, 2-es a piros felső. A színek sorrendje: piros, zöld, tök és makk. Ennek megfelelően, például a 29-es index a makk nyolcast azonosítja.
Amikor a CardIndex tulajdonság alapján kiválasztunk egy kártyát, a CardName tulajdonságban megjelenik a lapnak a neve, a CardValue-ban pedig a lap értéke. Minden egyes alkalommal, amikor a CardIndex tulajdonságot módosítjuk, a CardName-be és CardValue-ba az alapértelmezett értékek kerülnek. A lapok betöltődése után ezeket az értékeket akár módosíthatjuk is.
A komponens rendelkezik az OnClick, OnDblClick, OnMouseDown, OnMouseMove és az OnMouseUp eseményekkel.
A komponens elkészítése
Először valamilyen formában elő kell állítanunk a kártyalapok képeit. Ezt megtehetjük, mondjuk egy scanner segítségével. A képeket célszerű BMP formátumban elmenteni, a könnyebb alkalmazhatóság miatt.
A képekből erőforrás állományt kell készítenünk, hogy azokat befordíthassuk az exe fájlba. Ha így teszünk, akkor nem kell a képeket is lemásolnunk a program mellé.
Az erőforrás állomány létrehozásához a BMP képeket másoljuk egy könyvtárba. Hozzunk létre egy bmp.rc állományt, ugyanabban a könyvtárban, ahová a képeket helyeztük. Ezt bármilyen szövegszerkesztő programmal megtehetjük. Minden egyes képhez az RC állományban el kell helyeznünk egy sort.
BMP1 RCDATA 01.BMP
Amikor majd fordítás után létrejön az erőforrás állomány, és azt beépítjük az alkalmazásunkba, a 01.BMP nevű képre, BMP1 néven hivatkozhatunk majd. A 01.BMP az első lapot ábrázoló kép jelenlegi, fizikai neve. Az RCDATA kulcsszó a létrejövő erőforrás típusát határozza meg. A képeket célszerű valamilyen logika alapján sorba rendezni.
Ha megszerkesztettük az RC állományt, akkor nincs más hátra, minthogy lefordítsuk azt. Ezt a Delphi, Bin alkönyvtárában található a BRCC32.exe program segítségével tehetjük meg. A BRCC32.exe-nek az RC állomány elérési útját és nevét kell paraméterként megadni.
Ha a fordítás sikeresen lezajlott, létrejön a BMP.res, erőforrás állomány, amelyet beépíthetünk az exe-be. Az erőforrás állományt másoljuk ugyanabba a könyvtárba, ahová a komponens forráskódját helyezzük.
Komponensünket a TGraphicControl osztályból származtatjuk. Az erőforrás használatához az implementation kulcsszó után el kell helyeznünk az alábbi sort:
{$R bmp.res}
A komponens Create metódusában célszerű az erőforrás tartalmát egy ImageList objektumba felfűzni, a későbbi gyors használhatóság érdekében.
Egy erőforrást a FindResource függvény segítségével kereshetünk meg.
Res:=FindResource(HInstance,PChar('BMP'+IntToStr(i)),RT_RCDATA);
Ha az erőforrás létezik, akkor a SizeofResource függvénnyel lekérdezhetjük annak méretét, a LoadResource függvénnyel pedig az azonosítóját.
Si:=SizeOfResource(HInstance,Res);
Res:=LoadResource(HInstance,Res);
Létre kell hoznunk egy mutatót, amely a kiválasztott erőforrásra (képre) fog mutatni.
p:=LockResource(Res);
Miután a LockResource függvénnyel azonosítottuk az erőforrást, azaz az adott képet, azt be tudjuk tölteni egy TMemoryStream típusú objektumba. Ebből a MemoryStream-ből be tudjuk tölteni a képet egy TBitmap objektumba, a LoadFromStream metódus segítségével.
BMP.LoadFromStream(MS);
A BMP képet el kell helyeznünk az FImageList objektumban, és a továbbiakban csak az ImageList megfelelő indexére kell hivatkoznunk.
A CardIndex tulajdonsággal kiválasztott képet a Paint metódusban tudjuk megjeleníteni. Ehhez a TCanvas osztály StretchDraw metódusát használhatjuk.
Canvas.StretchDraw(Rect(0,0,Width,Height),Bitmap);
A metódus egy megadott területre, „kifeszíti” a képet.
A CardIndex property értékének beállítására szolgáló SetCardIndex metódusban kell gondoskodnunk arról, hogy a CardName és a CardValue tulajdonságok megfelelő értékeket kapjanak, amikor a CardIndex értéke módosul.
A komponensben használni kívánt eseményeket csak fel kell sorolnunk a published deklarációban, hiszen azokat közvetve örököltük a TControl osztályból.

Cikksorozat

#IDKategóriaCikk címeSorozat
1621DelphiMySQL szerverek elérése Delphi-ből1. rész
1632DelphiMySQL szerverek elérése Delphi-ből2. rész
1641DelphiMySQL szerverek elérése Delphi-ből3. rész
1649DelphiMySQL szerverek elérése Delphi-ből4. rész


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