FoxPro alkalmazásfejlesztő segédeszközei
Az alkalmazásfejlesztő segédeszközök alatt a 4GL rendszerek részének
tekintett szerkesztőket értjük, melyek segítségével gyorsabban, rugalmasabban
és egyszerűbben elvégezhető a programozás folyamata. A FoxPreo
alkalmazások rendszerint több komponensből, mint több képernyőprogram,
jelentés vagy lekérdezés, stb. állnak. E komponensek integrálása,
adminisztrációja is nagy körültekintést igényel, ezért ennek elvégzésében is
segít a FoxPro rendszer. A FoxPro-ban bevezették a PROJECT fogalmát, amely
egy olyan mechanizmust jelent, amellyel könnyen, automatizáltan
nyilvántartaható az alkalmazás komponensei, s megkönnyíthető az alkalamzás
elkészítésének menete.
A projekt foglalja össze az alkalmazás különböző elemeit, melyeket más-más
szerkesztővel hoztunk létre a fejletszés során. A projekt elemeit mutatja be a
következő ábra.
A projekt használatának előnyei:
- nyilvántartja a komponenseket, azok azonosítóit, elhelyezkedésüket,
szerepüket.
- megkönnyíti az egyes komponensek elérését
- hatékonyabbá teszi a generált programkódok tárolását és elérését
- az alkalmazás fejlesztésekor automatikusan felépíti az alkalmazást,
megkeresve a komponenseket és elvégezve a szükséges fordításokat,
generálásokat
- nyilvántartja az egyes komponensek aktualitását, azaz figyeli azok elkészítési
dátumát, s szükség esetén újra elvégzi az alkalmazás generálását; ez a funkció
hasonlít a make segédprogramhoz szerepéhez
- könnyen és egyszerűen elvégezhető az EXE állomány létrehozása, az
installációs diszkek felépítése
- meghatározza az egyes komponensek közötti kapcsolatokat, s az alkalmazás
generálásakor automatikusan megkeresi a hivatkozott elemeket és beépíti őket.
A következőkben előbb sorra vesszük az egyes komponensek előállításának, az
egyes szerkesztők működésének módját, majd ezután a projekt létrehozását és
alkalmazását mutatjuk be.
Képernyő szerkesztő
A képernyő szerkesztővel hozhatunk létre képernyőn futó,a felhasználóval futó
programelemeket. Az így létrehozott program alkalmas adatok bevitelére és az
adatok módosítására is.
A képernyő szerkesztő (SCREEN BUILDER) a FILE főmenüponton keresztül
hívható meg. Új program létrehozása esetén a NEW menüpontot kell
aktualizálni, majd itt az objektum tipusaként a SCREEN tipust kell kiválasztani.
Ezután a NEW nyomógomb megnyomásával meghívódik a képernyő
szerkesztő program, melyen bejelentkező ablakát a következő ábra mutatja.
Az ablak baloldalán elhelyezkedő eszközkészlet-oszlop mutatja a képernyőn
elhelyezhető objektumok listáját. Az objektumokhoz kapcsolódik egy grafikai
megjelenés, de emellett egy procedurális rész is tartozik hozzá, mellyel az
objektum viselkedését írhatjuk elő. Az objektum paramétereit, procedurális
elemeit egy megjelenő dialógus ablakban adhatjuk meg.
A rendelekézsre álló objektumtipus-ikonok listája fentről lefelé rendre a
következőket jelentik:
- objektum kiválasztási üzemmód (nyíl), ekkor a már letett objektumokat
jelölhetjük ki a paramétereinek módosítása céljából
- szöveg (A betű): szövegkonstansok lehelyezésére szolgál
- adatmező (field): elemi adat bevitelére vagy kiírására szolgáló objektum
- szerkesztő mező (edit region): hosszabb, többsoros szövegek szerkesztésére
szolgál
- nyomógomb (push button) : a felhasználó rákattintással aktivizálhatja
- kiválasztó kör (radio button): több, logikailag összetartozó kör közül mindíg
csak egy lehet kiválasztva, egy változó lehetséges értékeinek kiválasztására és
kijelölésére szolgál
- kapcsoló (check box): egy logikai tipusú, kétállapotú változó beállítására,
kijelzésére szolgál
- feltáruló lista (popup): a jobboldali nyilra rákattintva a legrödülő listából
választhatunk ki értéket; alapesetben az aktuális értéket olvasható a négyzetben
- lista (list): nyitott lista, amelyben mindvégig látható a kiválasztható értékek
felsorolása
- méretbeállító (spiner): a fel-le mutató háromszögre kattintva a beírt érték
növekszik, illetve csökken
- vonal (line): vízszintes vagy függőleges vonalak rajzolását teszi lehetővé
- téglalap (rectangle): téglalap rajzolása
- lekerekített téglalap (rounded rectangle): sarkaiban lekerekített téglalap
rajzolása
- kép (picture): kép, ikon beillesztése
Az objektumok elhelyezése úgy történik, hogy előbb kiejlöljük az objektum
tipust a listából az egérgomb lenyomásával, majd a lenyomott billentyűvel
átmozgunk arra a képernyőpozicióra, ahová le kívánjuk helyezni az
objektumot. A megfefelő poziciónál felengedjük a billentyűt (drag and drop
technika).
Az egyes objektumtipusok eltérő paramétereket igényelnek, így mindegyik
esetben más és más lesz a lehelyezéskor kinyíló paraméterezési ablak.
Szöveg
Szöveg lehelyezése esetén nem jelenikmeg külön paraméter ablak. A kijelölt
helyre közvetlenül beírható a szöveg. A szöveg később áthelyezhető a
kiválasztása után. A szöveg megjelenési paramétereit a menürendszeren
keresztül válatoztathatjuk meg. A szöveg kijelölése után a főmenü OBJECT
menüpontjához tartozó almenü szolgál az objektumok megjelenésének
beállítására. A kinyíló almenü az alábbi pontokból áll:
- Align to Grid: illesztés az ablakra helyezett rácspontokhoz
- Bring to Front: objektum előtérbe hoztala
- Send to Back: objektum visszahelyezése háttérbe
- Center: objektum középre igazítása vízszintes irányban
- Group: objektumok csoportba szervezése egy mindegyiket érintő, együttes
tevékenység elvégézéshez
- Ungoup: objektumcsoport felbontása
- Font: betűtipus megválasztása
- Text Alingment: szöveg illesztése az objektumon belül
- Fill: obejktum kitöltési minta meghatározása
- Pen: vonal rajzoláshoz a vonal tipusának meghatározása
- Mode: objektum beállítása átlátszóra vagy tömörre
- Fill Color: kitöltési szín beállítás
- Pen Color: obejktum rajzolási szín beállítás
Az OBJECT menüponthoz tartozó tevékenységsor nemcsak a szöveg tipus
esetén, hanem bármilyen más objektumtipus esetén is alkalmazható.
Adatmező
Adatmező esetén az alábbi paraméterablak jelenik meg az objektum
definiálásakor:
A FIELD csoportban kell megadni, hogy a mezőt csak adatkijelzésre
(OUTPUT) vagy beolvasásra (INPUT) is használni kívánjuk.
Az OPTION csoportban elhelyezkedő opciók jelentése a következő:
- Select Field on Entry: kijelölése esetén a mező automatikusan kiválasztódik,
ha a kurzorral ráállunk
- Refresh Output Field: kijelölése esetén az adatkijelzésre használt mezők
automatikusan frissítődnek, ha a program kiad egy frissítési utasítást (SHOW
GETS)
- Initially Disable Field: kijelölése esetén a mező blokkolt a program
indulásakor, s a programnak ki kell adnia egy aktivizálási,engedélyezési
parancsot mielőtt dolgozhatnánk vele
A RANGE csoportban lehet kijelölni az mezőhöz tartozó adatelem
megengedett minimális (Lower) és maximális (Upper) értékét
Az INPUT paraméternél az adatmezőhöz tartozó adatelemet jelölhetjük ki. Az
adatelem lehet egy mező, attributum a megnyitott adattáblákból, illetve lehet
memóriaváltozó is. A adattábla mező illetve memóriaváltozó megadása egy
kinyíló dialógus ablakban lehetséges közvetlen megnevezéssel vagy
kiválasztással.
A FORMAT paraméternél lehet az adatérték kijelzésének formátumát
meghatározni.
A CLAUSES csoportban az adatbeviteli mező viselkedését leíró procedurális
elemek definiálhatók. A következő kódelemek hozhatók létre:
- WHEN : az itt megadott kódrészlet akkor hajtódik végre mikor az objektumot
aktivizálni akarjuk. Előbb lefut a WHEN kódrészlet,majd annak eredményétől
függ, hogy az objektumot engedi-e a rendszer kiválasztani vagy sem. Ha a
kódrészlet, mint függvény a logikai hamis (.F.) értékkel tér vissza, akkor nem
választható ki az objektum, ha pedig az igaz értéket eredményezi (.T.), akkor
megengedett az objektum kiválasztása. A WHEN nyomógombbal lehet a
kódrészlet megadására szolgáló szerkesztő ablakot behívni.
Az ábrán megadott példában akkor megengedett csak az objektum (amely lehet
adatmező, de lehet bármely más mező is, mint például nyomógomb, mint azt
később látni fogjuk) kiválasztása, ha az aktuális dátum kisebb 1991 január
elsejétől. Mint látható a kódrészletet a FoxPro saját programozási nyelvében
kell megadni. Ez a nyelv, mint már mondtunk a dBase III nyelvével igen szoros
rokonságot mutat. A bemutatot kódrészlet az IF vezérlési szerkezettel és a
függvényekkel együtt változtatás nélkül alkalmazható dBase III programokban
is.
- VALID: az itt megadott kódrészlet akkor hajtódik végre, ha el akarjuk hagyni
az objektumot. A kódrészlet itt is igaz vagy hamis értékkel térhet vissza. Ha a
visszatérési érték igaz, akkor a felhasználó elhagyhatja az objektumot, ha pedig
hamis a visszatlérsi érték, akkor a felhasználó még nem hagyhatja el az
objektumot. A VALID kódrészletet rendszerint érték ellenőrzésre szokás
használni. A kódrészlet megadása hasonló módon történik, mint ahogy a
WHEN kódrészletnél történt.
- MESSAGE: Itt egy kifejezést vagy egy kifejezést eredményező eljárást lehet
megadni. A megadott kifejezés kiíródik a képernyő lján húzódó státuszsorba, ha
az objektum kiválasztásra kerül. Ez a kódrészlet tulajdonképpen egy
tájékoztatási üzenet megadásahoz használható fel.
- ERROR: Ide azon kifejezést vagy eljárást kell megadni, ami akkor fog
végrehajtódni, ha a VALID-ban megadott kódrészlet hamis értékkel térne
vissza.
- COMMENT: megjegyzés az objektumhoz kapcsolódóan, a programkódra
nincs hatással.
Szerkesztő mező
A paraméterablak sok közös elemet tartalmaz az adatmezőhöz tartozó dialógus
ablakkal. Három új elem fedezhető fel rajta:
- Scroll Bar on Edit Region: engedélyezni lehet a szerkesztési ablak oldalánál
egy görgető oszlopot a szövegben való gyorsabb mozgás érdekében
- Allow Tabs in Edit Region: ha engedélyezett, akkor a tabulátor billentyű a
szövegben történő mozgásra használható, ellenkező esetben a következő
objektumra történő ugrásra szolgál.
- Character length: a mezőben szerkeszthető karakterlánc hosszát lehet
beállítani.
Nyomógomb
A nyomógomb tipus kiválasztásakor egy vagy több elemből álló nyomógomb
csoportot lehet lehelyzeni a képernyőre. A megjelenő paraméterablakban
beállíthatjuk a kódrészletek mellett a láthatóságot, feliratot, .stb.
A TYPE csoportban a nyomógomb tipusát állíthatjuk be. Az alábbi tipusok
léteznek:
- NORMAL: szöveggel ellátott normál, megszokott nyomógomb (mint pld. a
Variable feliratú az előző ábrán).
- INVISBLE: a felhasználó által nem látható, rejtett nyomógomb, melyet a
képernyő valamely téglalap alakú szeletére fektethetünk le. Ha a felhasználó
erre a szeletre kattint, akkor a nyomógomb aktivizálódik
- PICTURE: a nyomógompot egy BMP kép jelzi
A PUSH BUTTON PROMPT listában megadhatók a normál nyomógombok
esetén a nyomógombokon megjelenő szövegek. A lista minden sora egy
nyomógombnak felel meg.
A VARIABLE paraméter egy változót jelöl ki a nyomógomb csoporthoz.
Megadása kötelező. A nyomógombok aktivizálása esetén ez a változó fogja
jelezni, hogy a csoportból mely tagja, mely nyomógomb került kiválasztásra.
Ha a változó numerikus tipusú, akkor egy sorszám jelzi a nyomógombot
(hanyadik elemről van szó PUSH BUTTON PROPMTS listában), ha pedig
szöveges akkor a kiválasztott nyomógomb felirata kerül át a változóba.
Az OPTION csoportból a VERTICAL és HORIZONTAL jelzi, hogy
függőlegesen vagy vízszintesen helyezzük el a nyomógomb csoport elemeit a
képernyőn. Az INITIALLY DISABLE beállításával elérhető, hogya program
indulásakor ne éljen a nyomógomb. A TERINATE READ ON SELECTION
kiválasztása azt eredményezi, hogy a nyomógomb egy kilépési, Exit
nyomógombként szerepel, mivel a rákattintásakor a beolvasási ciklus,s maga a
program is leáll. A SPACE BETWEEN BUTTONS segítségével megadható,
hogy milyen távol helyezkedjenek el egymástól a nyomógomb csoport tagjai.
Kiválasztó kör
A kiválasztó kör hasnoló paraméterekkel rendelkezik, mint a nyomógomb.
Egyetlen egy új leme van rajta, az INITIAL paraméter. Ennek célja, hogy
beállítsuk, mely kör lesz kiválasztva a program elején, induláskor.
Kapcsoló
A kapcsolóban található paraméterek mind előfordultak a korábbi
objektumoknál is, így ezekre most nem térünk ki.
Feltáruló lista
A feltároló lista paraméter ablakát a következő ábra mutatja be.
Az OPTION csoportban lehet beállítani, hogy milyen tipusú feltáruló listáról is
van szó. Két listatipus létezik:
- LIST POPUP: olyan feltárulú lista, melyben az értékek egy rögzített listából
jönnek. A listában előforduló értékeket is ebben az ablakban kell megadni a
POPUP PROPMTS területen. Ennek minden sora egy kiválasztható értékként
fog megjelenni az feltáruló listában.
- ARRAY POPUP: a feltáruló listában szereplő értékek egy tömbből jönnek.
Ebben az esetben a 1ST ELEMENT paraméter megadja, hogy a tömb melyik
eleme legyen az első kijelzett elem, míg a #ELEMENTS paraméter a kivett
tömbelemek darabszámát határozza meg.
Itt meg kell állnunk egy kicsit, hiszen egy új elem jelent meg a színen, a tömb.
Ugyan a tömb foglama ismerős a hagyományso 3GL nyelvekből, de a dBase III
rendszerben nem állt rendelkezésre tömb, csak skalár tipusú memóriaváltozókat
lehett használni. A FoxPro egyik fontos új eleme, hogy itt már lehet tömböket
értelmezni a memóriváltozóknál.
A tömb foglama azonban itt egy kicsit mást fog jelenteni, mint a hagyományos
értelmezésben. A tömb jelentése a Clipper-ben meglévő definícióra hasonlít,
amely szerint a tömb elemeinek nem feltétlenül kell azonos tipusúaknak
lenniük. A tömb különböző elemei tetszőleges tipusúak is lehetnek. A tömbök
definiálásról a későbbiekben, a programozási nyelv ismertetésekor bővebben
fogunk szólni.
A listákesetében a megadott változó a listából történő kilépés után a kiválasztott
listaelem azonosítóját fogja tartalmazni, amely a nyomógombnál leírtakhoz
hasonlóan vagy egy sorszám, vagy a listelem szövege.
Lista
A lista elemit több forrásból is származtathatjuk. Az alábbi lehetőségek állnak
rendelkezésre:
- FROM ARRAY: tömb elemit hozzuk be a listába
- FROM POPUP: egy létező feltáruló listában megadott szövegelemeket,
listalemeket vesszük át.
- FROM FILES: a lemezen található directory struktúrát, alemezen lévő
állományok azonosítóit hozza be a listába
- FROM FIELD: Egy adattábla valamely mezőjéhez tartozó értékek kerülnek
be a listába. Minden adatrekord rekord ad egy értéket.
- FROM DBF STRUCTURE: adattáblák szerkezete kerül kijelsére a listában
A TERMINATE WHEN CHOICE IS MADE beállítása esetén a listából történő
választás egyben lezárja a Read ciklust is, ami rendszerint a program
befejezését is eredményezi.
Méretbeállító
A paraméterablakban az alábbi egyedi paraméterek határozhatók meg:
- DISPLAY MINIMUM: a legkisebb kijelzett érték
- DISPLAY MAXIMUM: a legnagyobb kijelzett érték
- DISPLAY INCREMENTS BY: a kijelzési érték léptetési értéke
- RANGE LOWER: a legkisebb bevihető érték
- RANGE UPPER: a legnagyobb bevihető érték
Vonalak, Négyzetek
Nincs külön paraméterbeállító ablak, a szokásos módon, az egér segítségével
jelölhető ki a vonal vagy téglalap poziciója és mérete.
Kép
A képnél a paraméterablakban a képállomány helyét és bizonyos viselkedési
elmeket lehet leírni.
A PICTURE FROM csoportban adható meg, hogy a kép adattábla mezőből
(FIELD), vagy külön állományból (FILE) jön-e.
A REFRESH OUTPUT beállításával elérhető, hogy a kép tartalma a
képernyőfrissétéssel együtt aktualizálódjon. A CENTER PICTURE
kiválasztásával a kép a rendelkezésre álló terület közepére kerül.
Az IF PICTURE AND FRAME DIFFERENT SIZE csoportban kijelölhetjük,
hogy mi történjen akkor, ha a kép nagyobb mint a rendelekzésre álló terület. A
CLIP PICTURE esetén a kívüleső részek levágásra kerülnek, a kép marad
eredeti méretében. A SCALE PICTURE RETAIN SHAPE esetén kicsinyítlésre
kerül a kép az eredti oldalméret arányokat megőrizve. A SCALE PICTURE
FILL THE FRAME esetben a kép úgy kicsinyítődik, hogy a rendelkezésre álló
teret kitöltse.
Teljes ablakra vonatkozó paraméterek
Ha nem az egyes képernyő objektumokra, hanem a teljes képernyőre,
programra vonatkozó paramétereket kivánunk meghatározni, akkor azt a
képernyő tervező modul SCREEN főmenűjében a LAYOUT menüpontot kell
kiválasztani. Az ekkor megjelenő ablakot mutatja a következő ábra.
A TITLE paraméterben lehet megadni, hogy milyen felirat jelenjen meg az
ablak tetején. A mellette elhelyezkedő NAME mezőben az ablak azonositóját
lehet beállitani. Ha nem adunk meg saját értéket, akkor a rendszer egy egyedi
értéket fog generálni. A SIZE csoportban lehet módositani az ablak méretét
(WIDTH szélesség, HEIGTH magasság). A POSITION csoportban az ablak
elhelyezkedése adható meg. Az OPTION csoportban az ablakhoz tartozó egyéb
jellemzők állithatók be. A COLOR funkcióval az ablak alapszine határozható
meg, mig a FONT az ablakban megjelenő karakterek formátumára vonatkozik.
A WINDOW STYLE pontban az az ablak kerete és mozgathatósága
szabályozható.
A programok készitésénél a grafikus megjelenés mellett a műveleti rész
megadása is lényeges elem. Ehhez kapcsolódóan a CODE menüpont játszik
fontos szerepet, amelyből meghivható az teljes programhoz kötődő kódszeletek
meghatározása. A megjelenő képernyő felépétése a következő ábrán figyelhető
meg.
Az ablakban hét kódszelet adható meg, amelyek jelentése sorra következő:
- SCREEN SETUP CODE: az itt megadott kódrészlet beépül a generált program
elejére. Ennek megfelelően változók definiálására, változók kezdőértékének
megadására szokták felhasználni.
- CLEANUP AND PROCEDURE: az ide tartozó kódszelet a generált program
végére fog kerülni. Rendszerint saját eljárások, alprogramok definiálását
tartalmazza.
- ON SCREEN ENTRY: a READ utasitáshoz kötőtő kódszelet. A READ utasitás
adja át a vezérlést a felhasználónak az adatok beviteléhez. Ez kódrészlet a
READ előkészitése mellett a READ végrehajthatóságát is szabályozza, ahhoz
hasonlóan, ahogy az objektum szinten szereplő WHEN kódszelet működik.
- ON SCREEN EXIT: a READ utasitáshoz kötődik. Cak akkor fejezhető be a
READ művelet, ha az itt megadott eljárás, kijezés igaz értéket ad vissza.
- ON WINDOW ACTIVATE: az ablak aktivizálásakor hivódik meg az itt
megadott kódrészlet.
- ON WINDOW DEACTIVATE: az ablak elhagyásakor meghivódó kódrészlet.
- ON REFRESH: A képernyő ablakban megjelenő objektumok frissétésekor
meghivódó kódrészlet.
Egy generált képernyő programban az egyes kódrészletek az alábbi sorrendben
hivodnak a program indulásakor:
- Az ablak kirajzolása után a READ ciklus következik, igy az első kódrészlet a
READ WHEN kódrészlet lesz, annak eldöntésére, hogy elindulhat-e.
- Ha a READ engedélyezett, akkor az ablakhoz meghivódik a READ ON
WINDOW ACTIVATE esemény.
- Az aktivizáló rutin egy képernyő frissitési utasitást is tartalmaz, ezért a READ
REFRESH rutin lesz a következő végrehajtási elem.
- A vezérlés átadódik az objektumokhoz, igy az első GET adatbeviteli
utasitáshoz tartozó objektum szintű WHEN hivódik meg.
- Az objektum elhagyásakor az objektum szintű VALID fut le.
- Egy másik ablak aktivizálásakor az előző ablak READ ON WINDOW
DEACTIVATE rutinja hivódik meg.
- Az adatbevitel lezárásakor a READ ON SCREEN EXIT ellenőrzi, hogy
valóban ki lehet-e lépni a READ ciklusból.
Az egyes kódrészletek hatékony megírásához a rendelkezésre álló dBase-szerű
3GL nyelv pontos ismerete szükséges. E nyelv elemeinek az ismeretetésére a
következő fejezetben kerül sor.
Program generálása
Az elkészült képernyő terv alapján a generálható a futtatható program. A
program generálásához előbb le kell menteni az elkészült definíciót a FILE
főmenüpont SAVE pontján keresztül (közben ügyeljünk arra, hogy a szerkszető
ablak legyen akijelölt aktuális ablak a FoxPro rendszeren belül). Ezután a
PROGRAM főmenü GENERATE menüpontjának meghívásával elindíthatjuk a
program generáló modult. A megjelenő GENERATE SCREEN ablakban a
generáláshoz paraméterként elegendő az elkészítendő program
filespecifikációjának megadása, majd rákattinthatunk a GENERATE
nyomógombra. Eztkövetően a rendszer az elkészült leírás alapján létrehozza a
futattható programot. A generált program egy normál szövegállomány lesz,
amely a FoxPro 3GL nyelvéhez tartozó utasításokat tartalmaz. Ezen
utasításokat magunk is létrehozhattuk volna közvetlenül egy szövegszerkesztő
segítségével (ennek megfelelően a generált állomány megtekinthető, s bele is
fogunk tekinteni a generált szövegbe a következő fejezet során), csak ez a
megoldás sokkal többi időt és több ismeretet igényelt volna. A generált
forrásszöveg kiterjesztése SPR.
Az elkészült SPR állományt közvetlenül is futtathatjuk a FoxPro rendszer
keretén belül a RUN főmenüpont SCREEN meüpontjának aktivizálásával. A
megnyíló ablakban jelölhetjük ki a futtatandó SPR állományt. A programnak
önálló EXE állományként való futtatásához szükséges lépésekről szintén a
következő fejezetben fog majd szó esni.
A menüszerkesztő
A menüszerkesztő segítségével a több modulból álló alkalmazásunkhoz az
egyes modulok kiválasztását, elindítását segítő menürendszert lehet készíteni. A
menürendszer a Windows-ban megszokott módon és alakban jelenik meg, azaz
egy, a menüsorban megjelenő főmenü pontjaiból legördülő almenük hívhatók
meg, melyeknek szintén lehetnek további almenüpontjai. Az egyes
menüpontokhoz hozzárendelhetünk kész képernyő vagy jelentés modulokat,
illetve új eljárásokat, kódszeleteket is definiálhatunk hozzájuk.
A menüszerkesztő meghívása a FILE főmenüpontból történik. Új
menüszerkezet létrehozásakor a NEW menüpontot kell választani, míg létező
menü módosításához az OPEN funkciót kell aktivizálni. Eztkövetően a
lehetséges állománytipusok közül a MENU tipust kell kiválasztani, melynek
hatására megjelenik a menü szerkető ablak, melyet a következő ábra mutat be.
A szerkesztő ablakban a PROMPT oszlopban a menü elem szövegét lehet
megadni. A megadott szöveg jelenik meg a főmenüben, vagy a legördülő
menüben. A menülemet aktiviálhatjuk rámutattással, vagy az úgynevezett hot
key billentyű segítségével. Az indító billentyű kijelölését a PROMPT mezőben
kell megadni a szöveg valamely karaktereként. A hot key karaktert az eléje írt
\< szimbólummal jelöljük ki. A menüelem aktivizálásakor végrehajtandó
tevékenységet a RESULT oszlopban definiálhatjuk. Az alábbi
választevékenység tipusok állnak rendelkezésre:
- SUBMENU: Almenü definiálása. A megjelenő CREATE vagy EDIT
nyomógombok aktivizálásval a menüszerkesztő ablakban egy új, üres
menüszerkezet jelenik meg, amelybe a létrehozandó almenü leírása vihető fel.
Az almenü definiálásnak befejezése után a MENU LEVEL lista segítségével
térhetünk vissza a főmenühöz. A litából a MENU BAR szint kiválasztása hozza
vissza a főmenü szerkesztő ablakját. A főmenüből az almenübe a menüpont
mellett álló EDIT nyomógomb segítségével lehet lemenni.
- COMMAND: Parancs definiálása. A menüpont aktivizálásakor a megadott
utasítás fog végrehajtódni. Az utasítás rendszerint egy programmodul
meghívását tartalmazza, amelyet a DO utasítás segítségével valósíthatunk meg.
- PROCEDURE: Egy összetett tevékenységsor hozzárendelése a menüponthoz.
A menüpont mellett álló CREATE vagy EDIT nyomógomb aktivizálásával
megjelenik egy szerkesztő ablak, amelybe beírható a végrehajtandó utasítássor.
Az utasítássor elejére, hasonlóan a képernyőknél megismert kódrészletekhez,
nem szabad a PROCEDURE kulcsszót beírni, mivel azt a FoxPro
automatikusan generálja egy egyedi nevet adva a létrehozott procedurának.
- PAD NAME: A saját menürendszer definálásakor lehetőség van arra, hogy
már kész menülemeket vonjunk be a menürendszerünkbe. A PAD NAME
opció hatására a programban korábban definiált menüszerkezet épül be a
menübe. A megjelenő ablakban hivatkozhatunk a definált menüpontra. Ezzel az
opcióval azonban nemcsak létező menüelemeket köthetünk a saját
menürendszerünkbe, hanem létrehozhatunk olyan menüpontokat is,melyekhez
tartozó tevékenységet nem itt, hanem a program egy másik helyén definiáljuk.
A utasításkód megadásának egyik lehetséges formája ebben az esetben a
rendszer MENU főmenüpontjának GENERAL OPTIONS menüpontján
keresztül adható meg (lsd. ).
- BAR#: Az elmenüpontoknál lehetőség van arra, hogy létező, esetleg a
rendszer által generál almenüpontokat építsünk be a menürendszerbe. Itt tehát
hivatkozhatunk gyári menülemekre is, mint például az állománynyitás vagy
éppen egy HELP ABOUT menüpontra is. A RESULT oszlop mellett megjelenő
adatbeviteli mezőben kell a hivatkozott, beépítendő almenüpont azonosítót
megadni. A rendszer almenüpontok azonosító neveit legegyszerűbben a HELP
rendszeren keresztül a PAD: NAMES kulcsszóhoz kötve kaphatjuk meg. Ezzel
az opcióval azonban nemcsak létező menüelemeket köthetünk a saját
menürendszerünkbe, hanem létrehozhatunk olyan menüpontokat is,melyekhez
tartozó tevékenységet nem itt, hanem a program egy másik helyén definiáljuk.
A utasításkód megadásának egyik lehetséges formája ebben az esetben a
rendszer MENU főmenüpontjának MENU OPTIONS menüpontján keresztül
adható meg (lsd. ).
A menüszerkesztő ablak OPTION oszlopában található nyomógomb
segítségével hívhatjuk meg a menüelemhez tartozó kiegészítő funkciók
definiálására szolgáló PROMPT OPTIONS ablakot.
Az ablakban az alábbi lehetőségek állnak rendelkezésre:
- COMMENT: megjegyzés, értéke nincs hatással a program működésére
- SHORTCUT: a menüponthoz kapcsolható billentyűkombináció. A
menüszerkezet bejárása nélkül, közvetlenül meghívható a menüponthoz tartozó
funkció a megadott billentyűkombináció lenyomásával. A megjelenő definíciós
ablakban a KEY LABELcimkénél kell beütni a kiválasztott kombinációt. A
KEY TEXT a menüszerkezetben a menüpont mellett megjelenő tájékoztató
szöveget jelenti. A rendszer megengedi, hogy ugyanazt a betűkombinációt több
menüponthoz is hozzárendeljük, de ekkor csak egy menüpont lesz elérhető a
billentyűkombináció által, az amelyik előbb áll a menü definíciós listában.
- SKIP FOR: itt lehet megadni egy logikai értékű kifejezést, amellyel
szabályozható, hogy mikor elérhető a menüpont, s mikor van letiltva a
menüpont. Ha a kifejezés értéke hamis eredményt ad, akkor a menüpont nem
aktivizálható.
- MESSAGE: Az itt megadott üzenet íródik ki alul a státuszsorban, ha a
felhasználó rálép az ide tartozó menüsorra.
- PAD NAME: itt lehet egy saját egyedi azonosító nevet hozzárendelni a
menüponthoz. Ha nem adunk értéket, akkor a rendszer fogja az azonosító nevet
létrehozni. A saját név megadásának akkor van előnye, ha a menüpontra később
a program valamely részében hivatkozni szeretnénk.
A szerkesztő ablakban megadott TRY IT nyomógombra kattintva kipróbálható
a létrehozott menürendszer működése. A teszteléskor a menüsorba az általunk
definiált menük kerülnek fel. A menüpontok aktivizálásakor az almenüpontok
felkerülnek a képernyőre, de a parancsot, eljárást tartalmazó menüpontoknál
tevékenységek nem hajtódnak vége. Parancs esetén egy segédablakban
olvashatjuk ki a normál futtatás során végrehajtandó parancsot.
Az ablakhoz tartozó INSERT és DELETE nyomógombokkal új menüpontoto
vihetünk fel a listába, illetve létező menüpontot törölhetünk.
A menühöz tartozó általános kódszeletek definálására, a képernyő
szerkesztőhöz hasonlóan itt is a rendszermenün keresztül van lehetőség. A
menüszerkesztés során a főmenüben megjelenő MENU főmenüpont szolgál e
funkciók elérésére. E főmenüpont GENERAL OPTION pontja szolgál a
globális kezelő programmodul, a setup és a cleanup kódszeletek megadására.
Ezenkívül lehetőséget ad a menürendszernek a korábbi menürendszerbe történő
beépítésérére is. A menüpont definíciós ablakát a következő ábra mutatja.
A LOCATION csoportban lehet megadni, hogy a készülő menürendszer az
aktuális menürendszerhez hogy viszonyoljun. Az új menü helyettesítheti a régit
(REPLACE), kerülhet a végére (APPEND) kibővítve azt, illetve elhelyezkedhet
annak menüpontjai között is (BEFORE vagy AFTER).
A PROCEDURE ablakban egy általános menüpont kezelő eljárást lehet
készíteni. Ez az eljárás akkor hajtódik végre, ha egy olyan főmenüpontot
választottunk ki, amelyhez nem tartozik választevékenység. Ez úgy érhető el,
ha a menü definiálásakor a RESULT oszlopba a PAD NAME tipust adtuk meg,
és a megadott név egy még nem létező menüpontot jelölt ki. Mivel több ilyen
menüpont is létezhet, s mindegyik esetben ez a rutin hívódik meg, ezért ez a
rutin egy közös főmenüpont kezelő rutinnak is tekinthető. A finomabb,
menüpont függő tevékenységeket úgy lehet megvalósítani, hogy a rutinba a
kiválasztott főmenüpont azonosítóját (PAD NAME) lekérdezzük egy PAD()
függvény segítségével, s ezen értéktől függő elágazást valósítunk meg.
A menüredszerhez csatolható egy induló, setup kódrészlet is, melyet a SETUP
kapcsoló beállításával érhetünk el. Ekkor megjelenik egy szerkesztő ablak,
melybe beírhatjunk mindazon utasításokat, melyeknek a menürendszer
indításakor automatikusan végre kell hajtódniuk.
A CLEANUP kódszelet a menürendszer lezárásakor meghívódó utasítássorokat
tartalmazza, illetve itt van lehetőség a saját eljárások definiálására is. Itt olyan
eljárásokat célszerű definiálni, melyeket a menürendszer több különböző
kódszeletében,menüpontjában is fel tudunk használni. Lehetőség van más
menüredszerben definiált eljárások meghívására is, ha megadjuk az eljárást
tároló állomány azonosítóját a DO utasításnál.
A QUICK MENU menüpont a MENU főmenüben szolgál az induló
menürendszer gyors létrehozására. Az így létrejövő menüendszer a FoxPro
fejlesztő rendszerbenis tartalmazott menüpontokat (FILE, EDIT, DATABASE,
RECORD, PROGRAM, WINDOW, HELP) tartalmazza.
Az elkészített menürendszer definícióból a következő lépéseken keresztül
kaphatjuk meg a futtatható kódot:
- a definíció lementése (FILE főmenüpont SAVE vagy SAVE AS pontjai)
- a definícióból program generálása (PROGRAM főmenüpont, GENERATE
menüpont, melyben kijelölhetjük a létrehozandó program állomány azonosítóját
is.)
Az elkészült program állomány közvetlenül is futtatható illetve beépíthető,
meghívható más programokból is.
Jelentés szerkesztő
Formátumozott jelentések, nyomtatott listák készitésének leggyorsabb és
legkényelmesebb módja. Hasonlóan a képernyő szerkesztőhöz itt is a
megnyitott adattáblákból lehet mezőket bevinni a jelentésbe, ezért itt is a
jelentés elkészitésének első lépcsőjeként célszerű az érintett adattáblákat
megnzitni. Ezután meghivhatjuk a jelentés szerkesztőt. Új jelentés készitésénél
a FILE főmenüpont NEW menüpontját aktivizáljuk. A felkinált tipusok közül a
REPORT formátumot válasszuk ki, majd kattintsunk rá a NEW nyomógombra.
Létező jelentés esetén a FILE főmenü OPEN menüpontját kell kiválasztani. A
megnyiló jelentés tervező felépitését mutatja a következő ábra.
A jelentést fel lehet osztani több különböző részre, úgynevezett sávra. Minden
sáv sajátos felépitéssel és tartalommal rendelkezik. Az induló szerkesztő ablak
három ilyen sávot mutat: egy fejlécet, egy laptörzset és egy lábrészt. Minden
sáv a képernyőn egymástól jól elhatároltan helyezkedik el. A terület alsó
határán megjelenő felirat adja meg a sáv funkcióját. A jelentésben az alábbi
sávok fordulhatnak elő:
- PAGE HEADER: a lap felső sávja, a fejléc, amely rendszerint a jelentés
cimét, dátumát vagy épen lapszámot tartalmaz.
- DETAIL: a lap törzse, amelyben a részletes adatok jelennek meg
- PAGE FOOTER: a lap alsó sávja, melyben szintén összefoglaló
információkat tartalmazhat a lap törzsében megjelent részletes adatokra
vonatkozólag
- TITLE: a jelentés cimlapját jelenti
- COLUMN HEADER: a több oszlopban megjelenitett részletes adatok esetén
az egyes oszlopok tetején megjelenő oszlopfejléc
- : COLUMN FOOTER: a több oszlopban megjelenitett részletes adatok esetén
az egyes oszlopok alján megjelenő összegző terület
- GROUP HEADER: ha a részletező adatoknál csoportokat képzünk, ez a sáv
jelenti az egyes csoportok bevezető, fejléc területét
- GROUP FOOTER: ha a részletező adatoknál csoportokat képzünk, ez a sáv
jelenti az egyes csoportok lezáró, összegző területét
- SUMMARY: A jelentés végén megjelenő, a jelentés részletes adataira
vonatkozó összegző lap
Egy szinte minden elemet tartalmazó szerkezetet mutat be a következő ábra:
A következő ábra pedig az eredményül kapott listából mutat be egy részletet.
Az egyes sávokra a szerkesztő ablak bal oldalán elhelyezkedő eszköz készletből
választhatunk ki elemeket. Az egyes elemek jelentése a következő:
- TEXT: konstans szöveg
- FIELD: adatmező, mely adattábla mező és memória változó is lehet
- LINE: vonal
- RECTANGLE: téglalap alakú keretvonal
- ROUNDED RECTANGLE: lekerekitett sarkú keretvonal
- PICTURE: kép
Az egyes objektumok felhelyezése és paramétereinek beállitása a képernyő
szerkesztő programban megadott módon történik. Az adatmezők definiálásakor
megjelenő ablak felépitését mutatja a következő ábra.
Az ablakban az EXPRESSION nyomógombbal hivhatjuk meg a
megjelenitendő adat forrásának megadására szolgáló segédablakot. Itt mind
adattábla mezőt, mind memóriváltozót kijelölhetünk. A FORMAT opció
szolgál az adat megjelenitési formátumának beállitására. A CALCULATE
kapcsolóval számitott értékeket jelenithetünk meg. Ekkor a megadott
adatmezőre vonatkoző statisztikai értékeket jelenithetünk meg. Ezen
aggregációs függvények a szokásos számlálás (COUNT), összegzés (SUM),
átlag (AVERAGE), minimum (LOWEST) és maximum (HIGHEST), szórás_::.
A PRINT WHEN kapcsolóval megadhatjuk, hogy az adatelemet mikor, mely
feltételek esetén szabad csak megjeleniteni a listában. A feltáruló
paraméterablakban a következő feltételek szabhatók meg:
- PRINT REPEATED VALUES: ki nyomtassa-e az ismétlődő értékeket
- ALSO PRINT: itt állitható be, hogy az ismétlődés ellenére mikor kell mégis
megjelniteni az értéket.
- PRINT ONLY WHEN EXPRESSION IS TRUE: itt lehet egy tetszőleges
egyedi feltételt megszabni, s csak akkor fog a mezőérték megjelenni a listában,
ha az itt megadott kifejezás igaz értéket ad
- REMOVE LINE IF BLANK: ha beállitjuk ezen kapcsolót, akkor azob
rekordoknál, melyekből egyetlen egy mező sem jelenik meg, nem kerül üres sor
a jelentésbe.
Az jelentés globális paramétereit a főmenü ekkor megjelenő REPORT
menüpontján keresztül szabályozhatjuk. E menü legfontosabb pontjai:
- PAGE LAYOUT: itt állithajtuk be a nyomtatási lapok formátumát. E
menüpont szolgál arra is, hogy a listában az oszlopok számát kijelöljük
(COLUMN mező). Alapesetben a lista egyetlen egy oszlopot tartalmaz, ennek
értéket lehet megnövelnni a paraméterablakban.
- PAGE PREVIEW: itt lehet a listát előzetesen, a képernyőn megtekinteni
- TITLE/SUMMARY: itt lehet a listához cimlapot és zárólapot definiálni
- DATA GROUPING: e menüponton keresztül lehet adatcsoportokat definiálni
a listában.
Az elkésitett listaformátum alapján megjelenő listát a főmenü RUN
menüpontjának REPORT pontjával állithatjuk elő.