Lucrarea 6

Generarea de ferestre tip formular

1. Generatoare de cod

2. Generatorul Expert pentru ferestre formular

Exemplu:
Sa va crea un formular utilizând macheta pentru formulare si generatorul Expert.
La pasul 1 se va selecta tabela Stud.dbf.
La pasul 2 se vor alege toate câmpurile din aceasta tabela.
La pasul 3 se alege formatul ColumnarLayout si Multiple Pages.
La pasul 4 se alege un stil oarecare si se modifica câteva caracteristici, apoi se va salva sub numele stud.
La pasul 5 se va alege optiunea RunForm si apoi se va salva formularul sub numele Stud.wfm.
La rulare se va merge pe diverse înregistrari cu ajutorul butoanelor de navigare care au aparut pe bara de unelte a aplicatiei:

   

3. Editorul Designer pentru ferestre formular

Exemplu:
Se va încarca în editorul de formulare fisierul Stud.WFM. Se vor adauga din paleta de unelte 5 controale "pushbutton" care vor afisa textul:
"OK" - închide formularul
"PRIM" - merge pe prima înregistrare
"URM" - merge pe urmatoarea înregistrare
"PREC" - merge pe precedenta înregistrare
"ULT" - merge pe ultima înregistrare
Se vor completa corespunzator proprietatile Name si Text si se vor scrie rutinele de eveniment OnClick pentru fiecare.
Se va rula formularul si se va verifica functionarea acestora.
   

Exemplu:
Se va realiza o fereastra pentru adaugarea de noi studenti. Pentru aceasta se va crea folosind generatorul Expert un formular Addstud.wfm de vizualizare tabela Stud.dbf cu toate câmpurile vizibile.
Dupa încarcarea formularului în editor se vor parcurge urmatorii pasi:
1. Se redenumesc câmpurile de introducere valori dupa modelul: efNume, efDataNastere etc. Se text a formularului (titlul sau) în "Adaugare studenti".
2. Se seteaza proprietatile Function, Picture, MaxLenght etc. din grupul Edit Properties astfel încât sa permita doar intrari valide. Pentru aceasta se va studia din Help capitolul referitor proprietatile Pictures si Functions. Spre exemplu proprietatea Pictures a câmpului codS ar putea avea valoarea "!!###" ceea ce permite introducerea a doua litere mari urmata de trei cifre.
3. Se trateaza evenimentul OnOpen pentru obiectul form, pentru a porni adaugarea unei noi înregistrari la deschiderea formularului:
Procedure Form_OnOpen
  form.BeginAppend() && creeaza un buffer pentru o noua înregistrare
RETURN
3. Se trateaza evenimentul CanClose pentru a renunta la noua înregistrare la închiderea fortata a formularului:
Procedure Form_CanClose
  form.AbandonRecord() && nu adauga noua înregistrare la tabela
RETURN .T. && permite închiderea formularului

4. Se adauga un buton cu numele buSalvez si textul "Salvez". Se trateaza evenimentul OnClick al acestuia astfel încât sa salveze modificarile si sa adauge o noua înregistrare.
Procedure buSalvez_OnClick
  IF form.IsRecordChanged() && verifica daca s-au facut modificari
    form.SaveRecord() && salveaza noua înregistrare
  ENDIF
  form.BeginAppend() && creeaza un nou buffer de înregistrare
RETURN

5. Se adauga un buton cu numele buRenunt si textul "Renunt". Se trateaza evenimentul OnClick al acestuia astfel încât sa salveze modificarile si sa adauge o noua înregistrare.
Procedure buRenunt_OnClick
  form.Close() && închide formularul, ceea ce va duce la apelul CanClose
               && care renunta la înregistrarea adaugata.

RETURN

6. Se salveaza si se ruleaza formularul, verificând functionarea acestuia.

 
4. Codul generat de modulele Expert si Designer pentru Formular

5. Probleme propuse
P1. Rulati exemplele prezentate în acest capitol.

P2. Creati un formular pentru navigarea prin tabela masini.dbf.

P3. Creati un formular de adaugare masina. Verificati existenta câmpului CODS în tabela de studenti, iar daca nu exista nu permiteti salvarea masinii.

s.l. dr. ing. Dan Pescaru '2004