IV. VisPro/REXX

Bevezetô

Nagyon hasonlít a VX-REXX-hez a HockWare cég által kifejlesztett VisPro/REXX fejlesztôkörnyezet. Aki a VX-REXX-et már ismeri, annak a VisPro/REXX sem lesz különösebb meglepetés. Legalábbis az elején, ugyanis a felszín alatt azért sok különbséget is fel lehet fedezni. A VX-REXX-szel ellentétben a VisPro/REXX fejlesztése nem állt le az utóbbi években, és a lecke írásának pillanatában a 3.1-es verziónál jár. A termék 2000 állóságát a HockWare garantálja, így mindenki nyugodtan használja az ezzel az alkalmazással készített programokat az ezredforduló után is.

A 3.1-es verziónak két változata létezik. A bronz és egyben olcsóbb változatot az otthoni felhasználóknak szánták. Az arany változat elsôsorban a vállalati szférát veszi célba, mivel olyan extra funkciókat tartalmaz, amelyek elsôsorban a nagyfelhasználók számára lehetnek érdekes. Az én véleményem az, hogy ha lehet, akkor inkább az arany változattal ismerkedjünk meg. A VisPro/REXX-nek létezik a cég honlapjáról letölthetô próbaváltozata is, ez azonban annyira korlátozott, hogy ismerkedésen kívül gyakorlatilag semmire nem lehet használni.

Egy újabb példaprogram

Folytatjuk az elôzô leckék során már többször alkalmazott metodikát, és a VisPro/REXX környezet használatát is egy példaprogramon keresztül mutatjuk be. A példaprogram nagyon egyszerû lesz, ugyanis csak egy nyomógombból és egy szövegmezôbôl fog állni. A gomb megnyomására az általunk elôre beállított szöveg fog megjelenni a szövegmezôben.

A munkát itt is egy új project létrehozásával kell kezdeni. A VisPro/REXX telepítése után létrejövô gyûjtôben találunk egy Projects gyûjtôt, amely alapesetben egy Project mintát tartalmaz. A minta ledobásával hozhatunk létre új projecteket, amelyek nevét kedvünknek megfelelôen változtathatjuk meg. Minden project tartalmaz egy Main ikont, amelyre klikkantva elénk tárul a VisPro/REXX környezet VX-REXX-re kísértetiesen hasonlító felülete. A Main ikon többféle nézetben is megnyitható. Amennyiben elôször a jobb gombbal klikkantunk az ikonra, akkor az elôbukkanó Open as almenüben az alapértelmezés szerinti Layout (felületszerkesztési) mód mellett választhatjuk még a Settings (beállítások), Event tree (eseményrendszer) és List (objektumlista) módokat is. Ezekrôl a késôbbiekben még részletesen lesz szó.

[VisPro/REXX]
A VisPro/REXX fejlesztôkörnyezet

A fejlesztôkörnyezet bal oldalán helyezkedik el a rajztábla (Canvas), amelyen programunk felületét állíthatjuk össze. A jobb oldalon található a grafikus építôelemek (objektumok) készlete (Toolbar), amelyekbôl kedvünkre építkezhetünk. A készlet elemei nagyjából megfelelnek a VX-REXX-es környezet építôelemeinek, bár van egy-két olyan elem (Full Motion Video, Circular Slider), amelyek újdonságnak számítanak.

A példaprogram építését kezdjük a program címsorának a beállításával. Válasszuk a Form menübôl az Open, majd a Settings menüpontokat, s lapozzunk a General oldalra! A Title bar text mezôbe írjunk be egy a kedvünkre való szöveget, majd pedig zárjuk be a jegyzettömböt! A következô lépés a nyomógomb és a beviteli mezô objektumok létrehozása. Válasszuk ki az építôelemek közül a nyomógombot és hozzunk létre egyet a rajztábla bal oldalán! Nyomjuk le az ALT billentyût és klikkantsunk a gombra! Változtassuk meg a gomb szövegét mondjuk Do It-ra! Az építôelemek közül válasszuk ki a beviteli mezôt és hozzunk létre egyet a rajztábla jobb oldalán, lehetôleg a nyomógomb mellett! Ha minden jól megy, akkor a programunk felülete valahogy úgy fog kinézni, ahogy az az alábbi ábrán is látható:

[Példaprogram]
A példaprogram felülete

A fejlesztés következô lépése az eseménykódok megírása és hozzárendelése az objektumokhoz. Ebben az esetben azt akarjuk programunkkal elérni, hogy a nyomógomb megnyomására egy elôre megadott szöveg, pl. Hello World! jelenjen meg a szövegmezôben. Gondolom senkit sem fog meglepni, hogy a VisPro/REXX is képes a drag and drop programozásra. Ezt a módszert fogjuk mi is használni. Klikkantsunk a jobb egérgombbal a nyomógombra, és az elôbukkanó menübôl válasszuk a When, majd a Clicked menüpontokat! Ennek hatására meg fog jelenni egy szövegszerkesztô, amelyben már néhány elôre megadott kódsort is felfedezhetünk. Pozícionáljuk a szövegszerkesztôt és a rajztáblát oly módon, hogy mindkettô egyszerre látszódjon, majd vontassuk a beviteli mezôt a szövegszerkesztôre és dobjuk le az Arg window sor alatti területre! Ennek hatására egy újabb ablak fog megjelenni, amelyben a Set item value sort kell kiválasztani, mivel a szövegmezô értékét akarjuk beállítani. A mûveletsor eredményeként egy VpSetItemValue függvényhívás fog hozzáadódni a már elôredefiniált kódrészlethez. A VpSetItemValue függvényhívás utolsó paramétere tartalmazza a megjelenítendô szöveget, amelyet változtassunk például Hello World!-re.

[Create link]
A beállítandó paraméter megadása

Teszteljük alkalmazásunkat a Form -> Run menüpontok kiválasztásával. Ha mindent rendben elvégeztünk, akkor az alkalmazás gond nélkül futni fog és a nyomógombra bökve meg kell hogy jelenjen a fejlesztés közben megadott Hello World! szöveg:

[Hello World]
Egy sikeresen mûködô példaprogram

Formák és nézetek

A példaprogram kifejlesztése során már láthattuk, hogy a VisPro/REXX project készítésekor automatikusan létrejön a Main objektum (Form), amely tulajdonképpen a fôprogramnak felel meg. A Form minta segítségével újabb formákat (azaz ablakobjektumokat) hozhatunk létre, amelyeket aztán pl. a fôprogramból indíthatunk el. A lecke elején már említettük, hogy a Main objektumot négyféle nézetben nyithatjuk meg. Magától értetôdik, hogy ez a többi másodlagos formára is érvényes. A leggyakrabban használt és egyben alapértelmezett Layout (felületszerkesztési) mód mellett rendelkezésre áll még a Settings mód, ahol a formákra egyetemesen érvényes tulajdonságokat lehet beállítani. Sajnos nem tudunk az összes beállításra kitérni, azonban ki szeretnénk kiemelni közülük néhány érdekesebbet. Már használtuk a General oldalon található Title bar text mezôt, ahol a forma címét lehetett megadni. Ugyanezen az oldalon található az Icon file name mezô, ahol a formához rendelt ikont lehet beállítani. A következô, Style oldalon található Window list mezô tartalma szabja meg, hogy a forma futása közben milyen szöveg jelenjen meg a folyamatlistában. Ugyanitt lehet beállítani a már az elôzô leckében is ismertetett modális-mód nélküli ablakviselkedési tulajdonságot is. A következô oldal a Menü oldal, amely tulajdonképpen egyenértékû a VX-REXX menüszerkesztôjével. A Variabel oldalon lehetôség van az összes forma számára elérhetô globális változók definiálására. A következô Timer oldalon be lehet állítani, hogy bizonyos kódrészletek (pl. adatbázis elmentése) rendszeresen, elôre megadott idôtartamonként lefussanak.

[Menü]
A menük elkészítése

Röviden kitérünk a másik két nézetre is. Az Event tree view (eseményrendszer) nézet kiváló áttekintést ad a már létrehozott objektumokról és a hozzájuk tartozó eseménykódokról. Az ablak bal oldalán láthatóak ugyanis az objektumok a hozzájuk csatolt eseményekkel, a jobb oldalon pedig az éppen kiválasztott eseményhez tartozó kódrészlet. A List (objektumlista) nézet elsôsorban arra alkalmas, hogy áttekintsük a formához tartozó objektumokat és azok beállításait.

Szintén a project gyûjtôben, a formák mellett találjuk még a VpBackup gyûjtôt. Ez a nagyon hasznos kiegészítés, amelyet VisPro Team Administrator névre kereszteltek a 3.0-ás verzió arany kiadásában került bemutatásra. A Team Administrator alapötlete az, hogy megkönnyítsék a szoftverfejlesztôk együttmûködését a kódon végzett változtatások rendezett elmentésével. A fejlesztôkörnyezet ugyanis mindig elmenti a fejlesztett program régebbi verzióit a VpBackup gyûjtôben és a változtatásokat adminisztrálja a LOG.VPL fájlban. Ha erre a fájlra klikkantunk, akkor elindul a Team Administrator, amelynek ablakában láthatjuk, hogy ki, mikor és milyen változtatásokat végzett. A csapatmunkát segíti a formaárnyék objektum is, amely segítségével más hálózati gépeken elhelyezkedô formákat jeleníthetünk meg gépünkön. Íly módon lehetôség van arra, hogy fizikailag nem egy helyen elhelyezkedô fejlesztôk is együtt dolgozhassanak. Természetesen a fejlesztôkörnyezet ügyel arra, hogy egy idôben csak egy fejlesztô dolgozhasson egy adott formán.

Az eseményszerkesztô

Ugyancsak a példaprogram készítése során találkoztunk már az eseményszerkesztôvel (Event editor) is, amelyben az objektumok viselkedését (eseményekre való reagálását) programoztuk be. Láttuk, hogy az eseményszerkesztô automatikusan elindult, amikor a When almenüjében kiválasztottunk egy eseményt. Az eseményszerkesztô elsô sora minden esetben egy kommentet tartalmaz, amely az adott eseménnyel kapcsolatos. Ezt a sort semmiképpen se változtassuk meg! A második sor mindig valamilyen ARG WINDOW xxxxx konstrukciót tartalmaz, amely az esemény feldolgozásához szükséges változók kezdeti értékeit állítja be. A WINDOW paraméter tartalmazza az eseményt kiváltó ablak/forma azonosítóját. A WINDOW-t követô változók eseményfüggôek. Ezt a sort sem szabad módosítani! Az ez után következô sorok viszont már a saját tevékenységünk eredménye. Az elôzôekben láttuk, hogy pl. drag and drop programozással is lehet fejleszteni, amennyiben nem ismernénk a VisPro függvények szintaktikáját. Ha viszont rendelkezünk ezzel az ismerettel, akkor természetesen közvetlenül is szerkeszthetjük a kódot, vagy igény esetén más programokból is másolhatunk át részleteket. Érdemes észben tartani, hogy az Edit -> Add almenüben nagyon sok elôre definiált kódrészletet lehet találni, amelyeket igény esetén egyetlen klikkantással illeszthetünk be programunkba. Feltétlenül meg kell még említeni a Load Resource almenüpontokat, amelyek segítségével az elôzetesen a resource fájlban megadott ikonokat vagy bitmap képeket lehet betölteni. A resource fájlt elvileg bármilyen szövegszerkesztôvel elôállíthatjuk, vagy használhatjuk a csomagban található szerkesztôt (RESOURCE.VPR) is.

[Event Editor]
Az egyik esemény lekezelése

A hibakeresô

Mi sem természetesebb, mint hogy ebben az alkalmazásban is van hibakeresô komponens, amelyet a Form -> Test menüpontokon keresztül lehet elindítani. A hibakeresô bal oldali részén megtaláljuk az összes, a projectban használt formát. A jobb oldal az éppen kiválasztott formához tartozó objektumokat mutatja hierarchikus rendben. Az elsô forma a listában (SUB-PROCEDURES) egy speciális forma, amely kiválasztása esetén a jobb oldali ablakban megjelennek a projectban található szubrutinok. A Run almenüjében található parancsokkal a hibakereséshez leginkább megfelelô módon (pl. léptetve) hajtathatjuk végre a programot. A Window menü alatti pontok segítségével lehet az ellenôrzött futtatás közben összegyûjtött adatokat megtekinteni és kiértékelni.

[Debugger]
Hol bujkálnak a hibák?


REXX GYÍK:

K1. Mit jelent a VisPro/REXX-ben található Database Designer?
V1. A Database Designer funkció segítségével client/server alkalmazásokat lehet készíteni. Egy ilyen alkalmazással elérhetô az, hogy egyszerû drag and drop mûvelettel kommunikáljunk adatbázisokkal.

K2. A VX-REXX programok futtatásához szükség volt a VROBJ.DLL-re. Van-e szükség valamilyen DLL-re a VisPro/REXX Form -> Build menüpontjával készített EXE fájlok futtatására?
V2. Attól függ. A Self contained opcióval készített EXE-k futtatásához nem, a Small opcióval készítettekéhez viszont szükség van a csomagban található kb. 200Kb-os VPREXX.DLL-re is.


Gyakorlatok:

1. Minden project gyûjtôben található egy SubProcs és egy Threads gyûjtô is. Ezek arra valóak, hogy közösen használt kódrészleteket, vagy szálak kódját tároljuk el bennük, amelyeket aztán a készített program bármelyik részébôl meghívhatunk. A termékkel adott példaprogramok (Samples) között találunk egy olyat is, amely a szálak használatával foglalkozik (Multithreaded). Hámozzuk ki, hogy hogyan kell VisPro/REXX alatt szálakat használni!

Kádár Zsolt
1999. 10. 31.
[ Elôzô lecke | Következô lecke | Tartalom ]