Most hozzunk létre egy nézetet.

Nézet

A nézetek az egyik leggyakrabban használt komponensek a Windows programokban. Adatbeviteli képernyők és a legtöbb más típusú “képernyő” vagy “űrlap” létrehozására szolgálnak.

A “Hello, World” nézet létrehozása

Néhány alapvető DataFlex Windows alkalmazásfejlesztési technikát fogunk bemutatni a jól ismert “Hello, World” program egy variációján keresztül, amelyet sok programozási nyelv tanításának első programjaként használnak.

A létrehozott nézet nagyon egyszerű lesz, 2 űrlapból és egy gombból áll. Az első űrlap neve, a második űrlap eredménye lesz. A felhasználó beírja a nevét a Név űrlapba, és rákattint a gombra. A név ezután hozzá lesz adva a “Hello, ” formanyomtatványhoz, így például a “Hello, John” eredményt kapjuk. Ez az eredmény kerül a második űrlapba.

1. Kattintson a Stúdió eszköztárában az Új létrehozása gombra. Kattintson az Új létrehozása… párbeszédpanel Nézet / Jelentés lapjára. Kattintson duplán az Adatbeviteli nézet ikonra.

2. Megnyílik az “Új adatbeviteli nézet létrehozása” párbeszédpanel. Adja meg az oHelloWorld nevet az objektum neveként. Vegye észre, hogy a fájlnév automatikusan HelloWorld.vw-re változik az objektumnév beírása közben. Fogadja el az alapértelmezett könyvtár elérési útvonalát (a QuickStart munkaterület AppSrc mappája). Kattintson az Ok gombra.

A Studio vizuális tervezőjében most egy új nézet körvonala fog megjelenni. Valahogy így kell kinéznie:

3. Vessen egy pillantást a Workspace Explorer ablakra. Ha a Workspace Explorer nincs megnyitva, kattintson a Studio eszköztárán a Workspace Explorer ikonra.

Munkaterület-kutató

A Workspace Explorer egy dokkolóablak, amely típusonként felsorolja az aktuális projektet és az aktuális projektben szereplő komponenseket. Erről bővebben a Studio könyv Workspace Explorer témakörében olvashat. Alapértelmezés szerint a Studio jobb oldalán található.

Aktuális projekt

Az Aktuális projekt a DataFlex Studio egyik kulcsfogalma, amely szinte mindenre hatással van, amit a Stúdióban végez. Az aktuális projekt az a projekt, amely a Stúdióban lefordításra, futtatásra és hibakeresésre kerül, még akkor is, ha olyan komponenseken dolgozik, amelyek nem részei ennek a projektnek. Új komponensek létrehozásakor azok alapértelmezés szerint az aktuális projekthez kerülnek hozzáadásra. Erről bővebben a Studio könyv Munkaterület-kutató témakörében olvashat.

4. A Workspace Explorerben a MyFirstWindowsApplication.src-t kell látnia a Current Projectként. Kattintson a +-ra a fa nézetben a MyFirstWindowsApplication.src bővítéséhez, majd kattintson a +-ra a Nézetek bővítéséhez. Láthatja, hogy a HelloWorld.vw hozzá lett adva a MyFirstWindowsApplication.src projekthez.

Ha a +-ra kattintva kibontja az Other Files (Egyéb fájlok) elemet, akkor megjelenik az összes többi fájl, amely jelenleg a projekt része.

5. Kattintson a Studio eszköztárának Class Palette gombjára.

Ezzel megjelenik a Studio osztálypalettája.

Osztálypaletta

A Class Palette egy dokkoló ablak, amely a Studio-ban az aktuális munkaterületre vonatkozóan elérhető vezérlőelemeket listázza. Az egyes csoportokba tartozó vezérlőelemek felhasználása és funkciói alapján különböző csoportokra van osztva.

Mivel Ön jelenleg egy Windows-projekten dolgozik, a Class Palette alapértelmezés szerint csak a Windows-alkalmazásokban használható vezérlőelemeket mutatja.

A Class Palette teljesen testreszabható. Erről bővebben a Studio könyv Class Palette témakörében olvashat.

6. Húzza a Class Palette (Osztálypaletta) Base Controls (Alapvető vezérlők) csoportjából 2 Form (Form) vezérlőelemet az üres nézetre.

7. Ezután húzzon egy gombvezérlőt a Class Palette (Osztálypaletta) Base Controls (Alapvezérlők) csoportjából a nézetre.

8. Jelölje ki a felső első űrlapvezérlőt, majd a Ctrl billentyű lenyomva tartása mellett jelölje ki a másik második űrlapvezérlőt. Kattintson a jobb gombbal, és válassza az Igazítás, majd a Balra menüpontot a kontextusmenüből. Ezzel a két űrlapot úgy igazítja, hogy a bal szélük a nézet bal szélétől azonos távolságra legyen.

9. Jelölje ki a gombvezérlőt, kattintson a jobb gombbal, majd válassza a Center, majd a Horizontally parancsot a kontextusmenüből. Ez a gombot vízszintesen középre állítja a nézetben.

10. Kattintson a Studio eszköztárának Futtatás gombjára. A Studio lefordítja, majd futtatja a projektet. Amikor az alkalmazás fut, kattintson a Nézet menüre, majd az oHelloWorld menüpontra a nézet megnyitásához. A futó programod így fog kinézni:

A 2 űrlapvezérlőbe szöveget írhatsz be, és a gombra is kattinthatsz (bár ilyenkor nem történik semmi). Zárja be az alkalmazást.

11. Jelölje ki a felső űrlapvezérlőt a vizuális tervezőben vagy a Kódtudvarban, és győződjön meg róla, hogy a Tulajdonságok ablak meg van nyitva. Módosítsa az objektum nevét oNameForm-ra. Az objektum nevének formanyomtatványa a Tulajdonságok ablak tetején található, és az Objektum feliratot viseli.

Objektumnevek

Nagyon hasznos, ha az objektumoknak értelmes neveket adunk. Az oForm1 és oForm2 nevek közel sem olyan értelmesek, mint az oNameForm és oResultForm. Egy összetettebb nézetben, ahol több tucat vagy esetleg több száz objektum van, az objektumok egyértelmű azonosításának lehetősége időt és energiát takarít meg.

Javasoljuk az o előtag használatát az objektumokhoz. A DataFlex elnevezési konvenciókról bővebben a Nyelvi útmutatóban olvashat.

12. Módosítsa a Label tulajdonság értékét Name-re, a Label_Col_Offset tulajdonság értékét pedig 0-ra.

Kattintson a Label_Justification_Mode tulajdonság értékoszlopába (a jobb oldali oszlopba). Vegye észre a kombinált űrlapot, amely lehetővé teszi, hogy egy előre definiált felsorolási listából válasszon értéket. A Studio a tulajdonság típusától függően minden egyes tulajdonsághoz különböző vezérlőelemeket jelenít meg.

Módosítsa a Label_Justification_Mode tulajdonságot JMode_Right-ra.

Ha a Label_Col_Offset tulajdonságot 60-ról 0-ra, a Label_Justification_Mode-t pedig JMode_Right-ra változtatja, a címke közvetlenül az űrlapvezérlő bal oldalára igazodik, függetlenül a címke hosszától (a címke a szükséges mértékben balra nyúlik).

Tipp

Bármely tulajdonság dokumentációját megtekintheti, ha a tulajdonságot kiválasztja a Tulajdonságok ablakban, és megnyomja az F1 billentyűt. Ezzel közvetlenül a kiválasztott tulajdonság DataFlex súgójához jut.

Tulajdonságok

A Tulajdonságok ablak a kiválasztott objektum, osztály vagy táblázat tulajdonságértékeinek megtekintésére és szerkesztésére szolgál a Studio tervezőprogramjaiban, például a vizuális tervezőben és a Kódex-kutatóban.

Vegye észre, hogy az összes olyan tulajdonságérték, amely az alapértelmezett (az objektum osztályában beállított) értékhez képest módosult, félkövér betűvel jelenik meg. Ezek egyben az egyetlen olyan tulajdonságok is, amelyek kiíródnak az aktuális forrásfájl kódjába.

Egy tulajdonság értékének visszaállításához az alapértelmezett értékre kattintson a jobb gombbal a tulajdonság neve oszlopra a Tulajdonságok ablakban, és válassza az Érték visszaállítása parancsot.

13. Kattintson az alsó űrlapvezérlőre. Módosítsa az Object Name-t oResultForm-ra, a Label-t Result-ra, a Label_Col_Offset-et 0-ra, a Label_Justification_Mode-ot pedig JMode_Right-ra.

14. Kattintson a nézetobjektumra (a nézet hátterére vagy a feliratsávra kattintva jelölheti ki). Módosítsa a nézet Címkét Hello, World! értékre.

15. Kattintson a gombobjektumra, módosítsa az objektum nevét oGoButton-ra, a Label-jét pedig Go-ra.

A nézetnek most már így kell kinéznie a Stúdióban:

Most néhány forráskódot fog hozzáadni a nézetben lévő vezérlőelemekhez, hogy funkcionalitást adjon nekik.

16. Kattintson duplán az oGoButton vezérlőelemre a vizuális tervezőben vagy a Code Explorerben. Ez megnyitja a kódszerkesztőt, és megjeleníti a HelloWorld.vw kódját úgy, hogy a kurzor a gomb objektumdeklarációjának kódsorán áll.

Navigálás a nézetek között a stúdióban

A Stúdióban a megnyitott nézetek közötti navigációnak több módja is van. Mint már láthattuk, a vizuális tervezőben vagy a Kódtérképben egy objektumra való dupla kattintással megnyithatjuk a kódszerkesztőt az adott objektum kódjához. A Kódszerkesztő és a tervező nézetek közötti váltás eszköztár gombjára is kattinthat, hogy a vizuális tervezőből a kódszerkesztőbe váltson, bár így nem jut el azonnal egy adott objektum kódjához.

A vizuális tervezőbe való visszaváltáshoz ismét a Kódváltás a kódszerkesztő és a tervezői nézetek között eszköztár gombjára kattintva válthat. Az F7 billentyűvel is válthat a tervező és a kódszerkesztő között bármely adott fájl esetében.

Tipp

A Ctrl + Tab vagy a Ctrl + Shift + Tab billentyűkombinációval görgethet a megnyitott nézetek között.

Ha már egy nagyobb projektben dolgozik, és több fájl van nyitva, hasznos lehet a Fájlnavigátor ablakot dokkolt ablakként nyitva hagyni. Ha a Fájlnavigátor még nincs megnyitva, akkor a Fájlnavigátor eszköztár gombjára kattintva nyithatja meg.

Tipp

Ha duplán kattint bármelyik fájlra a Munkaterület-kutatóban:

  • Ha a fájl még nincs megnyitva, akkor megnyílik.
  • Ha a fájl már meg van nyitva, de nem az éppen aktív ablak, akkor az lesz az aktív ablak.
  • Ha a fájl már meg van nyitva, és ez az aktuálisan aktív ablak, a nézet váltani fog a kódszerkesztő és a tervező között (ha a fájl modellezhető a tervezőben).

Tipp

Ha a Studio fő ablaktábláján annyi ablak van nyitva, hogy egyetlen sorban meghaladja a lapok számára rendelkezésre álló helyet, a lapok görgetni kezdenek, és a nyílbillentyűkkel jobbra és balra görgethet, hogy több lapot láthasson.

Alternatív megoldásként az Eszközök > Stúdió konfigurálása… menüpontban úgy konfigurálhatja a Studio-t, hogy több lapsor jelenjen meg.

A Stúdióban való navigálással kapcsolatos további információkat a Stúdió súgójában talál.

17. Most kódot adunk hozzá az oGoButton vezérlőhöz.

Egy gombvezérlő általában csak egy eseményt használ: OnClick. Ez az esemény a gombra való kattintáskor lép működésbe. Amikor a Studioban egy gombvezérlőt egy komponensre húzza, a Studioban már eleve tartalmazza ennek az eljárásnak a vázlatát, hogy könnyebb dolga legyen. Ha ez az eljárás üres, mint ahogy itt alapértelmezés szerint, akkor a gombra kattintáskor semmi sem történik, ahogy azt a futó programban való kipróbáláskor láthattad.

Írjuk be a következő kódsorokat a már deklarált OnClick eljáráson belül:

Ha új vagy a Stúdióban, akkor javaslom, hogy ezeket a kódsorokat inkább gépeld be, minthogy bemásold és beilleszd őket. Ez megmutatja a Studio CodeSense funkcióinak erejét, amelyek segítik a kód írását azáltal, hogy javaslatokat jelenítenek meg tooltipként, kiegészítik a szavakat (például a meglévő függvényneveket) az Ön számára, befejező utasításokat adnak a kódblokkokhoz stb. Ha csak bemásolja a kódot, sok ilyen funkcióról lemarad.

a. Az első kódsor a következő:

String sName sHello sResult

Ez a kódsor 3 helyi string változót deklarál sName, sHello és sResult névvel.

Változó hatókör

Egy helyi változó hatókörét arra a metódusra (eljárásra vagy függvényre) korlátozzuk, amelyben deklaráltuk. Ezeket a változókat “használhatja”, ami azt jelenti, hogy csak az aktuális metódusban, ebben az esetben az OnClick eljárásban rendelhet hozzájuk értékeket, és csak akkor férhet hozzá a meglévő értékeikhez, ha az adott metódusban van. Ha a változókra azon a hatókörön kívül próbálunk hivatkozni, amelyben deklaráltuk őket, az fordítói hibát eredményez.

Változók nevei

Az objektumok neveihez hasonlóan a változóknak is hasznos értelmes neveket adni. Az x és y nevek közel sem olyan értelmesek, mint az sName és sResult. Egy összetettebb, több tucat változót tartalmazó módszerben, ha könnyen azonosítani tudjuk egy változó nevének jelentését, hatékonyabb programozóvá válunk.

Javasoljuk az s előtag használatát minden sztringváltozóhoz. Az ilyen előtagok a változónevek jelentésének azonosítását is segítik. Ha ragaszkodik ehhez az elnevezési konvencióhoz, soha nem fogja összetéveszteni a karakterláncot tartalmazó változót a számot tartalmazó változóval. A DataFlex elnevezési konvenciókról bővebben a Nyelvi útmutatóban olvashat.

CodeSense

Amikor elkezdi a kód beírását, néha észreveheti, hogy felugrik egy lista, amely a lehetséges opciókat mutatja be. A legtöbb esetben a CodeSense ezen félautomata listafunkciója tudja, hogy mikor kell megjelennie, és megfelelő kontextusú választási lehetőségeket mutat be. Ha manuálisan szeretné előhívni ezt a listát, nyomja le a Ctrl+Space billentyűkombinációt bármelyik sorban vagy szó beírása közben.

A CodeSense a Studio olyan funkcióinak összessége, amelyek intelligens módon segítik Önt a kódírás során, és kontextusfüggő lehetőségek és információk listáit kínálják. A CodeSense használata drámaian növeli a termelékenységet, közvetlenül akkor ad kontextusérzékeny információkat, amikor szükséged van rájuk, miközben kódot gépelsz a szerkesztőben, így nem kell elhagynod a szerkesztőt, hogy a dokumentációban hivatkozásokat keress. És még arra is használható, hogy befejezze a gépelést Ön helyett, minimalizálva a gépelési hibákat stb.

A CodeSense használatáról itt tudhat meg többet

b. A következő kódsor a következő:

Get Value of oNameForm to sName

Ez a kódsor beolvassa az oNameForm Form objektum értékét az sName string változóba. A Form vezérlő aktuális tartalma a Value nevű String tulajdonság segítségével kérhető le.

A tulajdonság tartalmának lekérdezése a következő szintaxissal történik:

A {ObjectName} {PropertyName} tulajdonságának {VariableName} lekérése

CodeSense tippek

Íme néhány példa a CodeSense működésére, amelyet közvetlenül az aktuális kódsorban láthat, amelyet éppen beír:

  • Ha beírja a “get Value ” (győződjön meg róla, hogy az utolsó szóközt írja be), akkor észreveheti, hogy felugrik egy tooltip, amely a Value tulajdonság paraméterinformációit jeleníti meg. Megmutatja, hogy ez egy String típusú tulajdonság.
  • Ha beírja a “get Value of ” (győződjön meg róla, hogy az of után szóközt ír be), akkor egy felugró lista jelenik meg, amely az aktuális kódsor szintaxisában az aktuális helyre beilleszthető lehetséges szavakat jeleníti meg. Ebben az esetben ez magában foglalja az objektumok nevét is — a listából kiválaszthatja az oNameForm-ot.
  • Ha beírja a “get ” (győződjön meg róla, hogy a get után szóközt ír be), majd megnyomja a Ctrl + Space billentyűkombinációt, akkor egy felugró lista jelenik meg, amely az aktuális kódsor szintaxisának aktuális helyére beszúrható szavakat jeleníti meg. Ez a lista a tetején a Browse Objects (Tallózás objektumok) elemeket tartalmazza. Ha lenyomja a jobb nyíl billentyűt, miközben a Browse Objects (Objektumok böngészése) ki van jelölve, megjelenik egy második lista, amely az objektumokat sorolja fel. Válassza ki az oNameForm objektumot, és nyomja meg ismét a jobbra nyíl billentyűt, hogy megjelenjen egy harmadik lista, amely az oNameForm számára elérhető tulajdonságokat és funkciókat mutatja. Ha ebből a listából kiválasztja az Értéket, vegye észre, hogy a tulajdonság neve és az objektum neve is a megadott kiválasztásnak megfelelő szintaxissal lesz kitöltve.

Tipp:

Ha megpróbálja meghívni a CodeSense-t, de nem jelenik meg semmilyen információ, akkor jó eséllyel valamilyen szintaktikai hiba van az aktuális kódsoron, amely megelőzi azt a helyet, ahol a CodeSense-t próbálja meghívni.

c. A következő kódsor a következő

Move “Hello, ” to sHello

Ez a kódsor inicializálja az sHello string változót “Hello, ” értékkel.

Egy változó értékének beállításához a szintaxis a következő:

Move {Value} to {VariableName}

Változók inicializálása

A nem inicializált helyi változókat a program automatikusan “” értékkel inicializálja a karakterláncok esetében, illetve 0 (nulla) értékkel a numerikus változók (egész, valós stb.) esetében. Azonban jó szokás, hogy mindig inicializáljuk az összes használni kívánt változót, még akkor is, ha “” vagy 0 értékkel inicializáljuk őket.

d. A következő kódsor a következő

Move (sHello + sName) to sResult

Ez a kódsor összekapcsolja az sHello és sName string változók tartalmát, és ezt az értéket az sResult string változóba mozgatja. Tehát, ha például az sName tartalmazza a “John” szót, akkor ez a “Hello, John” szót helyezi át az sResult értékbe.

e. A következő kódsor a következő

Set Value of oResultForm to sResult

Ez a kódsor az sResult string változó tartalmát az oResultForm Form objektum Value tulajdonságába helyezi.

Egy objektum tulajdonságának tartalmának beállítására a szintaxis a következő:

Set {PropertyName} of {ObjectName} to {VariableName}

18. A kész kódnak így kell kinéznie:

Object oGoButton is a Button

Set Location to 93 94

Set Label to “Go”

// fires when the button is clicked

Procedure OnClick

String sName sHello sResult

Get Value of oNameForm to sName

Move “Hello, ” to sHello

Move (sHello + sName) to sResult

Set Value of oResultForm to sResult

End_Procedure
End_Object

Érdemes lehet néhány üres sort hozzáadni a kódhoz, hogy a kódot értelmes blokkokra ossza, ahogy azt a fentiekben bemutattuk. Ez megkönnyítheti a kód olvashatóságát, különösen akkor, ha az Ön által írt kód ennél a kis példánál összetettebbé válik.

A kód kommentálása

Egy másik jó szokás, amit érdemes elsajátítani, az a kód kommentálása. A megjegyzések olyan kódsorok, amelyeket nem fordítanak be a programba, és pusztán azért vannak a forráskódban, hogy a kód olvasóját tájékoztassák a kód szándékairól. A megjegyzéseket általában minden olyan dologhoz adják, ami nem nyilvánvaló a kódot olvasók számára, beleértve Önt, a kód szerzőjét is. Hátborzongató, hogy néha a saját kódodat milyen nehéz követni, miután néhány évig nem dolgoztál egy adott projekten. Különösen az a jó szokás, hogy a metódus fölé egy megjegyzést teszünk a metódus szándékáról.

A DataFlex forráskódhoz megjegyzés hozzáadásához egyszerűen helyezzen el 2 előremenő írásjelet (//) bárhol a kódsoron belül, és a sor hátralévő részét a forráskód helyett megjegyzésként fogja kezelni, ahogy az alább látható:

Object oGoButton is a Button

Set Location to 93 94

Set Label to “Go”

// This method will read the user’s name from the Name form

// and redisplay it in the Result form in the format “Hello, Name”

Procedure OnClick

String sName sHello sResult

Get Value of oNameForm to sName

Move “Hello, ” to sHello

Move (sHello + sName) to sResult

Set Value of oResultForm to sResult

End_Procedure

End_Object

Tipp:

A Ctrl + K billentyűkombináció megnyomásával egy vagy több kódsort is kommentálhat, illetve feloldhat.

19. Teszteljük tehát az elkészült nézetet.

Kattintsunk a Studio eszköztárának Futtatás gombjára. A Studio lefordítja, majd futtatja a projektet.

Amikor az alkalmazás fut, kattintsunk a Nézet menüre, majd a HelloWorld menüpontra a nézet megnyitásához. Írja be a nevét a Name feliratú űrlapba, majd kattintson a Go gombra. Az Eredmény feliratú űrlapon a “Hello, {Az Ön neve}” szöveg fog megjelenni

Az eredmény így fog kinézni:

Zárja be a programot.

20. A nézet nézet menüpontjában a “Hello, World!” helyett a “HelloWord” jelenik meg. Javítsuk ki ezt.

Ha nincs megnyitva, nyissuk meg a MyFirstWindowsApplication.src állományt a vizuális tervezőben (dupla kattintással a Workspace Explorerben).

21. Kattintsunk a nézet menüre, majd a HelloWorld menüpontra. Így kell kinéznie:

  • Kattintson még egyszer a kiválasztott HelloWorld menüpontra (vigyázzon, hogy ne kattintson duplán). Ezzel a menüpont szövege szerkeszthetővé válik. Módosítsa a menüpont szövegét “Helló, világ!”-ra. Így kell kinéznie:

Alternatív megoldásként kiválaszthatja ezt a menüelem objektumot a Code Explorerben, és szerkesztheti a Címkét a Tulajdonságok panelen, vagy módosíthatja a címke kódsorát a Code Explorerben.