Sunteți pe pagina 1din 25

Curs 16. FOXPRO 2.6 DOS pag.

1
10.8.1. Relaii ntre tabele
Ex. Pentru simplificarea modului de prezentare a relaionrii se presupun dou ta!ele "#"$%.D&F 'i
(O)".D&F cu urmtoarea structur *Fig. 6+,-
Cele dou ta!ele se completeaz cu date conform Fig. 6..
Relaia se /a sta!ili pe !aza
c0mpului comun1 de acela'i tip 'i de
aceea'i lungime1 (r2mat. )a!ela
printe este "#"$%.D&F1 ta!ela fiu
este (O)".D&F.
3nainte de relaionare1 ta!ela fiu se indexeaz cu c4eia de inde5are (r2mat *c0mpul comun de
relaionare,. Se /a urmri 6n fereastr &RO7S" 8 C9:(;" efectul de relaionare.
Mod de lucru:
Creare- se creeaz ta!elele 'i se 6ncarc cu date1 *Fig. 6.,
Deschidere- ta!elele se desc4id 6n dou zone de lucru diferite1 din fereastra $ie<1 astfel
zona de lucru 1- "#"$%.D&F1
zona de lucru 2- (O)".D&F1
Indexare- se selecteaz zona 2= ta!ela fiu1 (O)".D&F1 se inde5eaz cu c4eia (r2mat-
din fereastra de inde5are desc4is succesi/ prin acionarea >Setup? >:dd...? >(e<?1
dac fi'ierul inde5 nu a fost creat1
se acti/eaz prin acionarea >Setup? >Set Order? dac fi'ierul inde5 este creat dar
inacti/.
Relaionare- se selecteaz ta!ela printe desc4is 6n zona de lucru 11 se acioneaz declan'atorul
>Relations ? dup care se selecteaz ta!ela fiu 6n zona de lucru 2. Dac ta!ela fiu nu este inde5at
apare o fereastr de dialog pentru selectarea c4eii de inde5are acti/e. 3n acest moment se desc4ide
Fig. 6+
Fig. 6.
pag. 2 Curs 16. FOXPRO 2.6 DOS
fereastra constructorului de e5presii1 unde 6n caseta te5t S") R"#:)%O(- >e5pr? apare implicit
c0mpul comun (r2mat.
Obs1 Relaionarea se poate realiza dup o e5presie *care implic c0mpul comun, sau dup c0mpul
comun *uzual,. "5presia sau c0mpul de relaionare se nume'te cheia relaiei
Stabilirea tipului relaiei- 6n acest moment relaia este de tip una_la_una. Pentru a sta!ili tipul de
relaie una_la_mai multe se acioneaz declan'atorul >1@)o@AanB? moment 6n care se desc4ide
fereastra de dialog pentru selectarea aliasului ta!elei fiu *Fig. CD,. 3n lista C4ild :liases apar
aliasurile *numele, ta!elelor fiu aflate 6n relaie cu ta!elul printe. #ista Selected :liases conine
aliasurile ta!elelor fiu selectate 'i mutate prin acionarea declan'atorului >Ao/e?. 3n cazul de fa
apare aliasul (O)" care prin du!lu clicE sau selectare >Ao/e? /a fi trecut 6n lista Selected
:liases. 3n cazul 6n care se dore'te distrugerea relaiei tip una_la_mai multe se selecteaz aliasul din
lista Selected :liases 'i se acioneaz declan'atorul >Remo/e?. Selectarea se /alideaz prin
acionarea declan'atorului >>OF?? sau se in/alideaz cu >Cancel?. *Fig. CD a., Dup sta!ilirea
relaiei 'i selectarea tipului acesteia1 6n fereastra $ie< se pot /izualiza ta!elele relaionate *Fig. CD
!.,.
)a!ela printe este marcat cu un triung4i la e5tremitatea st0ng a numelui ta!elei Se o!ser/ c
6n cazul relaiei una_la_mai multe ta!ela printe este marcat cu un ptrat la e5tremitatea dreapt a
numelui ta!elei.
Din acest moment cele dou ta!ele se consider relaionate1 relaia fiind de tip una_la_mai
multe1 cheia relaiei fiind c0mpul comun (r2mat.
Obs.
)a!ela printe poate fi relaionat cu mai multe ta!ele fiu1 tipul relaiilor put0nd fi una_la_una sau
una_la_mai multe. Se o!ine astfel o structur liniar de ta!ele relaionate.
De asemenea ta!ela fiu poate de/eni ta!el printe pentru o alt ta!el cu care sta!ile'te o relaie1
pe !aza unui c0mp comun1 nu neaprat acela'i ca 6n cazul relaiei anterioare. Se o!ine astfel o
structur ar!orescent de ta!ele relaionate.
)oate aceste structuri apar /izualizate 6n form grafic1 6n fereastra $ie<.
Succesiunea comenzilor generate automat 6n fereastra Command1 la parcurgerea modului de
lucru descris anterior este-
USE C:\FOX\CURS16\ELEVI.DBF && deschide tabela ELEVI
SELECT 2 && selecteaza zona de lucru 2
USE C:\FOX\CURS16\NOTE.DBF && deschide tabela NOTE
SET ORDER TO TAG NR_MAT OF C:\FOX\CURS16\NOTE.CDX && seteaza eticheta index
&& activa Nr_mat (fisierul index a fost creat anterior
SELECT 1 && selecteaza zona de lucru !
SET RELATION TO NR_MAT INTO NOTE ADDITIVE && stabileste relatia "ntre tabela
&& #arinte din zona ! s#re tabela fiu din zona 2$ zona este selectata #rin
&& aliasul tabelei deschise "n aceasta zona%
SET SKIP TO NOTE && se s!"#$ese #%&$ 'e$!#e# una_la_mai multe%
Fig. CD a. Fig. CD !.
Curs 16. FOXPRO 2.6 DOS pag. G
:ceast succesiune1 editat 6ntr@un fi'ier program Fo5Pro apoi rulat *ProgramDo,1 are
acela'i efect cu acionarea comenzilor prin intermediul meniurilor1 'i o!iectelor de control din ferestre.
Prin relaionare1 poziionarea indicatorului de 6nregistrri pe o anumit 6nregistrare *6n ta!ela
printe, determin poziionarea automat a indicatorului de 6nregistrri *6n ta!ela fiu, pe 6nregistrarea
cu aceea'i /aloare a c0mpului de relaionare.
Poziionarea autoat este posibil nuai dinspre tabela printe !"n cazul de #a deschis
"n zona de lucru $% spre tabela #iu. %n/ers nu este posi!il. Relaia este una de su!ordonare.
"fectul relaionrii este /izi!il 6n Fig. C1 unde am!ele ta!ele sunt /izualizate simultan 6n fereastr
&RO7S" adus la dimensiune 'i poziie con/ena!il pe ecranul Fo5Pro. Deplasarea indicatorului de
6nregistrri 6n ta!ela printe se realizeaz prin selecie cu mouse@ul sau prin acionarea tastelor
direcionale 'i . 3n ta!ela fiu *su!ordonat, sunt accesate */izi!ile, doar acele 6nregistrri pentru care
c&pul de relaionare are aceea'i (aloare cu "nre)istrarea din tabela printe. 3n ta!ela printe
apar 6nregistrri ficti/e *marcate cu !and, care indic 6nregistrrile aferente din ta!ela fiu.
Relaionarea 6n sine nu constituie
un instrument de lucru ci ser/e'te unor
instruciuni care funcioneaz pe !aza
relaiei.
Ex. Programul urmtor afi'eaz 6n fereastr &RO7S" sau pe ecranul Fo5Pro notele ele/ului cu numele
%O("SCH
CLEAR
USE C:\FOX\CURS16\ELEVI.DBF
SELECT 2
USE C:\FOX\CURS16\NOTE.DBF
SELECT 1
SET ORDER TO TAG NR_MAT OF C:\FOX\CURS16\NOTE.CDX IN NOTE SET RELATION TO NR_MAT
INTO NOTE ADDITIVE
SET SKIP TO NOTE
BRO(SE FIELDS NOTE.NOTA FOR ELEVI.NUME)*IONESCU*
&& sau LIST NOTE.NOTA FOR ELEVI.NUME)*IONESCU*
$*.+. ,eneratorul de ecrane
"CR:(H# I program pentru introducerea datelor 6n ta!ele sau !aze de date. "5ecuia
programului const 6n-
acti/area ecranului1
citirea datelor prin intermediul o!iectelor de control ce intr 6n componena ecranului1
prsirea ecranului.
Hn ecran poate conine orice element de control folosit de interfaa Fo5Pro
declan'ator *Pus4 !utton, list derulant *#ist,
!uton radio *Radio !utton, suprafa de editare te5t *Field, SaB1 ;et1 "dit
Fig. C1
pag. J Curs 16. FOXPRO 2.6 DOS
!uton in/izi!il *%n/isi!le !utton, te5t *)e5t,
comutator *C4ecE !o5, linie *&o5 cu o dimensiune,
list ascuns *Popup, c4enar *&o5,
%nformaiile furnizate 6n fereastra generatorului de ecran sunt folosite de Fo5Pro pentru
generarea programului *a ecranului,
;eneratorul de ecrane /a fi prezentat prin intermediul aplicaiilor practice
1
-plicaia $ @ introducerea datelor 6n ta!ela "#"$%.D&F
10.9.1. Lansarea generatorului de ecrane. Deschiderea ferestrei de configurare.
Pentru lansare se acioneaz sec/ena .ile /e0 ! % Screen 11O233. Se desc4ide
fereastra 4/5I56ED.SC7
2
. 3n meniul SBstem apare opiunea !ar Screen. Select0nd aceast opiune
se desc4ide fereastra meniu din care se selecteaz opiunile meniu cu aKutorul crora se construie'te
ecranul. *Fig. C2,.
Obs. 3n momentul desc4iderii ferestrei generatorului de ecrane se recomand desc4iderea ta!elelor1
setarea etic4etelor inde5 acti/e1 sta!ilirea relaiilor. Fo5Pro poate sal(a starea curent a ediului1
incluz&nd ast#el "n pro)raul )enerat instruciunile a#erente. :ltfel tre!uie scrise instruciuni care
aduc mediul Fo5Pro 6n situaia dorit1 6n /ederea funcionrii ecranului.
Fi'ierul ecran poate fi sal/at acion0nd sec/ena .ile Sa(e. #a prima sal/are1 6n fereastra
Sa/e fi'ierului i se /or preciza numele 'i locaia. "5tensia .SCX este implicit. De asemenea Fo5Pro
afi'eaz o fereastr de mesaK1 unde se poate opta pentru sal/area mediului Fo5Pro. Redenumirea
fi'ierului sau modificarea locaiei se realizeaz 6n fereastra Sa/e acion0nd sec/ena .ile Sa(e as8 .
Hn fi'ier ecran L.SCX se poate 6ncrca acion0nd sec/ena .ileOpenScreenselecie
1nue9#i'ier3.SC711Open33. Fereastra ;eneratorului de "crane se prse'te prin acionarea
tastei "sc. Dac s@au operat modificri1 fa de ultima sal/are1 Fo5Pro afi'eaz o fereastr de mesaK1
unde se poate opta pentru sal/area ultimei /ersiuni a fi'ierului >nume2fi'ier?.SCX *a ferestrei
;eneratorului de "crane,.
Pentru a putea rula ecranul *pentru a /erifica efectul ultimelor modificri pe parcursul proiectrii
ecranului, tre!uie generat programul 1nue9#i'ier3.SPR conform informaiilor furnizate 6n fereastra
;eneratorului de "crane.
Pentru a genera programul se acioneaz sec/ena Pro)ra,enerateselecie
1nue9#i'ier3.SC7 11,enerate33. %mplicit este selectat numele fi'ierului ecran curent *desc4is,1
nume care apare 6n fereastra te5t 6n partea de Kos a ferestrei ;enerate a'adar este suficient acionarea
Pro)ra,enerate 11,enerate33. :stfel se /a genera programul ecran conform specificrilor din
fereastra ;eneratorului de "crane desc4is.
1
Se /a realiza mai 6nt0i aplicaia *grad de dificultate sczut, prezentat 6n :ne5a Cursului 16.
2
e5tensia fi'ierelor ecran este SCX iar a fi'ierelor program generate de ecran este SPR *Screen PRogram,
Fig. C2
Curs 16. FOXPRO 2.6 DOS pag. M
Pentru a rula programul ecran1 generat anterior1 se acioneaz sec/ena Pro)raDoselecie
1nue9#i'ier3.SPR11Do33 ceea ce determin afi'area ecranului de introducere a datelor *efectul
rulrii programului generat,. Din ecranul de introducere se iese prin acionarea tastei "sc.
Opiunile de generare a programului ecran /or fi prezentate 6n detaliu 6n capitolele urmtoare.
10.9.2. Stabilirea caracteristicilor generale ale ecranului
Prin acionarea sec/enei ScreenScreen 6a:out se desc4ide fereastra de dialog Screen
#aBout *Fig. CG, care permite sta!ilirea condiiilor de proiectare pentru fi'ierul >nume2fi'ier?.SCX.
Eleentele #erestrei de dialo) Screen 6a:out-
!uton radio !;% Des<top- ecranul apare 6n fereastra Fo5Pro */aloare implicit,
!uton radio ! % =indo0- ecranul apare 6n fereastr distinct a/0nd 6n fundal fereastra Fo5Pro.
caseta te5t /ae- permite sta!ilirea numelui ferestrei 6n care /a acti/a programul ecran. Dac nu
este specificat1 Fo5Pro genereaz automat acest nume.
caseta te5t 5itle- permite editarea unui te5t care /a apare pe linia de titlu a ferestrei ecranului1
caseta te5t .ooter- permite editarea unui te5t care /a apare pe linia de su!sol a ferestrei ecranului.
declan'atorul >5:pe?- acti/ numai pentru ferestre ecran de tip 7indo<= desc4ide fereastra de
dialog 7indo< )Bpe *Fig. CJ,1 6n care se pot specifica-
lista ascuns 5:pe- permite selectarea urmtoarelor tipuri de fereastr-
fereastr S:ste-
:tri!ute-
Close
poate fi 6nc4is1
Float
poate fi mutat1
S4ado<
are um!r1
Ainimize
poate fi minimizat1
C4enare-
c4enar lat 'i orice !uton radio definit este /izi!il
fereastr Dialo)-
:tri!ute-
Float
poate fi mutat1
S4ado<
are um!r1
C4enare-
dou!le
Fig. CG Fig. CJ
pag. 6 Curs 16. FOXPRO 2.6 DOS
fereastr -lert-
:tri!ute-
Float
poate fi mutat1
S4ado<
are um!r1
C4enare-
dou!le
fereastr 4ser-
:tri!ute-
S4ado<
are um!r1
C4enare-
single
3n cazul ferestrei Hser se pot specifica atri!utele prezentate anterior prin acionarea-
declan'atoarelor corespunztoare din seciunea :tri!utes1
!utoanelor radio din seciunea &orders.
seciunea Color Schees- permite sta!ilirea culorii o!iectelor definite 6n fereastra
;eneratorului de "crane-
lista ascuns Priar:- pentru o!iectele din fereastra de configurare cu e5cepia listelor
ascunse1
lista ascuns Popup- pentru listele ascunse
Culorile o!iectelor mai pot fi definite prin selectarea o!iectului 'i acionarea sec/enei
ScreenColorN
declan'atorul implicit >>OF?? /alideaz setrile efectuate 'i determin re/enirea 6n
fereastra Screen #aBout.
seciunea Size- permite sta!ilirea dimensiunilor ferestrei ecranului
caseta te5t >ei)ht- permite editarea numrului de linii ale ferestrei ecranului1
caseta te5t =idth- permite editarea numrului de coloane ale ferestrei ecranului.
seciunea Position- acti/ numai pentru ferestre ecran de tip 7indo<= permite selectarea poziiei
ferestrei ecranului1 fa de fereastra Fo5Pro1 astfel-
comutatorul ?7@ Center- fereastr centrat1
pentru comutatorul O P Center neselectat1 se poate preciza poziia colului st0nga sus al ferestrei
ecran1 la linia Ro 'i coloana !olumn.
Obs. De aici 6nainte prin COD se (a "nele)e o succesiune de instruciuni .oxPro. Se reaminte'te c
instruciunile sunt formate din comenzi 'i funcii1 comanda fiind o!ligatorie. Comenzile 'i funciile ce
/or fi utilizate1 fie sunt cunoscute fie /or fi prezentate pe parcurs. Codurile /or fi introduse 6n ferestrele
pentru coduri *Code Snippets, 'i /or a/ea rolul de a realiza anumite aciuni la rularea programului ecran
6n ansam!lu.
seciunea Screen Code- specific o serie de instruciuni ce se /or e5ecuta la pornirea 'i dup
6nc4iderea ecranului.
comutatorul ? @ Setup8- specific instruciuni e5ecutate 6naintea afi'rii ecranului1 cum ar fi
instruciuni pentru-
'tergerea ecranului1
setarea unor /aria!ile sistem1
iniializarea unor /aria!ile definite de utilizator 'i utilizate ca /aria!ile glo!ale 6n programul
ecran1
selectarea zonei de lucru curente1
poziionarea 6n ta!ela din zona de lucru curent1
desc4iderea unor !aze de date1 dac acestea nu au #ost deschise "n oentul sal(rii
ediului .oxPro *>Sa/e? "n/ironment, Q1
sta!ilirea unor relaii 6ntre ta!elele !azei de date1 dac acestea nu au #ost de#inite "n
oentul sal(rii ediului .oxPro *>Sa/e? "n/ironment, Q1
Curs 16. FOXPRO 2.6 DOS pag. C
etc.
Dac comutatorul este acti/at OXP 6nseamn fereastra de cod Setup conine instruciuni.
comutatorul ? @ Cleanup A Procs8.- specific instruciuni e5ecutate dup 6nc4iderea ecranului1
cum ar fi instruciuni pentru-
proceduri sau funcii definite de utilizator1 apelate de codurile scrise 6n ferestrele pentru
coduri1 aferente o!iectelor de control ale ecranului
G
.
resetarea /aria!ilelor sistem la /alorile iniiale1
'tergerea din memorie a /aria!ilelor definite de utilizator1
6nc4iderea ferestrelor1
'tergerea ecranului1
etc.
Dac comutatorul este acti/at OXP 6nseamn fereastra de cod Cleanup R Procs conine
instruciuni.
Pentru introducerea codurilor 6n ferestrele >(ume2ecran?Setup 'i >(ume2ecran?Cleanup
se acioneaz 6n ordine comutatoarele O P CleanupRProcsN apoi O P Setup dup care se
acioneaz OF. 3n ferestrele desc4ise se introduc codurile aferente fiecrei ferestre.
Ferestrele se pot-
6nc4ide prin acionarea "sc sau acion0nd sec/ena .ileClose= 6n cazul 6n care s@au
operat modificri asupra codului coninut de fereastr1 se poate opta1 6ntr@o fereastr de
atenionare pentru sal/area sau renunare la sal/area modificrilor.
sal/a prin acionarea >Ctrl@7? sau odat cu sal/area ferestrei ;eneratorului de ecrane
comuta cu fereastra ;eneratorului de "crane prin acionarea sec/enei >Ctrl@F1?=
modificrile efectuate nu se pierd1 fereastra *desc4is dar inacti/, put0nd fi sal/at
odat cu fereastra ;eneratorului de "crane prin acionarea sec/enei .ileSa(e.
Obs. Prin acionarea sec/enei ScreenOpen -ll Snipets se desc4id toate ferestrele pentru coduri
asociate ecranului. Ferestrele pentru coduri1 desc4ise dar inacti/e *aflate 6n fundal, se pot acti/a prin
acionarea sec/enei =indo0selectare 1nue9#ereastr3 din partea de Kos a ferestrei meniu.
seciunea Read Clauses- permite specificarea clauzelor de citire a o!iectelor coninute de ecran-
comutatorul ? @ =hen8- 6nainte de a iniia operaia de citire a unui o!iect1 efectuat 6n ecran se
testeaz condiia clauzei "hen. Operaia de citire /a fi lansat sau nu dup cum sunt 6ndeplinite
sau nu condiiile asociate clauzei. Prin acionarea comutatorului se desc4ide fereastra de dialog
74en care permite editarea unei proceduri sau construirea unei e5presii care constituie condiia
clauzei.
comutatorul ? @ Balid8- operaia de citire a unui o!iect1 efectuat 6n ecran se 6nc4eie sau nu
dup cum condiia clauzei #alid este 6ndeplinit sau nu. Prin acionarea comutatorului se
desc4ide fereastra de dialog $alid care permite editarea unei proceduri sau construirea unei
e5presii care constituie condiia clauzei.
comutatorul ? @ -cti(ate8- e5presia logic asociat clauzei $cti%ate este e/aluat.-
6n timpul citirii o!iectelor1
la sc4im!area ferestrei curente
la terminarea citirii.
comutatorul ? @ Deacti(ate8- e5presia logic asociat clauzei $cti%ate este e/aluat.-
c0nd se aduce 6n fa o alt fereastr
comutatorul ? @ Sho08- instruciunea corespunztoare comutatorului este e5ecutat de fiecare
dat c0nd se e5ecut instruciunea S9O7 ;")S1 care reafi'eaz coninutul o!iectelor c0mp ale
ecranului.
G
/ezi funcia apelat de programul pentru introducerea /alorilor /aria!ilelor1 Curs 1G1 pag 11 8 121 Function %e'ire
pag. + Curs 16. FOXPRO 2.6 DOS
Prin acionarea unui comutator din seciunea Read Clauses se desc4ide fereastra aferent
comutatorului1 a/0nd numele acestuia *Fig. CM,. Ferestrele asociate comutatoarelor din aceast
seciune sunt similare.
3n fereastra asociat comutatorului se pot-
construi e5presii ale condiiilor clauzelor1 6n fereastra constructorului de e5presii desc4is prin
acionarea !utonului radio * , "5presion urmat de acionarea declan'atorului >"ditN?=
edita proceduri *coduri,-
direct 6n zona de editare a ferestrei= se acceseaz prin acionarea tastei )a!= se iese prin
acionarea >Ctrl@)a!?1
6n fereastra desc4is *Code Snippet, prin acionarea !utonului radio * , Procedure urmat de
acionarea declan'atorului >"ditN?= fereastra Code Snippet se prse'te 6n condiiile prezentate
la seciunea Screen Code.
Seciunea En(ironent: permite controlul mediului Fo5Pro. Aediul Fo5Pro se refer la-
ta!ele desc4ise 6n zone de lucru distincte1
zona de lucru curent1
starea fi'ierelor inde5 *acti/e 8 inacti/e,1
relaii 6ntre ta!ele.
declan'atorul 1Sa(e3 sal/eaz starea 6n care se afl mediul Fo5Pro 6n momentul acionrii
acestuia. :stfel1 comenzile Fo5Pro pentru desc4iderea ta!elelor1 selectarea zonei de lucru
curente1 desc4iderea fi'ierelor inde5 precum 'i pentru relaionarea ta!elelor /or fi generate
automat1 neai#iind necesar scrierea acestor instruciuni 6n fereastra desc4is prin
acionarea comutatorului O P Setup1 seciunea Screen Code=
declan'atorul 1Restore3 - dac dup sal/are1 starea mediului a fost modificat1 refacerea ei
se realizeaz prin acionarea declan'atorului=
declan'atorul 1Clear3 - 'terge informaiile referitoare la starea mediului Fo5Pro sal/ate
anterior.
Comutatorul ? @ -dd -lias- dac este acionat1 se /or afi'a aliasurile ta!elelor 6naintea numelor de
c0mpuri ce aparin ta!elei respecti/e *e5. Elevi. (ume1 Elevi. (r2mat ,.
Pentru :plicaia 1 se /or sta!ili urmtoarele caracteristici generale-
Obs aplicaia prezentat 6n continuare difer de aplicaia prezentat 6n ane5 prin faptul c instruciunile
aferente o!iectelor de control din ecran sunt grupate 6n proceduri. :ceste proceduri sunt scrise 6n
fereastra asociat comutatorului ? @ Cleanup A Procs8 din seciunea Screen Code. Prin acionarea
unui o!iect de control 6n timpul rulrii ecranului1 se apeleaz de fapt instruciunile din procedura
asociat acelui o!iect.
"cran de tip !% =indo01
(ame- "CR:(
)itle- %()RODHC"R": D:)"#OR "#"$%#OR
Footer- CHRS :SH)OR :(:#%S) PRO;R:A:)OR
Fig. CM
Curs 16. FOXPRO 2.6 DOS pag. .
Size-
9eig4t- 1.
7idt4- CC
Position ?7@ Center
?7@ -dd -lias
se desc4ide *6n fereastra $ie<, ta!ela "#"$%.D&F creat anterior *poate fi /id, 6n zona de lucru 11
se inde5eaz cu c4eia de inde5are (r2mat. Se acioneaz declan'atorul >Sa/e? din seciunea
"n/ironment e/it0nd astfel scrierea instruciunilor de desc4idere 'i inde5are a ta!elei
E6EBI Setup
C
@ se editeaz 6n fereastra asociat comutatorului ? @ Setup
+(NAME e,'!- && numele ecranului
+READCLAUSE NOLOCK
+SECTION1 && ecranul #&streaz& setarea 'ET T(L) *i stabile*te 'ET +IEL,' O++
PRIVATE .e,/#&$FIELDS0.e,/#&$TALK && variabile locale
IF SET12TALK23 ) 2ON2
SET TALK OFF
4..e,/#&$TALK ) 2ON2
ELSE
4..e,/#&$TALK ) 2OFF2
ENDIF
4..e,/#&$FIELDS)SET1*FIELDS*3
SET FIELDS OFF
IF 4..e,/#&$TALK ) 2ON2
SET TALK ON
ENDIF
&& se definesc (,E+INE-nume_variabil&. variabilele ce vor "nma/azina mesa0ele
&& furnizate de #ro/ramul ecran "n tim#ul rul&rii%
+SECTION2
+DEFINE C_DBFEMPT5 *B!6! 7e 7!e ese 89!$!0 se !7!&8! 9 :-'e8#s'!'e;*
+DEFINE C_EDITS *Te'4#-!# e7#!'e! <*
+DEFINE C_TOPFILE *I-,e%& 7e =#s#e'*
+DEFINE C_ENDFILE *S=>'s# 7e =#s#e'*
+DEFINE C_BRTITLE *Se $9,!$#6e!6! #-'e8#s'!'e!*
+DEFINE C_NOLOCK *N& se %9!e $9,!$#6! ?? :-,e',!# 4!# >'6#&.*
+DEFINE C_ECANCEL *E7#!'e :-'e'&%!.*
+DEFINE C_DELREC *Se'8e# :-'e8#s'!'e! se$e,!!;*
+DEFINE C_DELNOTE *Se se'8 :-'e8#s'!'#$e...*
+DEFINE C_READONL5 *T!"e$! %'9e@!! $! s,'#e'e. N& se %9!e e7#!.*
+DEFINE C_NOTABLE *T!"e$! -ese$e,!!. Des,/#7e# !"e$!.*
+DEFINE C_BADEXPR *EA%'es#e #-.!$#7!.*
&& se declar& variabilele locale utilizate #entru controlul o#era1iilor efectuate
&& de ecran
PRIVATE se_e7#e!6!0se_!7!&8!0.#7
PRIVATE .e,/#&$DELETE0.e,/#&$ERROR0.e,/#&$ESCAPE
PRIVATE !$#!s0&$#4!_#-'e8
PRIVATE ese_'e!79-$B
&& dac& tabela nu este /&sit& la loca1ia salvat& #rin -'ave. Environment se
&& afi*eaz& mesa0ul cores#unz&tor variabilei 2_NOT(3LE4 definit& anterior%
IF EMPT51ALIAS133
(AIT (INDO( C_NOTABLE
RETURN
J
Comentariile apar cu stilul &talic *6nclinat,1 precedate de caracterele RR. (u este o!ligatorie scrierea lor 6n ferestrele
pentru coduri.
pag. 1D Curs 16. FOXPRO 2.6 DOS
ENDIF
&& se ini1ializeaz& variabilele locale utilizate #entru controlul o#era1iilor
&& efectuate "n ecran
4..#7) **
4.!$#!s)SELECT13
4.se_e7#e!6!).F.
4.se_!7!&8!).F.
4..e,/#&$DELETE)SET1*DELETE*3
SET DELETED ON
4.&$#4!_#-'e8 ) 1
4..e,/#&$ERROR)ON1*e''9'*3
ON ERROR DO 7e%!-!'e && "n caz de eroare se execut& #rocedura depanare
.e,/#&$ESCAPE)ON1*KE5*0*ESCAPE*3
ON KE5 LABEL ESCAPE
&& dac& tabela este 5ead Onl64 se afi*eaz& un mesa0 "n acest sens
4.ese_'e!79-$B)IIF1ISREAD130.T.0.F.3
IF 4.ese_'e!79-$B
(AIT (INDO( C_READONL5 TIMEOUT 1
ENDIF
&& dac& tabela este 5ead Onl64 se afi*eaz& un mesa0 "n acest sens$ se #oate o#ta
&& #entru ad&u/area sau nu a unei "nre/istr&ri vide
IF RECCOUNT13)C AND NOT 4.ese_'e!79-$B AND =9A_!$e'1C_DBFEMPT53
APPEND BLANK
ENDIF
GOTO TOP && se #ozi1ioneaz& cursorul #e #rima "nre/istrare din tabel&
SCATTER MEMVAR MEMO && valorile c7m#urilor #rimei "nre/istr&ri sunt transferate
&& variabilelor de memorie cu acela*i nume%
CLEAR && se *ter/e ecranul
E6EBI Cleanup @ se editeaz 6n fereastra asociat comutatorului ? @ Cleanup A Codes 8
&& se refac set&rile active "nainte de lansarea ecranului4 cu valorile memorate "n
&& variabilele denumite vechiul8
SET DELETED &.e,/#&$DELETE
SET FIELDS &.e,/#&$FIELDS
ON ERROR &.e,/#&$ERROR
ON KE5 LABEL ESCAPE &.e,/#&$ESCAPE
&& se *ter/e zona ocu#at& de ecran4 "n func1ie de setarea rezolu1iei #l&cii
&& /rafice
DO CASE
CASE _DOS AND SET1*DISPLA5*3)*VGA2D*
E2F0C CLEAR TO 2F0GH
CASE _DOS AND SET1*DISPLA5*3)*VGADC*
EFH0C CLEAR TO FH0GH
CASE _DOS
E2F0C CLEAR TO 2F0GH
ENDCASE
IIII P R O C E D U R I IIII
&& #rocedurile act_cit *i deact_cit sunt a#elate "n sec1iunea 5ead 2lauses la
&& comutatoarele 9 : (ctivate *i 9 : ,eactivate (vezi #a/% ;% 'unt utilizate "n
&& cadrul unui #ro/ram com#lex4 cu mai multe ecrane4 /estionate de un meniu4 unde
&& ecranul este a#elat #rin ac1ionarea unei o#1iuni meniu% Ecranul nu #oate fi
&& #&r&sit c7t tim# nu sunt "ncheiate o#era1iunile #rev&zute de acesta%
&& #rocedura de activare a citirii #ermite #&r&sirea ferestrei ecranului numai
Curs 16. FOXPRO 2.6 DOS pag. 11
&& du#& terminarea edit&rii (ad&u/are4 modificare
PROCEDURE !,_,#
IF se_e7#e!6!
ACTIVATE (INDO( *e,'!-*
(AIT (INDO( C_EDITS NO(AIT && mesa0 #entru terminarea edit&rii
ENDIF
IF NOT (VISIBLE1(OUTPUT133
CLEAR READ
RETURN .T.
ENDIF
RETURN .F.
&& #rocedura de deactivare a citirii #ermite aducerea "n fa1& a unei alte ferestre
&& ecran numai dac& nu se editeaz& (ad&u/are4 modificare%
PROCEDURE 7e!,_,#
IF NOT se_e7#e!6!
SELECT 14.!$#!s3
SJO( GETS
ENDIF
DO REFRESJ
RETURN
&& "n cazul a#ari1iei unei erori4 "n fereastra de mesa0 se afi*eaz& mesa0ul de
&& eroare /enerat de +ox<ro
PROCEDURE 7e%!-!'e
(AIT (INDO( 4ess!8e13
RETURN
&& #rocedura val_but determin& execu1ia setului de instruc1iuni aferente fiec&rei
&& ac1ion&ri a obiectelor de control ale ecranului% 'elec1ia cazului se
&& realizeaz& "n func1ie de valoarea #arametrului m.nume_but asociat ca variabil&
&& de memorie fiec&rui obiect de control al ecranului%
PROCEDURE .!$_"&
PARAMETER 4.-&4e_"&
DO CASE
&& dac& se ac1ioneaz& declan*atorul <Inceput> se efectueaz& salt la "nce#utul
tabelei%
CASE 4.-&4e_"&)*INCEPUT*
GO TOP
(AIT (INDO( C_TOPFILE NO(AIT && mesa0 =Ince#ut de fi*ier>
&& dac& se ac1ioneaz& declan*atorul <Anterior> se efectueaz& salt la "nre/istrarea
&& anterioar&%
CASE 4.-&4e_"&)*ANTERIOR*
IF NOT BOF13
SKIP ?1
ENDIF
IF BOF13
(AIT (INDO( C_TOPFILE NO(AIT
GO TOP
ENDIF
&& dac& se ac1ioneaz& declan*atorul <Urmtor> se efectueaz& salt la "nre/istrarea
&& urm&toare%
CASE 4.-&4e_"&)*URMATOR*
IF NOT EOF13
SKIP 1
ENDIF
IF EOF13
(AIT (INDO( C_ENDFILE NO(AIT
GO BOTTOM
ENDIF
pag. 12 Curs 16. FOXPRO 2.6 DOS
&& dac& se ac1ioneaz& declan*atorul <Sfrit> se efectueaz& salt la sf7r*itul
&& tabelei%
CASE 4.-&4e_"&)*SFARSIT*
GO BOTTOM
(AIT (INDO( C_ENDFILE NO(AIT
&& dac& se ac1ioneaz& declan*atorul <Cutare> se a#eleaz& #rocedura cutare4
&& ce va fi descris& ulterior %
CASE 4.-&4e_"&)*CAUTA*
DO ,!&!'e
&& #entru economie de s#a1iu "n fereastra ecran4 du#& ac1ionarea declan*atoarelor
&& <Adugare> sau <Editare> declan*atorul <Editare> se transform& "n <Salve!>
&& iar <"tergere> "n <#enun$>
&& dac& se ac1ioneaz& declan*atorul <Adugare> se #re/&te*te ac1iunea de ad&u/are%
CASE 4.-&4e_"&)*ADAUGA* AND NOT se_e7#e!6! && ad&u/area nu se #oate
&& realiza dac& ac1iunea de editare este "n curs de desf&*urare$
se_e7#e!6!).T. && se certific& ac1iunea de editare$
se_!7!&8!).T. && se certific& ac1iunea de ad&u/are$
)e7#!'e1*ADAUGA*3 && se a#eleaz& #rocedura editare cu #arametrul
&& (,(?@(% <rocedura va fi descris& ulterior%
_,&'9"@)1 && cursorul se #ozi1ioneaz& #e #rimul c7m# de ad&u/are
DO 'e='es/ && se a#eleaz& #rocedura refresh
SJO( GETS
RETURN
&& dac& se ac1ioneaz& declan*atorul <Editare>4 #rocesul de editare nefiind "n curs
&& de desf&*urare4 se va #re/&ti o#era1ia de editare #ro#riuzis&%
CASE 4.-&4e_"&)*EDITEAKA* AND NOT se_e7#e!6!
&& dac& tabela nu con1ine "nre/istr&ri4 nu se #oate edita$ se afi*eaz& mesa0$
IF EOF13 OR BOF13
(AIT (INDO( C_ENDFILE NO(AIT
RETURN
ENDIF
&& la lucrul "n re1ea nu se #oate accesa tabela la mai multe #osturi simultan
IF RLOCK13 && tabela #oate fi accesat&
se_e7#e!6!).T. && se certific& ac1iunea de editare$
_,&'9"@)1
DO 'e='es/
RETURN
ELSE
(AIT (INDO( C_NOLOCK && mesa0 de a*te#tare
ENDIF
&& dac& se ac1ioneaz& declan*atorul <Editare>4 #rocesul de editare fiind "n curs
&& de desf&*urare4 se va realiza o o#era1ie de salvare #ro#riuzis&% ,eclan*atorul
&& <Editare> afi*eaz& acum #rom#terul <Salve!>
CASE 4.-&4e_"&)*EDITEAKA* AND se_e7#e!6!
IF se_!7!&8! && dac& se adau/& o "nre/istrare
)e7#!'e1*SALVEAKA*3&& se a#eleaz& #rocedura editare cu
&& #arametrul '(LVE(A(% <rocedura va fi descris& ulterior%
ELSE && altfel "nseamn& c& se editeaz& (modific& "nre/istrarea
GATJER MEMVAR MEMO && modificarea este scris& "n tabel&
ENDIF
UNLOCK && #e re1ea4 tabela devine accesabil& (se deblocheaz&
se_e7#e!6!).F. && editarea ia sf7r*it
se_!7!&8!).F. && ad&u/area ia sf7r*it
Curs 16. FOXPRO 2.6 DOS pag. 1G
DO 'e='es/
&& dac& se ac1ioneaz& declan*atorul <"tergere>4 #rocesul de editare fiind "n curs
&& de desf&*urare4 se va renun1a la salvarea modific&rii% ,eclan*atorul <Editare>
&& afi*eaz& acum #rom#terul <#enun$>
CASE 4.-&4e_"&)*STERGE* AND se_e7#e!6!
IF se_!7!&8! && dac& se adau/& o "nre/istrare
)e7#!'e1*RENUNTA*3 && se a#eleaz& #rocedura editare cu
&& #arametrul 5EN?NT(% <rocedura va fi descris& ulterior%
ENDIF
se_e7#e!6!).F. && editarea ia sf7r*it
se_!7!&8!).F. && ad&u/area ia sf7r*it
UNLOCK && #e re1ea4 tabela devine accesabil& (se deblocheaz&
(AIT (INDO( C_ECANCEL NO(AIT
DO 'e='es/
&& dac& #rocesele de ad&u/are sau editare nu sunt "n curs de desf&*urare4
&& ac1ionarea declan*atorului <Stergere> are ca efect *ter/erea "nre/istr&rii
CASE 4.-&4e_"&)*STERGE*
IF EOF13 OR BOF13
(AIT (INDO( C_ENDFILE NO(AIT && mesa0 B fi*ier /ol
RETURN
ENDIF
&& ac1ionarea declan*atorului -"tergere. a#eleaz& #rocedura fo%_alert&C_'E(#EC)
&& care deschide o fereastr& de aten1ionare cu 2 declan*atoareC -*+. *i
&& --#enun$.. (im#licit$ dac& se ac1ioneaz& <*+> atunci a#elul #rocedurii
&& fo%_alert&C_'E(#EC) ce va fi descris& ulterior4 returneaz& valoarea ,#UE *i
&& are loc *ter/erea #ro#riuzis&%
IF =9A_!$e'1C_DELREC3
DELETE
IF NOT EOF13 AND DELETED13
SKIP 1
ENDIF
IF EOF13
(AIT (INDO( C_ENDFILE NO(AIT
GO BOTTOM
ENDIF
ENDIF
&& la ac1ionarea declan*atorului -Ie*ire.4 ecranul este "nchis
CASE 4.-&4e_"&)*EXIT*
4."!#$9&).T. && necesar dac& se utilizeaz& +ox(##
CLEAR READ
RETURN
ENDCASE
SCATTER MEMVAR MEMO
SJO( GETS
RETURN
&& #rocedura refre-. este a#elat& du#& o#era1iile de ad&u/are4 editare4 *ter/ere
&& *i are rolul de a activa D dezactiva comutatoarele ecranului "n func1ie de
&& o#era1ia ce se execut&% O#era1ia ce se execut& este s#ecificat& #rin
&& variabilele de memorie m%
&& de asemenea stabile*te #rom#terul declan*atoarelor -Editare. *i -'ter/ere. "n
&& func1ie de valoarea variabilei m%se_editeaz&
PROCEDURE REFRESJ
DO CASE
CASE 4.ese_'e!79-$B AND RECCOUNT13)C
SJO( GETS DISABLE
pag. 1J Curs 16. FOXPRO 2.6 DOS
SJO( GET "-_eA# ENABLE
CASE 4.ese_'e!79-$B
SJO( GET "-_!7!&8! DISABLE
SJO( GET "-_se'8e DISABLE
SJO( GET "-_se'8e DISABLE
CASE 1RECCOUNT13)C OR EOF133 AND NOT 4.se_e7#e!6!
SJO( GETS DISABLE
SJO( GET "-_!7!&8! ENABLE
SJO( GET "-_eA# ENABLE
CASE 4.se_e7#e!6!
SJO( GET "-_#-,e%& DISABLE
SJO( GET "-_!-e'#9' DISABLE
SJO( GET "-_,!&! DISABLE
SJO( GET "-_&'4!9' DISABLE
SJO( GET "-_s=!'s# DISABLE
SJO( GET "-_!7!&8! DISABLE
SJO( GET "-_eA# DISABLE
SJO( GET "-_e7#01 PROMPT 2\LS!$.e62
SJO( GET "-_se'8e01 PROMPT 2\LRe-&-2
ON KE5 LABEL ESCAPE DO .!$_"& (ITJ *STERGE*
RETURN
OTJER(ISE
SJO( GET "-_e7#01 PROMPT 2\LE7#!'e2
SJO( GET "-_se'8e01 PROMPT 2\LSe'8e'e2
SJO( GETS ENABLE
ENDCASE
ON KE5 LABEL ESCAPE
RETURN
PROCEDURE e7#!'e
PARAMETER 4.!,#9-!'e
DO CASE
CASE 4.!,#9-!'e ) *ADAUGA*
SCATTER MEMVAR MEMO BLANK && ini1ializare cu valoare vid& a
&& variabilelor ecran
CASE 4.!,#9-!'e ) *SALVEAKA*
INSERT INTO 1ALIAS133 FROM MEMVAR && valoarea variabilelor ecran trece
&& "n c7m#urile omonime ale tabelei ((LI('(
CASE 4.!,#9-!'e ) *RENUNTA* && nu se "nt7m#la nimic$ se renun1& la ac1iune
ENDCASE
RETURN
&& #rocedura fo%_alert define*te fereastra alerta cu dou& declan*atoare <*+> *i
&& <#enun$>% Variabila de memorie asociat& declan*atoarelor este m.buton_alert
&& care ini1ial are valoarea 2% ,ac& se ac1ioneaz& -O). m.buton_alert #rime*te
&& valoarea ! iar dac& se ac1ioneaz& -5enun1&. #rime*te valoarea 2% <rocedura
&& returneaz& T5?E numai dac& m.buton_alert/0%
PROCEDURE =9A_!$e'
PARAMETER !$e'_4es!@
PRIVATE "&9-_!$e'
4."&9-_!$e')2 && m.buton_alert #rime*te valoarea 2
&& definirea ferestrei alert
DEFINE (INDO( !$e'!M
FROM INT11SRO(13?123N230INT11SCOL13?D23N23 M
TO INT11SRO(13?123N23OP0INT11SCOL13?D23N23OD1 M
FLOAT NOCLOSE NOMINIMIKE DOUBLE M
COLOR SCJEME 12 TITLE (TITLE13
MOVE (INDO( !$e'! CENTER
ACTIVATE (INDO( !$e'! NOSJO(
E 201DC?LEN1!$e'_4es!@33N2 SA5 !$e'_4es!@ && afi*area mesa0ului de alert&
Curs 16. FOXPRO 2.6 DOS pag. 1M
E 601Q GET 4."&9-_!$e' SIKE 101C0FM && definirea celor 2 declan*atoare
PICTURE 2EIJT \LOKM\;\<\LRe-&-!2
ACTIVATE (INDO( !$e'!
READ C5CLE MODAL && se a*tea#t& citirea (ac1ionarea unui declan*ator% ,ac&
&& se cite*te O)4 m.buton_alert #rime*te valoarea !
RELEASE (INDO( !$e'! && fereastra alerta se "nchide
RETURN 4."&9-_!$e')1 && se returneaz& T5?E numai dac& m%buton_alertE!
&& #rocedura cautare realizeaz& localizarea unei "nre/istrari "n tabel&4 "ntrFo
&& fereastr& 35OG'E% Hnre/istrarea selectat& cu mouseFul sau #rin s&/e1i
&& direc1ionale (marcat& cu band& de alt& culoare devine "nre/istrare curent&%
PROCEDURE ,!&!'e
PRIVATE ,!4%&'#0#
&& definirea ferestrei locali!are
DEFINE (INDO( $9,!$#6!'e FROM 101 TO 1D0FCM
S5STEM GRO( CLOSE KOOM FLOATM
SJADO( COLOR SCJEME 1C
MOVE (INDO( $9,!$#6!'e CENTER
4.,!4%&'#)SET1*FIELDS*023
&& al/oritm #entru stabilirea c7m#urilor care vor fi afi*ate "n fereastra 35OG'E
IF NOT EMPT51RELATION1133
SET FIELDS ON
IF 4.,!4%&'# LR *GLOBAL*
SET FIELDS GLOBAL
ENDIF
IF EMPT51FLDLIST133
4.#)1
DO (JILE NOT EMPT51OBSVAR14.#33
IF ATC1*M.*0OBSVAR14.#33)C
SET FIELDS TO 1OBSVAR14.#33
ENDIF
4.# ) 4.# O 1
ENDDO
ENDIF
ENDIF
&& "n fereastra localizare se vizualizeaz& "n modul 35OG'E c7m#urile setate
&& anterior
BRO(SE (INDO( $9,!$#6!'e NOEDIT NODELETE NOMENU TITLE C_BRTITLE
SET FIELDS &,!4%&'#
SET FIELDS OFF
RELEASE (INDO( $9,!$#6!'e
RETURN
Comutatorul ?-cti(ate@ I 6n fereastra asociat comutatorului se /alideaz !utonul radio
*T, Expression. 3n zona de editare se trece apelul procedurii de acti/are a citirii1 act9cit ! %1 ceea ce
determin e5ecuia procedurii act9cit editat 6n fereastra comutatorului Cleanup R ProcsN
Comutatorul ?Deacti(ate@ I 6n fereastra asociat comutatorului se /alideaz !utonul radio
*T, Expression. 3n zona de editare se trece apelul procedurii de acti/are a citirii1 deact9cit ! %1 ceea
ce determin e5ecuia procedurii act9citD editat 6n fereastra comutatorului Cleanup R ProcsN
10.9.'. Definirea obiectelor
Pe parcursul e5ecuiei programului generat1 comunicarea dintre utilizator 'i program se face prin
intermediul o!iectelor de control. Dup sta!ilirea caracteristicilor glo!ale ale ecranului1 /or fi definite
o!iectele coninute 6n ecran 'i proprietile acestora.
)ipuri de o!iecte ce pot fi definite 6n fereastra de configurare a ecranului-
Obiecte )ra#ice I linii 'i c4enare1 folosite pentru a 6m!unti lizi!ilitatea 'i aspectul ecranului.
O!iectele grafice se creaz astfel-
pag. 16 Curs 16. FOXPRO 2.6 DOS
se mut cursorul 6n poziia unde /a aprea colul din st0nga sus al c4enarului=
se acioneaz una din sec/enele ScreenEFox sau >CtrlGF? care au ca efect apariia 6n
fereastra de configurare a unui c4enar care clipe'te1 semnaliz0nd faptul c dimensiunile sale pot
fi modificate=
cu aKutorul tastelor direcionale sau prin drag and drop cu mouse@ul se aduce ecranul la
dimensiunile dorite=
crearea c4enarului se 6nc4eie prin acionarea tastei "nter=
un c4enar poate fi mutat prin selectare cu mouse@ul 'i acionarea tastelor direcionale sau drag
and drop=
dimensiunile c4enarului pot fi modificate prin acionarea tastei Ctrl apoi drag and drop.
Prin acionarea unui du!lu clicE pe c4enar se desc4ide fereastra de dialog Fox. 3n care se
acioneaz astfel-
Htiliz0nd !utoanele radio din fereastr se pot sta!ili tipul liniei de c4enar-
*T, Single line I linie simpl1
*T, Dou!le line I linie du!l1
*T, Panel I linie 6ngro'at plin1
*T, C4aracter I linie c4enarului /a fi format din caracterul ales din fereastra de dialog C4aracter.
Prin acionarea declan'atorului 1.ill Character8 3 se poate specifica un caracter cu care /a fi
umplut interiorul c4enarului. 3n acest caz c4enarul /a acoperi o!iectele1 create anterior1 6ncadrate de
acesta. Pentru a putea /izualiza o!iectele aflate Udedesu!tV1 c4enarul
M
poate fi trimis 6n fundal prin
acionarea uneia din sec/enele ScreenESend to Fac< sau >CtrlGH?. Operaia in/ers1 de aducere 6n
fa1 se realizeaz prin acionarea uneia din sec/enele ScreenEFrin) to .ront sau >CtrlG,?.
Prin acionarea comutatorului ? @ CoentD c4enarului i se poate asocia un comentariu.
Din fereastra de dialog Fox se iese prin acionarea declan'atorului implicit >>OF??1 /alid0nd
caracteristicile c4enarului1 sau prin acionarea declan'atorului >Cancel?1 renun0nd la caracteristicile
selectate.
Obs. #iniile1 fiind considerate un c4enar cu o singur dimensiune1 se definesc 6n mod similar
c4enarelor.
Obiecte c&p
se mut cursorul 6n poziia unde /a aprea c0mpul=
se acioneaz una din sec/enele ScreenE.ield8 sau >CtrlG.? care au ca desc4iderea ferestrei
de dialog .ield *Fig. C6,-
Seciunea .ield-
!utonul radio *T, Sa: @ dac este ales acest !uton radio1 6n timpul e5ecuiei programului generat1 pe
ecran /a fi afi'at rezultatul e/alurii e5presiei asociate c0mpului1 rezultat ce nu poate fi editate.
M
Wi dealtfel1 orice o!iect creat 6n fereastra de configurare a ecranului.
Fig. C6
Curs 16. FOXPRO 2.6 DOS pag. 1C
"5presia poate fi o /aria!il de memorie sau c0mp al ta!elei. :cest !uton se utilizeaz pentru
afi'area pe ecran a informaiilor ce nu /or fi modificate.
!utonul radio *T, ,et @ dac este ales acest !uton radio1 6n timpul e5ecuiei programului generat1 pe
ecran /a fi afi'at rezultatul e/alurii e5presiei asociate c0mpului. "5presia poate fi o /aria!il de
memorie sau c0mp al ta!elei. :cest !uton se utilizeaz pentru afi'area pe ecran coninutul unui
c0mp sau /aloarea unei /aria!ile de memorie1 acestea put0nd fi modificate. Hzual1 /alorile afi'ate 6n
c0mpuri ;et se iniializeaz cu !lanc1 fiind utilizate pentru introducerea de la tastatur a /alorii
/aria!ilei asociate c0mpului. Hlterior1 utiliz0nd comanda ;:)9"R1 coninutul /aria!ilei asociate
este stocat 6n c0mpul ta!elei.
!utonul radio *T, Edit I alegerea acestui !uton are acela'i efect ca 'i 6n cazul * ,;et1 dar e5presia
asociat unui astfel de c0mp este afi'at pe ecran 6ntr@o zon de editare care ocup o suprafa mai
mare. 3n timpul editrii1 zona /a fi prsit prin acionarea com!inaiei 1CtrlG5ab3. :cest !uton se
utilizeaz pentru a afi'a sau edita cantiti mari de informaie. Hzual1 !utonul se utilizeaz pentru
citirea c0mpurilor memo *6n mod similar cu citirea ;et1 de data aceasta fiind necesar comanda
;:)9"R cu opiunea A"AO,
Declan'atorul 1,et83. 3n funcie de !utonul radio selectat anterior1 declan'atorul de/ine 1Sa:83D
1,et83 sau 1Edit83. "5presia asociat c0mpului poate fi editat direct 6n caseta te5t din dreapta
declan'atorului sau 6n fereastra constructorului de e5presii1 desc4is prin acionarea declan'atorului.
Declan'atorul 1.orat83 . Prin acionarea acestui declan'ator se desc4ide fereastra de dialog din Fig.
CC. Pentru fiecare tip de date specificat prin !utoanele radio ! %Character1 ! %/ueric1 ! %Date1
! %6o)ical1 pot fi sta!ilite opiuni de editare prin acionarea comutatoarelor din seciunea Editin)
Options. Pentru fiecare tip de dat sunt afi'ate comutatoarele specifice tipului respecti/. Semnificaiile
acestor opiuni sunt prezentate 6n ta!elele urmtoare-
Opiuni de formatare pentru date de tip 'ir de caractere-
OPII4/E- MOD46 DE -.IJ-RE
-lpha Onl: Permite doar caractere alfa!etice
5o 4pper Case )oate caracterele sunt con/ertite 6n litere mari
R Caracterele non@format sunt afi'ate dar nu 'i pstrate 6n c0mp
Edit KSE5L date %nformaiile sunt editate ca o dat calendaristic 6n format curent
Fritish Date %nformaiile sunt editate ca o dat calendaristic 6n format englez
5ri Spaiile goale de la 6nceputul 'i sf0r'itul c0mpului sunt eliminate
Ri)ht -li)n %nformaiile sunt afi'ate la dreapta 6n o!iectul c0mp
Center %nformaiile sunt afi'ate centrat
Fig. CC
pag. 1+ Curs 16. FOXPRO 2.6 DOS
Select on Entr: Selecteaz 6ntregul c0mp c0nd cursorul se afl 6n interiorul acestuia
Opiuni de formatare pentru date de tipul dat calendaristic-
Edit KSE5L date %nformaiile sunt editate ca o dat calendaristic 6n format curent
Fritish Date %nformaiile sunt editate ca o dat calendaristic 6n format englez
Select on Entr: Selecteaz 6ntregul c0mp c0nd cursorul se afl 6n interiorul acestuia
Opiuni de formatare pentru date de tip numeric-
6e#t Husti#: )oate informaiile de tip numeric pentru c0mpul specificat /or 6ncepe
din poziia cea mai din st0nga a c0mpului
Flan< i# Mero Dac o!iectul c0mp conine /aloarea D1 se /a afi'a !lanc
!/e)ati(e% (umerele negati/e /or fi afi'ate 6nre paranteze
Edit KSE5L date %nformaiile sunt editate ca o dat calendaristic 6n format curent
Fritish Date %nformaiile sunt editate ca o dat calendaristic 6n format englez
CR i# Poziti(e CR *credit, /a apare dup un numr poziti/
DF i# /e)ati(e D& *de!it, /a apare dup un numr negati/
6eadin) Meros )ipre'te toate zerourile din faa /alorii din c0mp
Currenc: :fi'eaz 6n format numeric curent
Scienti#ic :fi'eaz 6n format 'tiinific
Select on Entr: Selecteaz 6ntregul c0mp c0nd cursorul se afl 6n interiorul acestuia
Dac s@au specificat opiuni de formatare1 6n caseta te5t asociat declan'atorului >FormatN? /a
fi generat un cod de formatare. Codul poate fi trecut direct de la tastatur1 caracterele a/0nd
semnificaia din ta!elul urmtor-
C-R-C5ER SEM/I.IC-IIE
- :fi'eaz numai caractere alfa!etice
2 Selecteaz 6ntregul c0mp c0nd cursorul se afl 6n interiorul acestuia
6 :fi'eaz numai informaii de tip logic
+ Pentru informaii de tip caracter1 afi'eaz numai cifre= afi'eaz cifre 'i semne pentru
informaii de tip numeric
N :fi'eaz cifre1 spaii goale 'i semne
O :fi'eaz caracterul UXV 6n faa /alorilor numerice
OO :fi'eaz caracterul UXXV 6n faa /alorilor numerice

:fi'eaz caracterul UV 6n faa /alorilor numerice


P "fectueaz con/ersia litere mici Y litere mari
. Specific poziia punctului zecimal
D Separ cifrele
Fereastra de dialog din Fig. CC /a fi 6nc4is prin acionarea declan'atorului implicit 11O233
re/enindu@se 6n fereastra de dialog Screen .ield *Fig. C6,.
Seciunea Ran)e *Fig. C6,. Pentru cazul 6n care informaia cuprins 6ntr@un anumit c0mp nu tre!uie s
dep'easc anumite limite1 acestea pot fi specificate prin intermediul comutatoarelor O PHpperN
*superior, 'i O P #o<er N *inferior,. Prin acionarea unuia dintre ace'ti comutatori se desc4ide fereastra
de dialog *Fig CM1 pag. C, 6n care se /a specifica /aloarea superioar sau inferioar. $aloarea poate fi
calculat prin apelarea unei proceduri * !uton radio * Q, Procedure, sau o!inut prin e/aluarea unei
e5presii editate direct 6n caseta te5t *!uton radio *T, Expression, sau construit 6n fereastra
Curs 16. FOXPRO 2.6 DOS pag. 1.
constructorului de e5presii desc4is prin acionarea declan'atorului 1Edit83. "5presia poate fi 'i o
/aloare numeric propriu@zis .
Obs P :cionarea comutatoarelor O P 74en1 O P$alid1 O P Aessage1 O P"rror determin desc4iderea
ferestrei Code Snippet *pac4et de instruciuni, prezentat 6n Fig. CM. Aodul de acionare 6n aceast
fereastr este prezentat 6n pagina C. 3n fereastr se pot edita proceduri prin scrierea efecti/ a
instruciunilor sau pot fi specificate e5presii fie direct 6n fereastra te5t fie cu aKutorul constructorului de
e5presii. Hn apel de procedur1 descris 6n fereastra aferent comutatorului ? @Cleanup A ProcsN1 se
consider a fi e5presie.
Comutatorul O P =hen *c0nd, I dup generare1 o!iectul /a fi acti/at numai dac e5presia logic
asociat clauzei 74en este e/aluat la )RH".
Comutatorul O P Balid */alid, I instruciunile procedurii sau e/aluarea e5presiei asociate acestui
comutator /or fi e5ecutate respecti/ e/aluate 6nainte de selectarea altui o!iect.
Comutatorul O P Messa)e *mesaK, I e5presia specificat prin intermediul acestui comutator /a fi afi'at
dup generare 6n partea de Kos a ecranului1 c0nd cursorul se afl 6n o!iectul c0mp.
Comutatorul O P Error *eroare, I utiliz0nd acest comutator poate fi specificat un mesaK de eroare
care@l /a 6nlocui pe cel implicit.
Comutatorul O P Coent *comentariu, I utiliz0nd acest comutator o!iectului c0mp 6i pot fi asociate
comentarii.
Comutatorul O P Disabled *dezacti/at, I dac acest comutator este acti/at1 dup generarea o!iectul /a
fi dezacti/at= reacti/area lui se poate face utiliz0nd instruciuni Fo5Pro.
Comutatorul O P Scroll Far *!ar de defilare, I utiliz0nd acest comutator1 6n cazul unui o!iect c0mp de
tip Edit1 6n partea dreapt a regiunii de editare /a fi afi'at o !and de defilare= 6n cazul 6n care
coninutul o!iectului c0mp nu este /izi!il 6n totalitate1 cu aKutorul !enzii de defilare poate fi /izualizat
coninutul o!iectului 6n 6ntregime.
Comutatorul O P -llo0 tabs *permite )a!@uri, I 6n cazul o!iectelor de tip Edit1 dac acest comutator
este acti/at1 6n zona de editare poate fi folosit tasta 5ab.
Comutatorul O P 6en)ht *lungime, I prin intermediul acestui comutator se specific lungimea c0mpului
EditD 6n fereastra 6n fereastra de dialog cu acela'i nume.
Comutatorul O P Re#resh *re6mprosptare, I utilizat la c0mpurile Sa:1 ec4i/aleaz cu apelarea
comenzii S9O71 utilizat la reactualizarea o!iectului c0mp.
Prin acionarea declan'atorului implicit 11O233 fereastra de dialog Screen .ield *Fig. C6, /a fi
6nc4is1 operaia de definire a o!iectului fiind 6nc4eiat. O!iectul definit /a apare la poziia la care se afla
cursorul 6nainte de acionarea ScreenE.ieldN
Obiecte text I prin intermediul o!iectelor c0mp1 utilizatorul poate furniza informaii referitoare la
modul de folosire a o!iectelor afi'ate pe ecran.
3n fereastra de configurare a ecranului *Fig. C2, crearea unui o!iect te5t se face astfel-
se mut cursorul la poziia unde /a apare o!iectul1
se introduce o!iectul te5t direct de la tastatur1
operaia este 6nc4eiat prin acionarea tastei "nter.
Odat creat1 o!iectul te5t poate fi editat 6n dou moduri-
pag. 2D Curs 16. FOXPRO 2.6 DOS
se poziioneaz cursorul pe o!iect 'i se acioneaz tasta Space realiz0ndu@se astfel selecia acestuia.
Se acioneaz sec/ena ScreenE5extdup care te5tul se editeaz de la tastatur. Se 6nc4eie prin
acionarea "nter.
se acioneaz clicE pe o!iect1 acesta fiind selectat *marcat,. Se acioneaz din nou clicE1 in0nd
acionat tasta Ctrl. )e5tul se editeaz de la tastatur. Se 6nc4eie prin acionarea "nter.
Declan'atoare I pentru crearea unui grup de declan'atoare *poate fi doar unul singur,1 se 6ncepe cu
mutarea cursorului la poziia 6n care /a apare grupul *declan'atorul,. 3n continuare se acioneaz
sec/ena ScreenEPush Futton8 ceea ce are ca efect desc4iderea ferestrei de dialog din Fig. C+.
Seciunea Push Futton Propts- 6n fereastra asociat seciunii se /or scrie1 unul su! altul1 te5tele care
/or apare 6ntre parantezele ascuite ale declan'atorului1 dup generarea ecranului.
Specificarea dispunerii declan'atoarelor se realizeaz prin acionare unuia dintre !utoanele radio ! %
>orizontal sau ! % Bertical.
Dac este acti/at comutatorul
? @5erinatin) la e5ecuia programului generat1 selectarea declan'atorului definit cu aceast opiune /a
determina 6nc4eierea operaiei de citire a o!iectelor ecranului. Declan'atorul se nume'te declan'ator
terminal.
Declan'atorul 1Spacin)83 permite specificarea 6n fereastra de dialog Futton Spacin) numrului de
linii *caractere, care /or separa declan'atoarele din acela'i grup. #ungimea declan'atoarelor dintr@un
grup este dat de lungimea declan'atorului cu te5tul asociat cel mai lung.
Seciunea Bariable I fiecrui grup de declan'atoare 6i este asociat o /aria!il care poate fi o /aria!il
de memorie sau c0mp al !azei de date. $aria!ila poate fi de tip numeric sau de tip 'ir de caractere.
$aria!ila prime'te automat /alori 6n funcie de poziia 6n grup a declan'atorului acionat. De e5emplu
dac /aria!ila este de tip numeric ea prime'te /aloarea 1 la acionarea primului declan'ator din grup1 2
la al doi@lea1 '. a. m. d. Dac /aria!ila este de tip 'ir de caractere ea prime'te ca /aloare c4iar numele
declan'atorului acionat. Specificarea /aria!ile se poate face prin introducerea numelui ei1 de la tastatur
6n caseta te5t asociat seciunii sau prin intermediul constructorului de e5presii1 desc4is prin acionarea
declan'atorului 1Choose83
Seciunea Options @ ca 'i 6n cazul o!iectelor c0mp1 la definirea unui declan'ator pot fi specificate
instruciuni pentru clauzele 74enN1 $alidN1 AessageN1 CommentN1 Disa!led. Prin acionarea unuia
din declan'atoarele 74enN1 $alidN1 AessageN1 se desc4ide fereastra de dialog Code Snippet
*pac4et de instruciuni, prezentat 6n Fig. CM unde1 acion0nd 6n modul cunoscut1 se introduc
instruciunile Fo5Pro care formeaz clauza respecti/.
Fig. C+
Curs 16. FOXPRO 2.6 DOS pag. 21
Prin acionarea declan'atorului implicit 11O233 fereastra de dialog *Fig. C6, /a fi 6nc4is1 operaia de
definire a o!iectului fiind 6nc4eiat. O!iectul definit /a apare la poziia la care se afla cursorul 6nainte de
acionarea ScreenE.ieldN
Pentru modificarea poziiei 6n care apar definite declan'atoarele unui grup1 6n fereastra asociat seciunii
Push Futton Propts se acioneaz astfel-
se acioneaz tasta 5ab p0n c0nd primul nume de declan'ator este selecta. Prin acionarea tastei
direcionale se selecteaz numele declan'atorului care urmeaz a fi mutat. :cion0nd 1CtrlGPa)e
Do0n3 sau 1CtrlGPa)e 4p3 numele declan'atorului este mutat cu o poziie 6n Kos respecti/ 6n sus.
se acioneaz drag and drop pe sgeata 6n du!lu sens aflat 6n st0nga numelui declan'atorului.
pentru a 'terge numele unui declan'ator1 acesta se selecteaz dup care se acioneaz tasta Delete.
#a rularea programului generat1 deplasarea de la un declan'ator *o!iect, la altul 6n ecran1 se realizeaz
prin acionarea succesi/ a tastei 5ab sau a com!inaiei 1Shi#tG5ab3. Pentru a facilita accesarea unui
declan'ator1 la definirea acestuia se poate specifica o tast direct *rapid, care permite acionarea
declan'atorului direct1 fr a@l selecta.. Pentru aceasta1 6naintea caracterului care /a de/eni tast direct
se plaseaz grupul de caractere U R1 V. :tenie 6ns pentru a nu defini aceia'i tast direct pentru dou
declan'atoare din cadrul ecranuluiQ
Pentru definirea unui declan'ator implicit1 care la rularea ecranului se poate aciona direct prin
com!inaia >>Ctrl@"nter??1 6naintea numelui declan'atorului se plaseaz grupul de caractere U RP V .
Hn declan'ator care este accesat direct prin acionarea tastei Esc poate fi definit dac 6naintea numelui
su este plasat grupul de caractere U RS V
Dup definirea o!iectelor prezentate anterior1 fereastra de configurare a ecranului pentru :plicaia 1
*introducerea ele/ilor, este urmtoarea-
Pentru :plicaia 1 se definesc -
c0mpurile-
nr9at1 cu urmtoarele caracteristici-
c0mp de tip !Q%,et1
Fig. C.
pag. 22 Curs 16. FOXPRO 2.6 DOS
/aria!ila asociat- .nr9at1
Format- 777D de tip !Q%Character1 ?7@Select on entr:1
?7@=hen- !Q% Expression1 6n fereastra Code Snippet se introduce de la tastatur e5presia
se9editeaz care este practic un nume de /aria!il1 iniializat 6n fereastra asociat
comutatorului O P Setup cu /aloarea F:#S". "5presia returneaz una din /alorile logice
)RH" sau F:#S"1 c0mpul put0nd fi accesat doar dac se returneaz /aloarea )RH".
Clauza 79"( are urmtoarea semnificaie- c0mpul nu poate fi accesat dec0t dac s@a
acionat unul din declan'atoarele >:dugare? sau >"ditare? care1 la acionare1 iniializeaz
/aria!ila se9editeaz cu /aloarea )RH".
nue1 cu urmtoarele caracteristici-
c0mp de tip !Q%,et1
/aria!ila asociat- .nue1
Format- 777777777777777
T
D de tip !Q%Character1 ?7@Select on entr:1
?7@=hen- !Q% Expression1 6n fereastra Code Snippet se introduce de la tastatur e5presia
se9editeaz cu semnificaia prezentat la c0mpul anterior.
declan'atoarele-
1Inceput31 cu urmtoarele caracteristici-
numele- R1Inceput1
/aria!ila asociat- .btn9inceput1
?7@Balid- !Q% Expression1 6n fereastra Code Snippet se introduce de la tastatur e5presia
(al9but!UI/CEP45V% care este practic apelul procedurii (al9but cu parametrul
.nue9butWVI/CEP45V. Procedura a fost editat 6n fereastra asociat comutatorului
O PCleanup RCodesN :stfel1 la acionarea declan'atorului >%nceput? se /or e5ecuta
instruciunile pentru cazul 6n care *C:S", m.nume2!utZ[%(C"PH)[
?7@ Messa)e- !Q% Expression USalt la pria inre)istrareV
1-nterior31 cu urmtoarele caracteristici-
numele- R1-nterior1
/aria!ila asociat- .btn9anterior1
?7@Balid- !Q% Expression1 6n fereastra Code Snippet se introduce de la tastatur e5presia
(al9but!U-/5ERIORV% care este practic apelul procedurii (al9but cu parametrul
.nue9butWV-/5ERIORV. Procedura a fost editat 6n fereastra asociat comutatorului
O PCleanup RCodesN :stfel1 la acionarea declan'atorului >:nterior? se /or e5ecuta
instruciunile pentru cazul 6n care *C:S", m.nume2!utZ[:()"R%OR[
?7@ Messa)e- !Q% Expression UInre)istrarea anterioaraV
14rator31 cu urmtoarele caracteristici-
numele- R1 4rator1
/aria!ila asociat- .btn9 urator1
?7@Balid- !Q% Expression1 6n fereastra Code Snippet se introduce de la tastatur e5presia
(al9but!U4RM-5ORV% care este practic apelul procedurii (al9but cu parametrul
.nue9butWV4RM-5ORV. Procedura a fost editat 6n fereastra asociat comutatorului
O PCleanup RCodesN :stfel1 la acionarea declan'atorului >Hrmator? se /or e5ecuta
instruciunile pentru cazul 6n care *C:S", m.nume2!utZ[HRA:)OR[
?7@ Messa)e- !Q% Expression UInre)istrarea uratoareV
1S#&rsit31 cu urmtoarele caracteristici-
numele- R1 S#&rsit1
/aria!ila asociat- .btn9 s#arsit1
6
1M caractere
Curs 16. FOXPRO 2.6 DOS pag. 2G
?7@Balid- !Q% Expression1 6n fereastra Code Snippet se introduce de la tastatur e5presia
(al9but!US.-RSI5V% care este practic apelul procedurii (al9but cu parametrul
.nue9butWVS.-RSI5V. Procedura a fost editat 6n fereastra asociat comutatorului
O PCleanup RCodesN :stfel1 la acionarea declan'atorului >Sf0rsit? se /or e5ecuta
instruciunile pentru cazul 6n care *C:S", m.nume2!utZ[S.-RSI5[
?7@ Messa)e- !Q% Expression USalt la ultia inre)istrareV
1Cautare31 cu urmtoarele caracteristici-
numele- R1 Cautare1
/aria!ila asociat- .btn9 cauta1
?7@Balid- !Q% Expression1 6n fereastra Code Snippet se introduce de la tastatur e5presia
(al9but!UC-45-V% care este practic apelul procedurii (al9but cu parametrul
.nue9butWVC-45-V. Procedura a fost editat 6n fereastra asociat comutatorului
O PCleanup RCodesN :stfel1 la acionarea declan'atorului >Cautare? se /or e5ecuta
instruciunile pentru cazul 6n care *C:S", m.nume2!utZ[ C-45-[
?7@ Messa)e- !Q% Expression UCautarea unei inre)istrariV
1-dau)are31 cu urmtoarele caracteristici-
numele- -R1 dau)are1
/aria!ila asociat- .btn9 adau)a1
?7@Balid- !Q% Expression1 6n fereastra Code Snippet se introduce de la tastatur e5presia
(al9but!U-D-4,-V% care este practic apelul procedurii (al9but cu parametrul
.nue9butWV-D-4,-V. Procedura a fost editat 6n fereastra asociat comutatorului
O PCleanup RCodesN :stfel1 la acionarea declan'atorului > :daugare? se /or e5ecuta
instruciunile pentru cazul 6n care *C:S", m.nume2!utZ[-D-4,-[
?7@ Messa)e- !Q% Expression U-dau)area unei noi inre)istrariV
Obs. #a rularea ecranului1 dac se acioneaz unul din declan'atoarele 1-dau)are3 sau 1Editare3D
/aria!ila se9editeaz de/ine )RH" iniial ea fiind F:#S". :ceasta determin ca declan'atoarele
1Editare3 'i 1Ster)ere3 s afi'eze prompterele 1Sal(ez3 respecti/ 1Renunt3.
1Editare31 cu urmtoarele caracteristici-
numele- EdiR1tare1
/aria!ila asociat- .btn9 edit1
?7@Balid- !Q% Expression1 6n fereastra Code Snippet se introduce de la tastatur e5presia
(al9but!UEDI5E-M-V% care este practic apelul procedurii (al9but cu parametrul
.nue9butWVEDI5E-M-V. Procedura a fost editat 6n fereastra asociat comutatorului
O PCleanup RCodesN :stfel1 la acionarea declan'atorului >"ditare? se /or e5ecuta
instruciunile-
dac nu se editeaz1 se e5ecut instruciunile pentru cazul 6n care *C:S",
m.nume2!utZ[EDI5E-M-[ :(D /O5 se9editeaz
dac se editeaz1 se e5ecut instruciunile pentru cazul 6n care *C:S",
m.nume2!utZ[EDI5E-M-[ :(D se9editeaz *sal/area 6nregistrrii,
?7@ Messa)e- !Q% Expression UEditarea unei inre)istrariV
Obs. Dac /aria!ila se9editeaz este .-6SE *deci nu se editeaz,1 declan'atorul >"ditare? afi'eaz
prompterul >Editare?. Dac /aria!ila se9editeaz este 5R4E *deci se editeaz,1 declan'atorul
>"ditare? afi'eaz prompterul >Sal(ez?. :ceste afi'ri diferite de prompter ale aceluia'i declan'ator
s@au realizat pentru a economisi spaiul ecranului.
#a rularea ecranului1 dup editare1 dac se acioneaz declan'atorul 1Sal(ez3 *care apare 6n locul
declan'atorului >"ditare? D /aria!ila se9editeaz de/ine F:#S". Declan'atorul >"ditare? afi'eaz din
nou prompterul >Editare?.
pag. 2J Curs 16. FOXPRO 2.6 DOS
1Stre)ere31 cu urmtoarele caracteristici-
numele- SteR1r)ere1
/aria!ila asociat- .btn9 ster)e1
?7@Balid- !Q% Expression1 6n fereastra Code Snippet se introduce de la tastatur e5presia
(al9but!US5ER,EV% care este practic apelul procedurii (al9but cu parametrul
.nue9butWVS5ER,EV. Procedura a fost editat 6n fereastra asociat comutatorului
O PCleanup RCodesN :stfel1 la acionarea declan'atorului >Stergere? se /or e5ecuta
instruciunile-
dac nu se editeaz1 se e5ecut instruciunile pentru cazul 6n care *C:S",
m.nume2!utZ[S5ER,E[ *se acti/eaz ecranul de alert1 6n care se opteaz pentru
'tergerea sau renunare la 'tergerea 6nregistrrii curente,.
dac se editeaz1 se e5ecut instruciunile pentru cazul 6n care *C:S",
m.nume2!utZ[S5ER,E[ :(D se9editeaz *renunare la sal/area editrii,
?7@ Messa)e- !Q% Expression USter)e "nre)istrarea curentV
Obs. Dac /aria!ila se9editeaz este .-6SE *deci nu se editeaz,1 declan'atorul >Stergere? afi'eaz
prompterul >Ster)ere?. Dac /aria!ila se9editeaz este 5R4E *deci se editeaz,1 declan'atorul
>Stergere? afi'eaz prompterul >Renunt?. :ceste afi'ri diferite de prompter ale aceluia'i declan'ator
s@au realizat pentru a economisi spaiul ecranului.
#a rularea ecranului1 dup editare1 dac se acioneaz declan'atorul 1Sal(ez3 *care apare 6n locul
declan'atorului >Stergere? D /aria!ila se9editeaz de/ine F:#S". Declan'atorul >Stergere? afi'eaz
din nou prompterul >Ster)ere?.
1Iesire31 cu urmtoarele caracteristici-
numele- I\>esire1
/aria!ila asociat- .btn9 exit1
?7@Balid- !Q% Expression1 6n fereastra Code Snippet se introduce de la tastatur e5presia
(al9but!UE7I5V% care este practic apelul procedurii (al9but cu parametrul
.nue9butWVE7I5V. Procedura a fost editat 6n fereastra asociat comutatorului
O PCleanup RCodesN :stfel1 la acionarea declan'atorului >%esire? se /or e5ecuta
instruciunile pentru cazul 6n care *C:S", m.nume2!utZ[E7I5[
?7@ Messa)e- !Q% Expression UIesire din ecranV
O!iectele grafice 'i o!iectele te5t care precizeaz denumirea c0mpurilor 'i marc4eaz seciunile de lucru
ale ecranului1 apar 6n fereastra de configurare a ecranului conform Fig. C..
Dup 6nc4eierea operaiilor de definire a o!iectelor1 6nainte de generarea programului1 se face o
operaie de sal/are a opiunilor introduse de utilizator 6n fereastra de configurare1 prin acionarea
sec/enei .ileESa(e. Dac informaiile despre starea mediului Fo5Pro *"n/ironment, nu au fost
sal/ate1 se desc4ide o fereastr de atenionare unde se rspunde cu >>Xes?? pentru sal/are.
;enerarea programului *ecranului, pe !aza specificrilor fcute 6n fereastra de configurare *Fig.
+D, se realizeaz prin acionarea sec/enei Pro)raE,enerate8ceea ce determin desc4iderea
ferestrei de dialog din Fig. +D a.
Curs 16. FOXPRO 2.6 DOS pag. 2M
Dup selecia numelui ecranului 6n lista din seciunea Screens Fig. +D a1 se acioneaz
declan'atorul implicit >>;enerate??. Dac ecranul a mai fost generat anterior1 fereastr de atenionare
a/ertizeaz asupra rescrierii fi'ierului program. Se rspunde cu >Xes?.
Pentru a specifica un nume diferit de cel implicit *numele ecranului "#"$%.SCX, pentru
programul generat *>/ue9pro)ra?.SPR, se acioneaz declan'atorul >Output fileN?. 3n fereastra
de tip Sa/e care se desc4ide la acionare1 se /a specifica 6n caseta te5t1 numele programului generat.
(umele poate fi specificat direct 6n caseta te5t a seciunii Screen Code Fig. +D a.
Pentru specificarea caracteristicilor comentariilor ce /or fi incluse 6n ecran1 se /a aciona
declan'atorul >Comment optionsN? ceea ce duce la desc4iderea ferestrei de dialog Comment Options
din Fig. +D !. 3n seciunea De/eloper %nformation se introduc informaii personale ale programatorului.
3n seciunea Comment StBle se specific modul de marcare a comentariilor- caset sau asterisc. 3n
seciunea 9ome DirectorB este specificat calea de unde /or fi 6ncrcate ta!elele *fi'ierele D&F cu care
lucreaz ecranul,. Pentru ca informaiile completate 6n fereastra de dialog s rm0n nesc4im!ate la
urmtoarea desc4idere se acioneaz comutatorul O P AaEe t4is default settings. Din fereastra Comment
Options se iese cu >> OF ?? pentru sal/area opiunilor selectate= se re/ine 6n fereastra din Fig. +D a.
Seciunea Code Options
OXP Open Files I programul generat include instruciuni de desc4idere a ta!elelor *L.D&F,1 fi'ierelor
inde5 asociate precum 'i de relaionare 6ntre ta!ele
C
1
OXP Close Files I similar cu opiunea anterioar1 pentru 6nc4iderea ta!elelor1
OXP Define 7indo<s I instruciunile de definire a ferestrelor sunt incluse automat 6n program1
OXP Release 7indo<s I similar cu opiunea anterioar1 pentru 6nc4iderea ferestrelor1
OXP Read CBcle permite accesarea o!iectelor din mai multe ferestre ale ecranului.
Dup generare programul o!inut se lanseaz 6n e5ecuie acion0nd sec/ena Pro)raEDo8
sau >CtrlGD? ca orice program Fo5Pro.
C4PRI/S:
10.8.1. Relaii ntre tabele 1
$*.+. ,eneratorul de ecrane G
10.9.1. Lansarea generatorului de ecrane. Deschiderea ferestrei de configurare. G
10.9.2. Stabilirea caracteristicilor generale ale ecranului J
10.9.'. Definirea obiectelor 1M
C
Dac s@au sal/at informaiile despre mediul Fo5Pro1 instruciunile /or fi incluse indiferent de starea comutatorului.
Fig. +D a. Fig. +D !.

S-ar putea să vă placă și