Sunteți pe pagina 1din 9

Laboratorul nr.

7 Crearea i manipularea formularelor


1. Proiectarea formularelor Visual FoxPro include un proiectant de formulare (Form Designer) foarte puternic, care permite proiectarea i realizarea rapid a formularelor. 2. Crearea unui formular nou 1. n Project manager, se selecteaz Forms i se alege New, sau 2. n meniul File New Form New File, sau 3. se utilizeaz comanda CREATE FORM Ca urmare se deschide fereastra proiectantului de formulare mpreun cu barele de instrumente Form Designer, Controls, Layout i Palette. 3. Configurarea mediului de date Fiecare formular sau set de formulare include un mediu de date (obiect care cuprinde tabelele i vederile cu care interacioneaz formularul, precum i relaiile dintre tabele). Mediul de date automatizeaz deschiderea i nchiderea tabelelor i vederilor la rularea formularului i ajut la configurarea proprietii ControlSource a controalelor. Pentru a deschide fereastra proiectantului mediului de date: - din meniul View Data Environment Cele mai importante proprieti ale mediului de date sunt: Proprietatea Descrierea Valoarea implicit AutoCloseTables Controleaz dac tabelele i .T. vederile sunt nchise atunci cnd formularul este eliberat din memorie AutoOpenTables Controleaz dac taelele i .T. vederile din mediul de date sunt deschise la rularea formularului InitialSelectedAliases Indica tabelul sau vederea n faza de proiectare este . selectat la rularea formularului Dac nu este specifict n momentul execuiei este selectat primul cursor adugat la Data Environment 3.1. Adugarea unui tabel sau a unei vederi la mediul de date - n Data Environment Designer se alege Add (din meniul Data Environment sau din meniul Shortcut) - n caseta de dialog AddTable/View se alege un tabel sau o vedere din list. - dac nu este deschis nici o baz de date sau proiect, se alege Other pentru a selecta un tabel. 3.2. Eliminarea unui tabel din mediul de date a) n Data Environment Designer se selecteaz tabelul sau vederea, b) din meniul Data Environment Remove 3.3. Stabilirea relaiilor n cadrul mediului de date Dac se adaug n fereastra Data Environment Designer tabele legate prin relaii persistente n cadrul unei baze de date, relaiile sunt adugate automat mediului de date. Dac nu exist relaii persistente ntre tabele acestea se pot crea cu ajutorul Data Environment Designer. 1

a) se trage un cmp din tabelul primar peste eticheta indexului corespunztor din tabelul asociat. 3.4. Editarea relaiilor n cadrul Data Environment Designer Cnd se stabilete o relaie ntre tabelele asociate va aprea o linie care reprezint relaia. Pentru editarea proprietilor acesteia: a) n cadrul ferestrei Properties se selecteaz relaia din caseta Objects. Proprietile relaiei corespund clauzelor i cuvintelor cheie din comenzile SET RELATION i SET SKIP.

Proprietatea RelationalExpr are ca valoare implicit numele cmpului cheie primar din tabelul primar (printe). Dac tabelul asociat este indexat dup o expresie, aceasta trebuie atribuit proprietii RelationalExpr. Exemplu: Dac tabelul asociat este indexat dup expresia UPPER(cust_id) atunci proprietii RelationalExpr i se va atribui valoarea UPPER(cust_id). Dac relaia nu este unu-la-mai-muli se atribuie proprietii OneToMany valoarea (.F.). Aceasta echivaleaz cu folosirea comenzii SET RELATION fr SET SKIP. Dac proprietatea OneToMany se configureaz la valoarea (.T.), echivaleaz cu folosirea comenzii SET SKIP, care face ca atunci cnd se trece peste tabelul printe, indicatorul de nregistrri s rmn n dreptul aceleiai nregistrri printe pn ce indicatorul parcurge toate nregistrrile asociate n tabelul fiu. 4. Extinderea formularelor prin seturi de formulare Se pot manipula mai multe formulare simultan, dac sunt incluse ntr-un set de formulare. 4.1. Crearea unui nou set de formulare Un set de formulare constituie un container printe pentru unul sau mai multe formulare. Acesta poate fi creat din Form Designer. a) din meniul Form Create Formset 4.2. Adugarea formularelor la un set de formulare a) din meniul Form Add New Form 4.3. Eliminarea unui formular dintr-un set de formulare 2

a) n fereastra Form din partea de jos a Form Designer, se selecteaz formularul dorit; b) din meniul Form Remove Form Dac n setul de formulare exist un singur formular, se poate elimina setul de formulare astfel nct s rmn doar formularul. 4.4. Eliminarea unui set de formulare a) din meniul Form Remove Formset 5. Adugarea obiectelor la formulare Pentru a atribui unui formular funcionalitatea dorit, trebuie adugate controalele adecvate, trebuie configurate proprietile controalelor i ale formularelor i trebuie scris codul pentru evenimente. Intr-un formular se pot aduga urmtoarele tipuri de obiecte:controale, containere, clase definite de utilizator, obiecte OLE 5.1. Obiectele Container i Control Obiectele Visual FoxPro aparin urmtoarelor categorii, funcie de natura claselor pe care se bazeaz: - containerele pot conine alte containere sau controale. Ele pot aciona ca obiecte printe pentru alte obiecte. - controalele pot fi inserate n containere, dar nu pot fi prini pentru alte obiecte. Form Designer permite att proiectarea containerelor ct i a controalelor. 5.2. Adugarea obiectelor container la un formular a) din bara de instrumente Form Controls, se selecteaz butonul care reprezint obiectul container dorit, i se trage cu mouse-ul peste formular. 5.3. Proprietile Collection i Count Toate obiectele container din Visual FoxPro au o proprietate de numrare (Count) i o proprietate colecie (Collection). Proprietetea Collection este o matrice care conine referine la fiecare obiect din container. Proprietatea Count indic numrul obiectelor incluse n container. 5.4. Adugarea controalelor Visual FoxPro la un formular Prin intermediul barei de instrumente Controls, se poate aduga uor formularului orice control standard VisualFoxPro. Acestea sunt: - casete de validare, casete combinate, butoane de comand, casete de editare - hiperlegturi, imagini, etichete, linii - casete cu list - controale OLE asociate, controale container OLE, - forme geometrice - casete de incrementare - casete de text - control timer Din bara de instrumente Form Controls se selecteaz butonul care reprezint controlul dorit i se execut clic pe el sau se trage cu mouse-ul este formular. 5.5. Adugarea la formular a unor controale asociate datelor. Se pot asocia controalele cu datele dintr-un tabel, dintr-o vedere sau dintr-un cmp al tabelului sau al vederii, atribuind un cmp proprietii ControlSource a unui control, respectiv un tabel sau o vedere proprietii RecordSource a unei grile. 3

5.6. Adugarea unor proprieti i metode la un formular Unui formular sau unui set de formulare i se pot aduga oricte proprieti i metode noi se dorete. Proprietile pstreaz o valoare iar metodele pstreaz codul procedural care trebuie executat atunci cnd este apelat metoda. Noile proprieti i metode au ca domeniu formularul respectiv i pot fi indicate la fel ca celelalte proprieti sau metode din cadrul formularului. 5.6.1. Crearea unor noi proprieti a) din meniul Form New Property b) n caseta de dialog New Property se introduce numele proprietii. Poate fi inclus i o descriere a acesteia, descriere ce va fi afiat n partea de jos a ferestrei Properties. 5. 6.2. Crearea unei proprieti de tip matrice O proprietate de tip matrice are ca domeniu formularul, la fel ca orice alt proprietate dar poate fi manipulat prin intermediul comenzilor i funciilor VisualFoxPro referitoare la matrice. a) se adaug unui formular o nou proprietate (vezi mai sus) b) n caseta Name a ferestrei New property se introduce numele proprietii matrice i se specific numrul de dimensiuni ale acesteia, i pentru fiecare dimensiune valoarea maxim. Exemplu: pentru a crea o matrice bidimensional cu 10 linii i 3 coloane se va specifica numele matr_prop[10,3]. 5.6.3.Crearea unor noi metode Se pot aduga unui formular metode care vor fi apelate n acelai mod ca i metodele clasei formularului. a) din meniul Form New Method b) n fereastra de dialog New Method se introduce numele metodei i, eventual o descriere a acesteia. O metod definit de utilizator poate fi apelat la fel ca metodele clasei de baz , folosind urmtoarea sintax: NumeObiect.NumeMetod 6. Manipularea obiectelor n timpul proiectrii obiectele pot fi manipulate n mai multe moduri: se poate stabili dimensiunea i poziia obiectelor, trgndu-le cu mouse-ul n fereastra Form Designer se pot alinia controalele cu ajutorul instrumentelor de aliniere din bara de instrumente Layout se aleg culorile de prim-plan i de fundal din bara de instrumente Palette se pot configura proprietile n fereastra Properties. Definirea comportamentului formularului Inainte de a configura unele proprieti care determin comportamentul formularului, se pot proiecta aspectele funcionale ale acestuia i i se pot aduga controalele necesare. Urmtoarele proprieti ale formularelor sunt configurate n faza de proiectare pentru a defini aspectul i comportamentul formularului: Proprietate Descriere Valoare implicit AlwaysOnTop Indic dac un formular este afiat ntotdeauna .F. deasupra tuturor celorlalte ferestre deschise AutoCenter Indic dac un formular este sau nu centrat .F. 4 7.

BackColor BorderStyle

Caption Closable Data Session MaxButton MinButton Movable ScaleMode Scrollbars TitleBar ShowWindow WindowState WindowType

automat n cadrul ferestrei principale VFP sau pe suprafaa de lucru Windows la iniializarea formularului Stabilete culoarea ferestrei formular Indic dac formularul are un chenar simplu, dublu sau un chenar specific sistem, sau dac nu exist chenar. Pentru valoarea 3, utilizatorul va putea redimensiona formularul. Stabilete textul afiat n bara de titlu a formularului Indic dac formularul poate fi nchis printr+un dublu clic pe caseta de nchidere. Indic dac tabelele din cadrul formularului sunt deschise n zone de lucru accesibile global sau private. Indic dac formularul are sau nu buton de maximizare Indic dac formularul are sau nu buton de minimizare Indic dac formularul poate fi mutat sau nu ntro nou poziie pe ecran Indic dac unitile de msur pentru dimensiunile obiectelor i poziii sunt pixeli Indic tipul barelor de defilare ale unui formular Indic dac n partea superioar a formularului exist sau nu bara de titlu Indic dac fereastra este de tip fiu, flotant sau de cel mai nalt nivel Indic dac formularul este minimizat, maximizat sau normal Indic dac formularul este non-modal sau modal. Dac formularul este modal, utilizatorul trebuie s l nchid nainte de a lucra cu alte elemente ale interfeei aplicaiei

255,255,255 3

Form 1 .T. 1 .T. .T. .T.

0 None 1-On 0- In Screen (Pe ecran) 0- Normal 0- non modal

8.

Editarea codului de eveniment i de metod Evenimentele sunt aciuni ale utilizatorului, cum ar fi clicurile i micrile mouse-ului. Metodele sunt proceduri asociate obiectului care sunt apelate prin program. Pentru a edita codul de eveniment sau de metod : - din meniul View Code - se selecteaz evenimentul sau metoda din caseta Procedure - in fereastra Edit se scrie codul ce trebuie executat cnd survine evenimentul sau cnd este apelata metoda Exemplu: Dac n cadrul unui formular exist un buton de comand cu titlul Quit pentru evenimentul click al butonului se poate introduce urmtoarea linie de cod: THISFORM.Release In acest caz, dac utilizatorul execut clic pe butonul de comand, formularul este eliminat de pe ecran i din memorie. Dac se dorete ca formularul s nu fie eliminat din memorie se folosete urmtoarea secvent de cod: 5

THISFORM.Hide Not : in cadrul ferestrei de editare a codului, pentru a se trece de la o procedur la alta se folosesc tastele PgDn i PgUp. 10. Salvarea formularelor Inainte de a fi rulat, formularul trebuie salvat. - in Form Designer, din meniul File Save 11. Rularea unui formular Un formular poate fi rulat direct din interfat sau prin intermediul programului. - in Form Designer se selecteaz formularul i se alege Run; - in fereastra de comenzi se introduce DO FORM - in meniul Program Form din caseta List Files of Type se selecteaz formularul, DO 12. Denumirea unui obiect formular Dac se utilizeaz comanda DO FORM numele unui obiect formular este , n mod implicit, acelai cu numele fiierului.scx. Dac se dorete denumirea unui obiect formular altfel dect este denumit implicit de sistem se va utiliza comanda DO FORM cu clauza NAME. Exemplu: urmtoarea comand ruleaz formularul i creaz dou nume de variabile obiect pentru formular: DO FORM Clieni NAME Cliform1 DO FORM Clieni NAME Cliform2 13. Manipularea unui obiect formular Dac se lanseaz comanda DO FORM din cadrul ferestrei Command, obiectul formular este asociat unei variabile publice. In acest caz, accesul la formular poate fi obinut prin intermediul numelui variabilei. Dac se lanseaz comanda DO FORM dintr-un program, obiectul formular are ca domeniu chiar programul respectiv. La ncheierea acestuia, obiectul dispare, dar formularul rmne vizibil, i toate controalele sale sunt active. Dac n comanda DO FORM se folosete cuvntul cheie LINKED atunci formularul este legat de obiectul formular. In acest caz, formularul este eliberat din memorie dac variabila asociat obiectului formular depete domeniul. Exemplu: Do FORM Clieni NAME Cliform LINKED La eliberarea din memorie a variabilei Cliform, formularul va fi nchis. 14. Inchiderea unui formular activ Pentru a permite nchiderea formularului activ prin executarea unui clic pe butonul de nchidere sau alegnd Close din meniul de control al formularului, trebuie configurat corespunztor proprietatea Closable a formularului. - n fereastra Properties se atribuie valoarea .T. proprietii Closable, sau - se folosete comanda RELEASE. Exemplu: se poate nchide i elibera din memorie formularul Cliform utiliznd comanda urmtoare din program sau din fereastra de comenzi: RELEASE Cliform. Se poate nchide i elibera din memorie un formular, prin inserarea comenzii urmtoare n codul evenimentului Click al unui control (butonul de comand Quit): 6

THISFORM.Release 15. Configurarea proprietilor n timpul execuiei Modelul bazat pe obiecte din VisualFoxPro ofer un grad nalt de control asupra proprietilor n timpul execuiei. 15.1. Referinele la obiecte din ierarhia de obiecte Pentru a manipula un obiect, acesta trebuie mai nti identificat n raport cu ierarhia containerului. Pe cel mai nalt nivel al ierarhiei containerului, trebuie folosit o referin la variabila obiect. Proprietile pot fi manipulate prin referine la variabila obiect, la control i la proprietate, separate prin puncte. Variabilobiect.[formular.]control.proprietate=valoare Urmtoarele proprieti sau cuvinte cheie permit indicarea unui obiect dintr-o ierarhie de obiecte: Proprietate (cuvnt-cheie) Referin ActiveControl Controlul din formularul activ care deine focusul (este inta intrrilor) ActiveForm Formularul activ ActivePage Pagina activ din formularul activ Parent Containerul aflat pe un nivel imediat superior obiectului THIS Obiectul, respectiv procedura sau evenimentul obiectului THISFORM Formularul care conine obiectul THISFORMSET Setul de formulare care conine obiectul Exemplu: Pentru a modifica titlul unui buton de comand din formularul Cliform care aparine unui set de formulare stocat n fiierul Partform.scx, se va folosi comanda urmtoare: PartForm.Cliform.cmdButton1.Caption= Edit Cuvintele cheie THIS. THISFORM i THISFORMSET sunt utilizate pentru a indica obiecte din cadrul unui formular. Exemplu: dac se dorete modificarea proprietii Caption a unui buton de comand atunci cnd acesta este apsat, se include comanda urmtoare n codul evenimentului Click al butonului de comand: THIS.Caption= Edit 15.2. Configurarea proprietilor n timpul execuiei cu ajutorul expresiilor - se atribuie proprietii o expresie, sau - se atribuie proprietii rezultatul unei funcii definite de utilizator Exemplu: Se poate stabili ca titlul unui buton s fie Edit sau Save funcie de valoarea unei anumite variabile. Se va declara variabila n programul care apeleaz formularul: Public optiune optiune = .F. Apoi se va folosi o expresie IIF pentru proprietatea Caption: Setform1.formular1.cmdButton1.Caption= IIF(optiune=.F., Edit, Save) 16. Apelarea metodelor n timpul execuiei Sintaxa de apelare a metodei unui obiect este: Printe.Obiect.Metod Dup ce un obiect a fost creat se pot apela metodele sale din orice punctal aplicaiei. Exemplu: Urmtorul set de comenzi apeleaz metode care afiaz formularul i plaseaz focusul pe un buton de comand: 7

Setform1.formular1.Show Setform1.formular1.cmdButton1.SetFocus Dac se dorete ascunderea formularului se lanseaz comanda: Setform1.formular1.Hide 17. Reacia la evenimente Codul inclus n procedura unui eveniment este executat atunci cnd survine evenimentul respectiv.Apelul codului procedural asociat unui eveniment nu provoac apariia evenimentului. Exemplu: urmtoaea instruciune determin executarea codului asociat evenimentului Activate a formularului Formular1, dar nu i activarea formularului: Formular1.Activate Apelul metodei Show a unui formular determin afiarea i activarea formularului, moment n care este executat codul evenimentului Activate. 18. Gestionarea formularelor Urmtoarele proceduri descriu operaiile uzuale de gestionare a formularelor dintr-o aplicaie. 18.1. Ascunderea unui formular Un formular poate fi ascuns astfel nct s fie invizibil pentru utilizator, i utilizatorul s nu poat interaciona cu acesta. In acest caz exist control asupra formularului prin program. - se utilizeaz metoda Hide Exemplu: dac n codul asociat evenimentului Click al unui buton de comand se introduce urmtoarea linie de cod: THISFORM.Hide, la execuia unui clic pe butonul respectiv, formularul nu mai este vizibil, dar el rmne n memorie. 18.2. Eliberarea din memorie a unui formular Dac interaciunea cu un formular s-a ncheiat, acesta poate fi eliberat din memorie. In acest caz, nu mai exist acces la proprietile i metodele acestuia. - se apeleaz metoda Release 18.3. Remprosptarea datelor afiate n formulare O parte din controalrele disponibile sunt utilizate n scopul afirii de date din tabele ( casete de text, liste, grile). La modificarea sursei de date (schimbarea valorii cmpurilor, sau modificarea setului de nregistrri de afiat) este necesar remprosptarea ecranului. In acest scop, funcie de controalele din formular se va folosi una din urmtoarele metode: Control Caseta text List, gril Metod Refresh Recoverz

18.4. Transmiterea unor parametri ctre formular Uneori, pentru a atribui valori proprietilor sau a specifica valori operaionale implicite, este necesar transmiterea unor parametri ctre formulare la rularea acestora. - se creaz n formular proprietile care s pstreze parametrii (ex. NumeArticol, CantArt) - in codul evenimentului Init al formularului se include o instruciune PARAMETERS: PARAMETERS cString, nNumber 8

in codul evenimentului Init al formularului se atribuie proprietilor parametrii corespunztori : THIS.NumeArticol = cString THIS. CantArt = nNumber la rularea formularului se include o clauz WITH n comanda DO FORM DO FORM Formular1 WITH Articol1, 56

19. Gestionarea instanelor multiple ale unui formular La un moment dat pot exista mai multe instane active ale unei definiii de clas. Exemplu: se poate proiecta un singur formular de comand, dar pot fi mai multe comenzi deschise n cadrul aplicaiei. Fiecare comand folosete aceeai definiie de formular, dar este afiat i manipulat individual. Dac exist mai multe instane ale aceluiai formular, trebuie respectate urmtoarele recomandri: - se creaz o proprietate de tip matrice n formularul de lansare pentru a pstra variabilele obiect asociate fiecrei instane a formularului. - Se atribuie valoarea 2-Private Data Session proprietii Data Session pentru formularul care va avea mai multe instane. O sesiune de date privat ofer un set distinct de zone de lucru pentru fiecare instan a formularului, astfel nct tabelele selectate i poziiile indicatoarelor de nregistrri sunt independente. Exemplu: In exemplul urmtor se creaz un formular care are capacitatea de a lansa instane multiple ale altui formular.

Valorile proprietilor pentru acesta sunt: Obiect Proprietate Valoare Formular aForm Codurile de eveniment asociate sunt: Obiect Ev. Cod Inchide Click THISFORM.Release NInstance = ALEN(THISFORM.aForm) Lanseaz formular Click

DO FORM formular1 NAME THISFORM.aForm[nInstance] LINKED DIMENSION THISFORM.aForm[nInstance+1]

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