|
|
A TForm osztály kiegészítése saját property-kkel
|
|
Példaprogram letöltése
19271 bájt
|
A TForm osztály alapesetben is rengeteg property-vel és eseménnyel rendelkezik, de ez korántsem az összes. Régebbi cikkeinkben mi is sokszor írtunk olyan eseményekről, amelyek ebbe az osztályba nem lettek implementálva, hanem nekünk kellett egy-egy eseménykezelő eljárást deklarálni hozzájuk. Ez eddig rendben is volna, de mi a helyzet akkor, ha hasonló tulajdonságokkal rendelkező Form-ot szeretnénk felhasználni. Ebben a cikkben két lehetőséget is mutatunk erre.
A Step1 példaprogram megnyitása előtt a tmpfrmreg.dpk-t telepítenie kell a Delphi alá.
Az első példában egy egyedi Form-ot használunk. Ez a TForm osztálytól annyiban fog különbözni, hogy lesz egy OnAfterShow eseménye, és egy Label komponenst helyezünk el a bal alsó sarkában. Az OnAfterShow esemény annyiban különbözik az OnShow eseménytől, hogy ez csak akkor jön létre, amikor a Form már ténylegesen látható a képernyőn.
Először is hozzunk létre egy új unit-ot, benne pedig egy osztályt a TForm osztályból származtatva. A megfelelő helyeken deklaráljuk az új property-ket és eljárásokat, tehát készítsük el az új Form osztályt. Ezt mentsük el TemplateForm.pas néven. Ezután hozzunk létre egy package-t: Component menü Install New Component menüpont. Váltsunk át az Into new package lapra, és a Unit file name mezőben adjuk meg a TemplateForm.pas unit-ot, a Package file name mezőben pedig a tmpfrm.dpk nevet (természetesen elérési útvonallal együtt). Ezután OK, majd az Options ablakban, a Description lapon, ezen belül pedig a Usage options mezőben a Runtime only-t adjuk meg. Ezután fordítsuk le a package-t a Compile gombbal.
Hozzunk létre egy új unit-ot, amiben csak egy Register eljárást készítünk. A unit-ban hivatkozzunk a DsgnIntf és a TemplateForm unit-okra:
uses DsgnIntf, TemplateForm;
A Register eljárásban regisztráljuk az új osztályt a RegisterCustomModule eljárással:
RegisterCustomModule(TTemplateForm, TCustomModule);
Mentsük el a unit-ot TemplateFormReg.pas néven, majd válasszuk a Component menü Install new component menüpontját. Itt is az Into new package lapot használjuk, a Unit file name mezőben a TemplateFormReg.pas-t, a Package file name mezőben pedig a tmpfrmreg.dpk nevet megadva (mindkettőt elérési útvonallal együtt). OK, majd a Requires elemnél adjuk meg az előbb létrehozott tmpfrm.dpk fájlt és a Compile gombbal fordítsuk le a package-t.
Ha ez is megvan, hozzunk létre egy új project-et. A unit1-ben a TForm1-et származtassuk az általunk elkészített TTemplateForm osztályból:
type
TForm1 = class(TTemplateForm)
...
A uses kulcsszó után hivatkozzunk a TemplateForm unit-ra. Mentsük el a módosításokat, és zárjuk be ezt a unit-ot. Ezután nyissuk meg újra (Shift+F12). Erre azért van szükség, mert hiába írjuk át a unit-ot, az Object Inspector nem követi a változásokat. Miután újra megnyitottuk a Form-ot az Object Inspector-ban megjelennek az általunk létrehozott események és property-k, valamint természetesen az esetlegesen létrehozott eljárásokat és függvényeket is használhatjuk.
A második módszer lényegesen egyszerűbb az előzőnél, és a használata is könnyebb. Hozzunk létre egy új project-et. A unit1-ben ugyanúgy, mintha komponenst fejlesztenénk, a megfelelő részeknél deklaráljunk property-ket, eljárásokat, stb. de tehetünk a Form-ra komponenseket is, illetve a meglévő property-ket is beállíthatjuk. Az osztályt nevezzük el tetszés szerint, és mentsük el a unit-ot.
Ezután kattintsunk jobb gombbal a Form-on, majd válasszuk az Add to repository menüpontot. A Title mezőben adjuk meg a Form címét. Ez tetszőleges lehet, de lehetőleg utaljon arra, hogy mire is való a Form. A Description mezőben egy rövid leírást adhatunk meg. A Page legördülő listából válasszuk a Forms elemet, az Author mezőben pedig megadhatjuk a készítő nevét. A Browse gombbal kiválaszthatunk egy ikont is, ami a New items ablakban ezt a Form-ot reprezentálja.
Ha mindent megadtunk, akkor kattintsunk az OK gombon.
Látszólag semmi nem történt, de válasszuk a File menü New menüpontját. Megjelenik a New items ablak, amiben a Forms lapot tegyük láthatóvá. Ha mindent jól csináltunk, akkor ebben megjelenik az általunk létrehozott Form. A felhasználásra három lehetőség közül választhatunk. A Copy egy másolatot csinál a unit-ról, tehát az általunk megadott forráskód is látszani fog az új unit-ban, így akár módosíthatjuk is azt. Az Inherit az új Form-ot az általunk létrehozott osztályból fogja származtatni. A harmadik változat a Use, ami viszont se nem másolat, se nem származtatott, hanem maga az eredeti unit. Ha ezt választjuk, akkor figyelnünk kell arra, hogy az ebben elvégzett módosítások hatással lehetnek az összes olyan alkalmazásra, amiben felhasználtuk ezt a Form-ot.
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 545. 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!
|