Documente Academic
Documente Profesional
Documente Cultură
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