
A mellékelt példaprogramok használata előtt, az egyes alkönyvtárakban található Package1.dpk állományok tartalmát telepítenie kell a Delphi alá. Ehhez nyissa meg Delphi-ből az adott állományt, majd válassza az Install opciót. Minden példaprogram használatához a saját könyvtárában található dpk állomány telepítése szükséges. Mielőtt telepítené az újabb dpk állományt, távolítsa el az előzőt.
(A Sample1 könyvtárban lévő példaprogram nem fog működni.)
A Borland cég úgy döntött, hogy a DsgnIntf.dcu állomány nem kerül bele a Delphi 5-be. A unit a property-editor-ok szerkesztési időben használható kódját tartalmazta. A Borland ezt a lépést azzal indokolta, hogy az új komponens varázsló létrehozza az új komponens vázának kódját, ami futási idejű, valamint elkészíti magát a Register eljárást is, amely viszont fejlesztési idejű kód.
A Delphi 6 megjelenésével a Borland egy újabb változtatást hajtott végre. A DsgnIntf.pas unit-ot átnevezték DesignIntf-re, valamint a property-editor-okat szétdarabolták különálló unit-okká: DesignEditors, DesignMenus, DesignWindows, stb. Ezeknek az állományoknak a tartalma csak fejlesztési időben használható.
Kétségtelen, hogy ezek a változtatások fordítási hibák formájában köszönnek vissza, akkor is ha egy régebbi Delphi verzióval készült kódot akarunk újra fordítani, vagy ha egy újat készítünk és a unitban keverjük a futási és fordítási idejű kódokat.
A Sample1 példában létrehoztunk egy komponenst. A TMemo osztályt kibővítettük egy FileName tulajdonsággal, amelynek ha beállítjuk az értékét, a komponens betölti a megadott állomány tartalmát. Ehhez elkészítettünk egy property-editor-t is, amely segítségével fejlesztési időben nyithatunk meg TXT állományokat. A megnyitott TXT állomány tartalma bekerül a Memo tartalmába.
A komponens és a komponens szerkesztő kódját ugyanabban a unit-ban helyeztük el. Létrehoztunk egy telepítő csomagot a komponenshez, Package1.dpk néven. Amikor lefordítjuk és telepítjük a csomagot, a Delphi semmilyen hibaüzenetet nem ad, mindent tökéletesnek talál.
Amikor azonban a komponenst fel akarjuk használni (mellékelt példaprogram), fejlesztési időben minden tökéletesen működik, de amikor futtatni akarjuk programunkat, a Delphi hiányolja a DsgnIntF.dcu-t.
Az alábbiakban ennek a problémának keressük a megoldását.
A problémát az okozza, hogy összekevertük a futási és a fejlesztési idejű kódokat. Ha ezeket elkülönítjük egymástól, akkor 99,99 %-ban biztos, hogy a problémát meg tudjuk oldani.
Nézzük meg, hogy mik tartoznak a futási és a fejlesztési idejű kódok közé.
Futási idejű kód
- Maga a komponens
- Olyan Form-ok, amelyekre a komponensnek futási időben szüksége van, és amelyeket használ.
Fejlesztési idejű kód
- A regisztrációs kifejezések. Register eljárások.
- Az összes property-editor.
- Az összes component-editor.
- Az összes Package állomány.
Kavarodást a komponens által használt Form-ok okozhatnak. Ha a Form futási időben áll rendelkezésre, akkor a futási idejű csomagba soroljuk, ha fejlesztési időben áll rendelkezésre, akkor a fejlesztési csomagba soroljuk. Nagyon gyakori tévedés, hogy maga a Form a szerkesztő, de nem az. A property-editor az, ami meghívja a Form-ot.
A problémára az a lehetséges megoldás, hogy elkülönítjük egymástól a futási és a fejlesztési idejű kódokat, és külön unit-okban helyezzük el azokat. Fontos megjegyezni, hogy maga a komponens és a hozzá tartozó szerkesztők különálló dolgok. A komponensnek nem kell ismernie a hozzá tartozó szerkesztőket.
A szétválasztást a legegyszerűbb úgy elvégeznünk, hogy a komponensek kódját elhelyezzük egy unit-ban, majd egy teljesen különálló unit-ba tesszük azokat a kódokat, amelyek használják a DesignIntF és DesignEditors állományokat.
Amikor létrehozzuk a komponenst telepítő Package állományt, a Delphi 6-os verziójától kezdődően még egy lépést meg kell tennünk. Amikor létrejön a Package állomány, a Requires feliraton kattintsunk az egér jobb gombjával. A megjelenő menüben válasszuk az Add menüpontot. Megnyílik egy újabb ablak, ahol lehetőségünk van állományokat tallózni. Keressük meg a Delphi Lib alkönyvtárában található DesignIDE.dcp állományt, majd adjuk hozzá a Package állományhoz.
A szétbontás eredményét a Sample2 példaprogram tartalmazza.

Mielőtt telepítené a Sample2 könyvtárban található Package1.dpk állományt, távolítsa el az előzőt. Ehhez válassza a Component – Install packages menüpontot. A Package1 elérési útja alapján került bejegyzésre. Válassza ki a listában, majd kattintson a Remove feliratú gombra.
A Sample2 példaprogram már hiba nélkül futtatható.