Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Foxpro


Index » educatie » » informatica » Foxpro
» FORMULARE IN VISUAL FOX PRO


FORMULARE IN VISUAL FOX PRO


FORMULARE IN VISUAL FOX PRO

1 Obiectele formularului

Utilizarea formularelor permite construirea unei interfete mai prietenoasa si atractiva pentru utilizator. Formularele sunt niste ferestre care pot contine obiecte ce raspund printr-un anume comportament (implementat prin metode) la evenimente declansate de utilizator, de sistem, sau de alte obiecte.

Printre cele mai importante obiecte ale unui formular:

Simbolul



Butonului

Denumire

Functionalitate

Poate fi legat la o sursa de date

Select obiect

(selectorul nu este un obiect)

Selecteaza obiecte in vederea redimensionarii si/sau mutarii lor (click+shift selecteaza mai multe obiecte)

Nu

Label (Eticheta)

Obiect de tip eticheta care afiseaza un text in formular

Nu

Text box (Caseta de text)

Afiseaza si da posibilitatea modificarii unei surse de date formate din valoarea unui camp al unei tabele sau dintr-o variabila de memorie. Afiseaza o singura linie de text

Da

Edit Box (caseta de editare de text)

Are cam acceeasi functionalitate ca si controlul Text Box, dar ca afiseaza sursa de date pe mai multe linii (se poate incepe linie noua cu Enter) Folosit in general pentru a introduce fragmente de text (campuri de tip memo)

Da

Command Button (Buton de comanda)

Obiect care simuleaza vizual un buton al unui aparat oarecare (poate fi "apasat") In general raspunde la un evenimet click. Foloseste la declansarea unei operatii

Nu

Command Group (Grup de butoane de comanda)

Container ce contine un numar variabil de butoane de comanda, fiecare avand propria functionalitate. Avantajul consta ca pot fi manipulate unitar(ca un singur obiect) in functie de necesitati

Nu

Option Group

Grup de butoane de optiune

Container ce contine un numar variabil de butoane    cu aspect circular, fiecare insotit de un text explicativ. Permite utilizatorului alegerea unei singure optiuni din cele posibile la un moment dat. Se mai numesc si butoane radio

Da

Check Box

Caseta de optiune

Ofera utilizatorului posibilitatea de a opta intre adevarat sau fals pentru o anumita conditie. Spre deosebire de butoanele de optiune, grupurile de obiecte de tip bifa pot oferi posibilitatea alegerii mai multor obtiuni din cele posibile

Da

List box Caseta cu lista

Obiect care afiseaza o lista de elemente in care utilizatorul se poate deplasa pe verticala si poate selecta unul sau mai multe la un moment dat

Da

Combo Box Lista combinata

Obiect asemanator cu o caseta de text, ce deschide o lista de elemente din care utilizatorul poate alege una singura. Dupa selectia necesara lista se inchide. Foarte util pentru economisirea spatiului pe formular.

Da

Spinner

Afiseaza intr-o casuta de text un contor (numar) ce poate lua valori intre anumite limite. Incrementarea sau decrementarea au loc prin click pe sagetile sus jos sau prin scrierea unui numar de la tastatura

Da



Grid

Obiect de tip container, ce poate afisa si manipula datele intr-o forma tabelara poate include alte tipuri de obiecte

Da

Image

Afiseaza si manipuleaza fisiere grafice de pe disc sau campuri de tip General din tabele

Da

Timmer

Obiect ce permite lansarea unor procese la anumite intervale de timp, fixate dinainte(de exp. un text care apare/dispare, afisarea orei la fiecare secunda) Invizibil la executie

Nu

Page frame

Obiect de tip container ce permite afisarea mai multor pagini suprapuse, fiecare continand alte controale. Foarte util pentru formularele complexe, in care spatiul de pe o singura pagina este insuficient

Nu

Ole container control

Utilizat pentru introducerea obiectelor de tip ActiveX

In functie de tipul obiectului

Ole Bound Control

Asemanator cu anteriorul, dar ca se leaga de un camp de tip General dint-o tabela. Este utilizat in special pentru afisarea imaginilor stocate in tabela

Da

Line

Serveste la trasarea de linii pe formular

Nu

Shape

Serveste la trasarea unor forme geometrice pe formular

Nu

2. PROPRIETATI, EVENIMENTE SI METODE

Proprietatile sunt variabile locale ale fiecarui obiect, numite si atribute ce pot lua diverse valori, in conformitate cu functionalitatea acestora.

Metodele sunt proceduri specifice asociate fiecarui obiect in parte, ce se executa in momentul invocarii lor explicite printr-o linie de cod dintr-o alta procedura. Metodele se pot executa si automat la aparitia, la aparitia unui eveniment.

Evenimentele desemneaza actiuni ale utilizatorului (click-uri, deplasarea mouse-lui, apasarea unei taste sau a unei combinatii de taste, scurgerea unui interval de timp, deschiderea unei baze de date etc)

Prin intermediul evenimentelor si al metodelor (se mai numesc proceduri eveniment) se implementeaza comportamentul obiectului. Propritatile metodele si evenimentele unui obiect sunt intotdeauna accesibile codului sursa implementat la nivel superior (la nivel de metode ale formularului); reciproc, proprietatile metodele si evenimetele formularului pot fi accesate din cadrul codului aferent unui obiect anume de pe formular.

Sintaxa generala pentru a accesa o proprietate sau metoda a unui obiect este:

Numecontainer.numeobiect.numeproprietate[=valoare]

Sau variabila=numecontainer.numeobiect.numeproprietate

Sau numecontainer.numeobiect.numemetoda

Containerul de nivelul cel mai inalt este formularul insusi, care in cod se specifica prin expresia thisform. De asemenea, codul asociat unui eveniment, numele controlului pentru care se trateaza evenimentul poate fi inlocuit cu sinonimul this

2. Propritati:

Value - stocheaza valoarea curenta a obiectului pe parcursul executiei formularului. Pentru obiecte de tip lista, aceasta proprietate preia valoarea evenimentului curent selectat. Pentru obiectele legate la o sursa de date, aceasta proprietate are aceeasi valoare ca si valoarea curenta a sursei de date. Valorile permise pentru proprietatea value sunt date in tabelul de mai jos:

Control

Posibile tipuri de date pentru proprietatea Value

Check box

Integer, logical, numeric



Combo box

Character integer numeric

Command group

Character integer numeric

Edit box

Character memo

Grid

Character numeric

List box

Character numeric integer

Option button

Integer logical numeric

Option group

Character integer numeric

Spinner

Currency integer numeric

Text box

Orice tip

Obs. In cadrul selectiei unui element din grupurile de tip option group sau command group, proprietatea value ia ca valoare numarul de ordine al butonului selectat.

Control Source specifica sursa de date a unui obiect legat si poate fi un camp al unei tabele sau o variabila. Valoarea curenta a sursei este afisata in controlul respectiv, iar o eventuala modificare a valorii obiectului antreneaza modificarea valorii sursei de date.

RowSource se intalneste la controalele combo box si list box - specifica sursa pentru elementele ce vor popula o lista

RowSourceType - dedicata setarii tipului sursei elementelor unui obiect de tip lista. Tipul ales trebuie sa fie obligatoriu compatibil cu sursa specificata in RowSource. Tabelul de mai jos prezinta variante posibile ale acestei proprietati.

Varianta

Semnificatie

1 Value

Pentru valori introduse direct in rowsource separate prin virgula

2 Alias

Specificarea campurilor unei tabele. RowSource va contine in acest caz numele tabelei (vor fi luate in considerare toate campurile)

3 SQL Statement

Specificarea unei fraze select - sql ca si rowsource. Fraza respectiva trebuie sa aiba ca rezultat un cursor sau o tabela si nu poate avea mai mult de 256 de caractere

4 QUERY (.qpr)

Specificarea unei proceduri de interogare ce creeaza un cursor sau o tabela. Procedura de interogare trebuie sa existe pe disc sub forma unui fisier cu extensia .qpr

5 array

Sursa de populare a listei va fi constituita din elementele unui tablou specificat in rowsource prin nume fara dimensiuni

6 fields

Lista este populata numai cu valorile campurilor specificate, utilizand formatul: nume tabela.camp1, camp2, .

7 files

Lista de fisiere din directorul curent, ca posibilitatea navigarii prin directoare si chiar a schimbarii discului curent. Pentru filtrarea fisierelor se foloseste o masca de genul    *.jpg, nume.*, w??.tmp

8 structure

Numele campurilor tabelei specificate in rowsource

ColumnCount specifica numarul de coloane ce va fi afisat intr-un obiect de tip lista (in cazul combo box, numai la deschiderea listei) sau grid. Daca acest numar este mai mare decat numarul de campuri al sursei de date, ultimele coloane vor fi vide.

ColumnWidths - stabileste dimensiuni pentru coloanele unui obiect de tip lista. Se exprima in pixeli. Daca nu sunt specificate dimensiuni, in cazul mai multor coloane, fiecare linie a listei va fi dimensionata in functie de lungimea valorilor de pe fiecare linie a sursei de date, rezultand uneori un aspect nedorit al listei . Aceasta proprietate se foloseste in combinatie cu ColumnLines.

BoundColumn - specifica a cata coloana, (de la stanga la dreapta, numerotarea incepe cu coloana 1) este legata de sursa de date (Control Source) sau valoarea carei coloane va fi preluata de proprietatea value. Se foloseste doar in cazul in care un obiect de tip lista are mai multe coloane. Oricum indiferent de numarul coloanei legate, obiectul combo-box sau list box va afisa elementul de pe prima coloana, corespunzator liniei curente.

RecordSource - proprietate pe care o regasim numai la controalele de tip grid si specifica sursa de date. Aceasta sursa este bidirectionala: se afiseaza datele tabelei in controlul Grid si totodata, valorile pot fi modificate direct in grid, deplasarea pe alta linie producand actualizarea lor. Fiecare coloana a controlului Grid ar trebui sa fie, la randul ei, legata prin propria proprietate controlsource la o coloana a tabelei sursa. In caz contrar, grid-ul afiseaza coloanele in ordinea in care ele se gasesc in sursa de date.

RecordSourcetype - tipul sursei de date pentru un control Grid. Poate fi una dintre variantele din tabelul de mai jos:

Varianta

Semnificatie

1 Alias

Sursa va fi o tabela din baza de date sau o tabela derivata view



2 Prompt

In executie se va deschide o fereastra de dialog pentru ca utilizatorul sa-si aleaga singur tabela sursa. In acest caz proprietatea RecordSource va ramane vida in faza de proiectare.

3 Query (.qpr)

procedura de interogare cu extensia .qpr, ce are ca rezultat o tabela sau o tabela temporara

4 SQL

Fraza select ce are ca rezultat o tabela permanenta sau temporara

Name - specifica numele obiectului, folosit pentru a accesa proprietatile si metodele obiectului respectiv. Obiectele din acelasi container nu pot avea acelasi nume.

Caption - specifica textul ce va fi afisat pe obiectul respectiv

Enabled - poate fi .t. sau .f. si determina starea obiectului din punct de vedere al accesibilitatii de catre utilizator (accesibil sau inaccesibil la momentul executiei), obiectul fiind totusi vizibil

Visible - poate fi .t. sau .f., starea avand ca rezultat vizibilitatea sau invizibilitatea obiectului pentru utilizator

SelectOnEntry - poate fi .t. sau .f. indica daca valoarea curenta afisata de obiect va fi sau nu automat selectata in momentul in care acesta primeste controlul (focus-ul) Proprietatea este utila pentru a nu obliga utilizatorul sa stearga mai intai valoarea veche si apoi sa o introduca pe cea noua, din moment ce poate scrie direct peste cea veche.

Tabindex - poate lua numai valori numerice pozitive, de la 1 la n, si indica ordinea in care va fi transferat controlul de la un obiect la altul, in cadrul formularului, in cazul utilizarii exclusive a tastaturii (tab , ctrl+tab). Initial este ordinea in care au fost trasate controalele, dar se poate modifica prin view - tab order . urmand a face un click pe numerele afisate de fiecare control, in noua ordine dorita.

Tab Stop - daca are volarea .f. obiectul nu va primi niciodata controlul in cazul utilizarii tastataturi.

ButtonCount - specifica numarul de butoane disponibile intr-un obiect de tip OptionGroup sau CommandGroup.

TooltipText - specifica textul ce va aparea ca eticheta pentru obiectul respectiv in momentul plimbarii mouse-ului deasupra sa. Necesita starea unei alte proprietati a formularului si anume Show Tips cu valoarea .T.

WindowType - proprietate specifica doar formularului, ce poate avea doua valori Modeless si Modal. Daca proprietatea are valoarea modal, este interzis accesul la alte formulare sau la meniu atata timp cat formularul se afla in executie.

Proprietati specifice obiectelor de tip lista:

Presupunem ca avem un obiect de tip lista cu numele cbotest, cu doua linii si doua coloane cu elementele a11, a12, a21, a22.

ListCount - returneaza numarul de linii din lista de elemente.(exp x=cbotest.listcount ; x=2)

ListItem(nrlinie) - returneaza elementul din lista de pe linia specificata prin nrlinie. Daca lista are mai multe coloane elementul va fi implicit extras de pe prima coloana (exp x=cbotest.listitem(2); x=a21)

List(nrlinie, nrcoloana) - returneaza elementul din lista specificat prin nrlinie si nrcoloana. (exp x=cbotest.list(1,2); x=a12)

ListIndex - desemneaza indexul liniei curente sau care va deveni curenta si prin urmare elementul curent afisat de control (exp cbotest.listindex=2 va determina selectarea liniei 2 din lista iar cbotest va afisa ca valoare curenta a21)

Despre evenimente si metode

Evenimentele si metodele folosite mai des in proiectarea formularelor ar fi urmatoarele:

Init - eveniment - se declanseaza in momentul in care se creeaza un obiect, la lansarea in executie a unui formular

In metoda atasata evenimentului init se pot introduce parametrii formularului prin utilizarea obligatoriu pe prima linie, a sintaxei:

LPARAMETERS param1, param2, .

In astfel de cazuri formularul va trebui lansat cu comanda do form numeformular with valparam1, valparam2,..

Pentru a impiedica crearea unui obiect, in functie de valorile anumitor parametri la momentul executiei, in evenimentul Init se foloseste instructiunea return .f.

Destroy - eveniment - se executul in momentul in care un obiect este distrus (sters de pe ecran si descarcat din memorie, ca de exemplu la inchiderea formularului)

Load - eveniment - se declaseaza inainte de crearea oricarui obiect, deci inaite de evenimentul init, si il regasim numai la nivel de formular

Unload - eveniment - specific doar formularelor, se declanseaza dupa evenimentul destroy

Release - metoda - specifica doar formularelor, se declanseaza la invocare efectiva printr-o linie de cod (thisform.release) si duce la inchiderea formularului (disparitia sa de pe ecran si stergerea din memorie). Declanseaza evenimentele destroy si apoi unload

Active - eveniment - specific formularelor si controalelor de tip PageFrame (cadre de pagina). Se declanseaza la prelucrarea controlului, cand un formular sau un cadru de pagina devine activ in urma actiunii utilizatorului sau dupa aparitia pe ecran a controlului, dar numai ca urmare a invocarii explicite prin cod

Gotfocus - eveniment - se declanseaza in momentul cand un obiect primeste controlul - prin click sau deplasare cu ajutorul tastaturii.

When- eveniment - se declanseaza inainte de gotfocus si este utilizat in general pentru blocarea sau nu a accesului la un obiect in fuctie de anumite conditii. Daca acest eveniment returneaza .f. (in codul sau se scrie return .f.) obiectul nu va primi controlul.

Valid- eveniment - se declanseaza chiar inainte ca un obiect sa piarda controlul si este utilizat in general pentru a nu permite parasirea controlului daca anumite conditii nu au fost indeplinite (spre exp daca datele dintr-un textbox nu sunt valide ca format sau semnificatie) Daca evenimentul returneaza .f. (return .f.) utilizatorul nu poate pleca de pe obiectul respectiv decat dupa introducerea unor date corecte. Conditiile de validare se verifica in metoda asociata, folosind si proprietatea value, chiar in procedura evenimentului valid.

LostFocus - eveniment - se declanseaza cand un obiect pierde controlul la click(sau de la tastatura) pe alt obiect. Are loc dupa evenimentul valid

Setfocus - metoda - controlul va fi predat obiectului specificat (cmbtest.setfocus) Nu poate fi invocata din evenimentul valid.

Refresh - metoda - se declanseaza la invocare explicita printr-o linie de cod si genereaza reactualizarea valorilor afisate de obiecte (Valori stocate in proprietatea value), in functie de valorile curente ale surselor de date. La executia metodei refresh controalele legate la campuri din tabele vor actualiza valorile afisate, in functie de inregistrarea curenta.

Requery - metoda - specifica obiectelor de tip lista, reevalueaza expresia din proprietatea rowsource si actualizeaza lista de elemente a obiectului. Se declanseaza la invocare explicita prin cod.

Click - se declanseaza la un click de mouse sau la apasarea tastei enter ori space pe obiectul curent.

Utilizarea Data Enviroment pentru deschiderea tabelelor

Aceasta se realizeaza prin click dreapta pe formular si alegerea optiunii data enviroment apoi din meniul contextual se alege mai intai optiunea add care va afisa o fereastra ce contine tabelele bazei de date.

Odata adaugate tabelele necesare in data enviroment, este important de stabilit daca acestea trebuie deschise in mod exclusiv sau in mod partajat (shared). Setarea implicita a proprietatii exclusive este .f. Ea nu trebuie shimbata daca lucram intr-un mediu multiutilizator, deoarece nimeni nu ar mai putea folosi tabelele respective pana cand nu se termina lucru cu acest formular. Daca se lucreaza doar in regim monoutilizator la o firma mica, avand un singur calculator putem folosi starea Exclusive=.t., mai ales daca se doreste ca la iesirea din formular, sa elimine toate inregistrarile marcate pentru stergere in sesiunea de lucru curenta (comanda pack cere mod de lucru exclusive)

Ce facem cu Pack daca suntem constransi sa folosim modul de lucru partajat. O solutie este sa renuntam la comanda pack din formular urmand sa concepem o procedura adecvata care:

incearca sa deschida tabelele in mod exclusiv

executa comanda pack pe tabelele unde deschiderea exclusiva a reusit







Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate