Sunteți pe pagina 1din 29

1. Realizarea aplicatiei (fisierului .

exe)
Realizarea aplicatiei se face prin contruirea unui proiect VFP (generarea lui cu un wizard) si compilarea lui ca fisier .exe In directorul C:\F1 Manager se afla tabelele: circuit.dbf, impreuna cu circuit.fpt constructor.dbf, impreuna cu constructor.fpt driver.dbf, impreuna cu driver.fpt sponsor.dbf, impreuna cu sponsor.fpt concureaza.dbf, impreuna cu concureaza.fpt investeste.dbf, impreuna cu investeste.fpt Microsoft Visual FoxPro 9.0 si din fereastra Task Se lanseaza in executie Pane Manger se alege Create a new application Obs: In cazul in care fereastra Task Pane Manger nu este vizibila se apasa butonul Task Pane din bara de sus a aplicatiei VFP, ca in imaginea de mai jos:

Buton Task Pane fereastra Task Pane Manger Create a new application

Astfel se porneste un Wizard care ne ajuta in construirea aplicatiei. In fereastra Application Wizard nou aparuta se scrie numele proiectului F1 Manager in campul Project name, iar in campul Project file se specifica adresa pe hard unde este salvat proiectul. Se debifeaza optiunea Create project directory structure (fisierele proiectului vor fi puse toate in acelasi director (C:\F1 Manager) deci nu impartite in directoare de forma C:\F1 Manager\dir1, C:\F1 Manager\dir2). Vezi imaginea de mai jos:

fereastra Application Wizard campul Project name campul Project file Se debifeaza optiunea Create project directory structure

Se apasa butonul OK si Wizardul incepe generarea proiectului. Durata generarii depinde de performantele calculatorului si poate varia intre cateva secunde si cateva minute. In dreapta sus va aparea o fereastra de avertizare de forma:

La sfarsitul generarii ecranul utilizatorului va arata asa:

fereastra Application Builder Tabul General

Sectiunea Common Dialogs

In fereastra Application Builder, la tabul General in sectiunea Common Dialogs se vor bifa optiunile Splash Screen (ecran de inatmpinare), About dialog (fereastra

despre aplicatie) si Quick start (functii rapide). Aceste optiuni genereaza in aplicatie ferestrele de mai jos:

Splash screen

Quick Start About dialog (despre aplicatie) Se gaseste pe bara de meniu a apllicatie in Help About

In tabul urmator Credits, se completeaza informatiile necesare, ca mai jos:

In tabul numit Data, folosind butonul Select, navigam catre locatia (in cazul nostru C:\F1 Manager) unde avem tabelele circuit.dbf, constructor.dbf, driver.dbf si sponsor.dbf, concureaza.dbf, investeste.dbf (Nu si f1manager_app.dbf care a fost generat de wizard) si le vom adauga una cate una. Pentru primele patru bifam optiunile Form si Raport si vom obtine ca in imagine:

Optiunea Form nu se bifeaza pentru concureaza.dbf si investeste.dbf Analog pentru optiunea Report

Buton OK

Celelate taburi (Forms, Reports, Advanced) nu ne sunt deocamdata folositoare. Apasam OK si va aparea fereastra urmatoare:

Din nou OK si asteptam procesarea datelor. Apoi in fereastra Project Manager apasam butonul Build

butonul Build

In fereastra nou aparuta Build Options alegem Win32 executable/COM server (.exe) si apasam OK Alegem Win32

Salvam aplicatia in directorul C:\F1 Manager cu numele f1manager.exe ca in imaginea de mai jos:

Salvam in C:\F1 Manager

Cu numele f1manager.exe

La terminarea procesului de constructie, in stanga ecranului jos, va aparea mesajul:

Se poate inchide proiectul iar aplicatia F1manager poate fi rulata acum din C:\F1 Manager cu click pe f1manager.exe

2. Realizarea programelor pentru:


2.1 Clasament general piloti (top_p.prg) (criteriu: puncte acumulate) 2.2 Clasament general constructori (top_c.prg) (criteriu: puncte acumulate) 2.3 Clasament general sponsori (top_s.prg) (criteriu: sume investite) 2.4 Puncte piloti pe un circuit (program3.prg WITH cod_ci) 2.5 Puncte pilot pe circuite disputate(program5.prg WITH cod_p) 2.6 Lista piloti de teste 2.7 Puncte constructori pe un circuit (program7.prg WITH cod_ci) 2.8 Puncte constructor pe circuite disputate (program6.prg WITH cod_co) 2.9 Sponsori pentru un constructor (program8.prg WITH cod_co) 2.10 Constructorul care are un anumit sponsor (program9.prg WITH cod_s)

3. Crearea de forme (ferestre windows) pentru folosirea programelor


3.1 Crearea formei Pentru utilizarea primelor trei programe vom crea o forma (fereastra windows) numita Microsoft Visual FoxPro 9.0 si clasamente_generale. Se lanseaza in executie din meniul File algem New apoi Form si click pe New File, ca mai jos:

Alegem optiunea Form

Apoi click pe New File

Forma (fereastra windows) pe care se lucreaza arata asa (Form Designer): Butonul de maximizare (proprietatea MaxButton) Titlul formei (proprietatea Caption) Marginile formei pot fi modificate prin tragere cu mouse-ul (sau proprietatile Width si Height)

Iar proprietatile ei pot fi observate in fereastra Properties: Camp de editare proprietate Proprietate selectata

Camp care indica detinatorull proprietatilor listate. In acest caz chiar forma Form1. Detalii in paragraful Procesul de adaugare

Explicatii privind proprietatea selectata

Personalizarea formei: Actiune Proprietate Modificarea titlului Caption Modificarea dimensiunilor Width Height Dezactivarea butonului de MaxButton maximizare Modificarea icon-ului Icon Dezactivarea modificarii BorderStyle dimensiunilor prin tragere cu mouse-ul in timpul executiei Adaugare poza de fundal Picture Noua valoare Clasamente Generale 506 419 .F. c:\F1 manager\driver_m.ico 1 - Fixed Single

c:\F1 manager\backgroundgeers.jpg

3.2 Salvarea formei Din meniul File alegeti Save as si salvati forma in directorul c:\F1 manager cu numele clasamente_generale (ceea ce va duce la aparitia a doua fisiere in directorul F1 Manager: clasamente_generale.sct, clasamente_generale.scx). Forma, in Form Designer arata ca in (a) si in Run Time ca in (b)

(a) Forma in modul de constructie (form designer)

(b) Forma ca program lansat in executie (run time)

3.3 Rularea formei (modul Run Time) Din meniul Form alegeti Run Form sau din bara de sus folosind butonul: iar forma arata ca mai sus, cazul(b). In fereastra Command se poate observa comanda care lanseaza in executie aceasta forma: DO FORM "c:\f1 manager\clasamente_generale.scx" 3.4 Adaugarea de controale formei

Pentru aceasta vom folosi meniul Form Controls, cara arata ca mai jos. Daca nu este vizibil atunci din meniul View se alege Toolbars si apoi in fereastra nou aparuta se bifeaza optiunea Form Controls Adauga butoane

Adauga etichete

Adauga imagini Adauga combolists Adauga linii

Prosesul de adaugare a unui nou obiect, selectat din form Controls, intr-o forma se desfasoara astfel: click stanga (fara a tine apasat butonul stang al mouseului) pe obiectul de adaugat din Form Controls (si observam modificarea cursorului mouse-ului) si apoi click stanga pe forma si, fara a elibera butonul stang al mouseului, se descrie un dreptunghi. Visual Fox Pro (VFP) atribuie implicit un nume obiectelor inserate in forma astfel Nume obiect Nume implicit Label1, Label2, . Eticheta (simbol in Form Controls: ) Command1, Command2, Buton (simbol in Form Controls: ) Picture1, Picture2, Imagine (simbol in Form Controls: ) Lista derulanta - ComboList (simbol in Combo1, Combo2, Form Controls: ) Line1, Line2, Linie (simbol in Form Controls: ) Se observa ca fereastra de proprietati are un camp in care se specifica numele obiectului caruia se aplica proprietatile respective:

Command1 este selectat

Image1 este selectata Proprietati pentru obiectul Image1

Proprietati pentru obiectul Command1

Pentru selectarea obiectelor de dimensiuni reduse sau foarte apropiate (linii cu efect de umbrire: mai jos: line1 si line2) se poate folosi fereastra Properties (si nu click pe obiectul de modificat din forma).

Lista derulanta (combo-list) cu obiectele din forma

In forma clasamente generale vom adauga: - 3 imagini - 4 linii (grupate cate 2 pentru a creea un efect de umbra) - 3 etichete - 4 butoane Adaugare obiecte: pentru fiecare obiect se selecteaza din meniul Form Controls obiectul respectiv, se insereaza in forma (prin descrierea unui dreptunghi) si din fereastra de Properties se modifica proprietatile corespunzatoare, conform cu tabelul: Nume Obiect Image1 Nume Proprietate Picture Top Left Picture Top Left Picture Top Left Left Top Height Width BorderColor Left Top Height Width Valoare c:\F1 manager\sp5.jpg 69 11 c:\F1 manager\f1m.jpg 5 11 c:\F1 manager\fia.jpg 5 455 1 365 0 500 0,0,0 3 366 0 500

Image2

Image3

Line1

Line2

Line3

Line4

Command1

Command2

Command3

Command4

Label1

BorderColor Left Top Height Width BorderColor Left Top Height Width BorderColor Caption Left Top Height Width Cancel Caption Left Top Height Width Caption Left Top Height Width Caption Left Top Height Width Caption AutoSize BackStyle FontSize ForeColor Left Top WordWrap Alignment Height Width Caption AutoSize BackStyle FontSize

Label2

255,255,255 1 58 0 500 0,0,0 3 59 0 500 255,255,255 Comanda se executa si Close la apasarea butonului 405 Esc de pe tastatura 384 (nu numai cand se da 24 click pe buton) 84 .T. - True Clasament* sponsori 168 228 25 205 Clasament general piloti 168 132 25 205 Clasament general constructori 168 180 25 205 (*) In ordinea sumelor cu care au sponsorizat constructorii. .F. - False 0 - Transparent 7 192,192,192 181 264 .T. - True 2 Center 32 182 Clasamente generale .T. - True 0 - Transparent 14

Label 3

ForeColor Left Top FontBold Left Top Height Width BackColor Caption

48,48,50 198 22 .T. - True 0 372 49 595 48,48,50

In cazul in care se doreste ca anumite obiecte sa fie in spatele sau in fata altora se foloseste meniul Layout. Activarea lui se face din meniul View, optiunea Toolbars si din fereastra nou aparuta se bifeaza Layout. Meniul arata asa:

Butonul Send to Back trece obiectul selectat (care acopera) in spatele celorlalte obiecte din forma

Astfel se selecteaza eticheta Label3 si cu un click pe butonul Send to Back din meniul Layout se aduce in fata butonul Close. ) si se ruleaza ( Se salveaza forma ( Save si respectiv Form Run Form. Forma arata asa: ), sau echivalent din meniu File

3.5 Adaugarea de comenzi pentru butoanele inserate. Adaugarea de comenzi pentru un buton inserat in forma se face astfel: dubluclick pe buton iar in fereastra noua aparuta se scriu liniile de cod (comenzile) ce trebuie executate. Trebuie avut in vedere ca in campul Procedure sa fie valoarea Click, ceea ce inseamna ca respectivele linii de cod se executa cand utilizatorul face click pe butonul respectiv. In forma de mai sus (calsamente generale) codul pentru butonul Clasament general piloti (care se numeste command3) este urmatorul:
Liniile de cod sunt aferente procedurii click (actiunii de click pe buton a utilizatorului)

Obiectul pentru care se adauga comenzi

Linii de cod

Pentru afisarea clasamentului general la piloti este necesara doar linia:


DO "c:\f1 manager\top_p.prg"

care executa programul top_p.prg din directorul f1 manager. Pentru ca fereastra browse care arata rezultatul programului top_p.prg imprumuta dimensiunile mai reduse ale formei (clasamente_generale) unde este gazduit butonul care o generaeza, s-au adaugat linii de cod pentru marirea formei si apoi revenirea acesteia la dimensiunile initiale. Linii care maresc dimensiunile formei:
thisform.Height = 419 thisform.Width = 593

Linii care aduc forma la dimensiunile initiale:


thisform.Height = 419 thisform.Width = 506

De asemenea se modifica si titlul ferestrei browse cu clasamente generale. Cand se afiseaza situatia pilotilor titlul ferestrei va fi Clasament general piloti care este dat de
thisform.Caption ="Clasament general piloti"

Revenirea la titlul initial al formei clasamente_generale se face cu:


thisform.Caption ="Clasamente"

In mod analog liniile de cod care se adauga pentru butonul Clasament general constructori sunt:
thisform.Caption ="Clasament general constructori" thisform.Height = 419 thisform.Width = 593 DO "c:\f1 manager\top_c.prg" thisform.Height = 419 thisform.Width = 506 thisform.Caption ="Clasamente"

iar pentru Clasament general sponsori:


thisform.Caption ="Clasament general sponsori" thisform.Height = 419 thisform.Width = 593 DO "c:\f1 manager\top_s.prg" thisform.Height = 419 thisform.Width = 506 thisform.Caption ="Clasamente"

In ambele cazuri codul este adaugat pentru procedura Click. Un caz mai deosebit este reprezentat de formele unde click-ul pe un buton determina popularea unei liste derulante (combo) cu anumite valori ce vor reprezenta parametrii de intrare pentru programe. In cazul formei piloti F1 un click pe butonul Detalii puncte piloti pe circuite determina aparitie unei liste de piloti.

Un click pe acest buton determina aparitia unei liste derulante

Codul pentru butonul Detalii puncte piloti pe circuite este


CLOSE TABLES All *inchide toate tabelele deschise anterior thisform.combo2.Clear() *sterge toate valorile din lista derulanta USE driver *caut in tabelul cu piloti SELECT nume_p, prenume_p; * numele si prenumele FROM driver; order by 1; *ordonate alfabetic dupa nume ascendent

into TABLE temp.dbf

*in tabelul temporar temp

SCAN *parcurg de la inceput toate inregistrarile din temp thisform.combo2.AddItem(TRIM(temp.nume_p)+ " " +TRIM(temp.prenume_p)) *adaug in lista derulanta combo2 nume prenume ENDSCAN DROP TABLE temp *sterg tabelul temp thisform.combo2.DisplayValue="Alegeti pilotul ..." CLOSE TABLES All * inchid toate tabelele thisform.combo1.Visible = .F. *ma asigur ca cealalta lista nu e viz thisform.combo2.Visible = .T. *combo2 devine vizibila

Alegerea unei valori (de forma nume prenume) din lista derulanta 2 implica o actiune de click. Deci pentru obiectul combo2 trebuie definite anumite comenzi cand utilizatorul face click pe o valoare din lista. In principiu, click-ul utilizatorului trebuie sa trimita catre un program o valoare pe baza careia se vor afisa anumite rezultate. In modul form designer se face dublu click pe obiectul combo2, iar in fereastra nou aparuta se selecteaza in campul procedure valoarea Click si se insereaza codul de mai jos: Modul de lucru este Form Designer (constructie a formei)

Dublu click pe lista derulanta combo2 pentru a adauga linii de cod

Cod adaugat

Cod de inserat
IF LEFT(thisform.combo2.Text,7)="Alegeti" then WAIT "Eroare: Alegerea nu este valida !" WINDOW AT 20,70 NOWAIT * daca se da click pe Alegeti pilotul ... informez utilizatorul ca * alegerea nu e valida ELSE * daca a dat click pe numele unui circuit

thisform.combo2.Visible= .F. *ascund lista derulanta pt ca *acum nu-mi m-ai trebuie, s-a facut o alegere CLOSE TABLES all USE driver nr_max_p=50 * nr maxim de piloti cu care lucreaza aplicatia DIMENSION myAr(nr_max_p,2) *definesc o matrice cu 50 lin si 2 col in * care inregistrarile sunt de forma * myAr(1,1)=nume prenume, myAr(1,2)= cod_p SELECT cod_p,TRIM(nume_p)+" "+TRIM(prenume_p); from driver; ORDER BY 2; INTO ARRAY myAr *salvez in myAr sub forma de mai sus USE FOR gn=1 TO nr_max_p IF thisform.combo2.Value = TRIM(myAr(gn,2)) then *caut numele (myAr(nume prenume, x)) pe care s-a dat click thisform.Caption ="Detalii puncte pilot: " + TRIM(myAr(gn,2)) DO program5.prg WITH myAr(gn,1)*trimit programului codul pilotului (x) *<<with>> spune ca program5 se executa cu argumentul myAr(gn,1) thisform.Caption ="Clasamente" exit endif ENDFOR CLOSE ALL endif

Toate formele se inchid folosind butonul close:

Codul asociat acestui buton este:


thisform.Release()

care se scrie tot pentru procedura click

Forme necesare aplicatiei F1 Manager: circuit: realizarea parcurgerea in ordine alfabetica a circuitelor existente in baza de date circuit.dbf

clasamente generale: construieste si listeaza clasamentele pilotilor, constructorilor si al sponsorilor

concureaza_up: realizeaza introducerea de noi date in tabela concureaza

constructor: realizarea parcurgerea in ordine alfabetica a constructorilor existenti in baza de date constructor.dbf

constructori: realizeaza situatii despre constructori

driver: realizarea parcurgerea in ordine alfabetica a pilotilor existenti in baza de date driver.dbf

investeste_up: realizeaza introducerea de noi date in tabela investeste

piloti: realizeaza situatii despre piloti

sponsor: realizarea parcurgerea in ordine alfabetica a sponsorilor existenti in baza de date sponsor.dbf

sponsori: realizeaza situatii despre sponsori

structura: arata structura bazei de date

web: arata sursele de informare

3.6 Adaugarea formelor la proiect Dublu-click pe f1manager.pjt si din fereastra Project Manager alegem al 3-a tab, numit Docs. Click pe Forms si apoi utilizand butonul Add se adauga formele respective Click pentru a adauga forme Click pe forma respectiva

Ok pentru a adauga forma in proiect

4. Inregistrarea programelor in Standard Toolbar si meniuri


Inregistrarea in Standard Toolbar In fereastra Project Manager, selectam tabul Classes apoi click pe semnul + (plus) din dreptul scrisului f1manager_app ( ), apoi dublu-click pe app_standardtoolbar. Click pe tabul Classes

Dublu-click pe
app_standardtoolbar

Click pe semnul + (plus)

Toolbar-ul standard arata asa:

Apasam shift (si tinem apasat) si facem click stanga pe toate butoanele din toolbar, apoi din fereastra Properties alegem proprietatea Visible pe care o facem false (valoare .F.-False). Adica nu dorim ca butoanele acestea sa apara in aplicatie.

Folosind meniul Form Controls se insereaza butoane peste cele existente.

5. Recompilarea aplicatiei

Folosind cele 8 puncte butonul poate fi modificat convenabil

Modifica inaltimea butonului

Modifica lungimea butonului

Vom insera 5 butoane, din care al patrulea va avea doar rol de evidentiere pentru al 5lea buton

Buton 2 Buton 1 Buton 3

Buton 4 Buton 5

Caption Alignment AutoSize DisabledBack Color DisabledFore Color ForeColor Height Picture

Buton1 Piloti

Buton2 Buton3 Constructori Sponsori 1 Middle Right .T. -True 192,192,192 192,192,192 255,255,255 30

Buton5 Clasamente generale

c:\f1 manager\b2.j pg

c:\f1 manager\b3.jpg

c:\f1 manager\b4.jpg

c:\f1 manager\b1.jpg

12 Center of control positioned underlying caption PicturePositio n DO FORM DO FORM "c:\f1 DO FORM DO FORM "c:\f1 Click
"c:\f1 manager\pilot i.scx" manager\construct ori.scx" "c:\f1 manager\sponso ri.scx" manager\clasamente_gen erale.scx"

Inregistrarea in meniu In fereastra Project Manager, selectam tabul Other apoi click pe semnul + (plus) din dreptul scrisului Menus ( ), apoi dublu-click pe f1manager_main.

Buton stergere meniu selectat

Stergem meniurile Tools, Favorites si Window prin click pe meniul respectiv si apoi click pe butonul Delete (din dreapta) .

Pentru a insera un nou item in meniu, click pe butonul de insert

Dreptunghi alb pentru introdus item nou sau click pe Insert

Sau completam numele noului item in dreptunghiul alb. Click pe dreptunghiul alb completam \<Quick Start, apoi click pe Submeniu si alegem optiunea command si completam APP_GLOBAL.DoStartupForm() ca mai jos:

Scrierea \<Quick Start implica shortcut-ul din tastatura AltQ pentru a accesa acest meniu

Mai inseram un intem: completam Clasamente generale in dreptunghiul alb si il apoi tras in sus sau in jos) dupa Quick Start. In coloana pozitionam (cu clic pe Result alegem optiunea submeniu si apoi click pe butonul Create ( ), ca mai jos: Click pe Create pentru a creea un submeniu

Prompt Result Create

Clasament \<piloti Procedure


DO "c:\f1 manager\top_p.prg"

Clasament \<constructori Procedure


DO "c:\f1 manager\top_c.prg"

Clasament \<sponsori Procedure


DO "c:\f1 manager\top_s.prg"

Coloana Prompt

Coloana Result

Click pentru a adauga codul


DO "c:\f1 manager\... ca mai sus

Dupa scrierea procedurii Fereastra se inchide cu

Revenirea la nivelul anterior (de sus) se face prin selectarea optiunii Menu Bar din campul Menu Level Revenirea la meniul superior

In mod analog se mai insereaza doua meniuri: Detalii si Administrare, ca mai jos:

Meniul administrare: Prompt \<Piloti Result Procedure Create / Edit


CLOSE ALL USE driver EXCLUSIVE append CLOSE ALL CLOSE ALL USE constructor EXCLUSIVE append CLOSE ALL CLOSE ALL USE circuit EXCLUSIVE append CLOSE ALL CLOSE ALL USE sponsor EXCLUSIVE append CLOSE ALL

\<Constructori

Procedure

C\<ircuite

Procedure

\<Sponsori

Procedure

C\<oncureaza \<Investeste Structura bazei de date

Submeniu Submeniu Procedure

DO FORM "c:\f1 manager\structura.scx"

Valoarea \- insereaza o linie de separare ( meniului (se poate obtine si prin click pe butonul Inser Bar )

) intre elementele

Submeniul concureaza: Prompt \<Up-date relatie \<Vezi inregistrari Result Procedure Procedure Create / Edit
DO FORM "c:\f1 manager\concureaza_up.scx" CLOSE ALL USE concureaza EXCLUSIVE

append CLOSE ALL

Submeniul concureaza

Submeniul investeste: Prompt \<Up-date relatie \<Vezi inregistrari Result Procedure Procedure Create / Edit
DO FORM "c:\f1 manager\investeste_up.scx" CLOSE ALL USE investeste EXCLUSIVE append CLOSE ALL

Submeniul investeste

In meniul Help se fac modificarile:

Prompt \<F1 pe Wb \<About

Result Procedure Command

Create / Edit
DO FORM "c:\f1 manager\web.scx" APP_GLOBAL.DoAboutBox()

Pentru modificarea formei de intampinare (splash screen) trebuie editat (dublu click) app_splash din Project Manager, tabul Classes, categoria f1manager_app (click pe semnul + [plus])

In forma app_splash inseram o imagine (Image1) cu proprietatile: Height: 283 Left: 0 Picture: c:\f1 manager\sp.jpg Top: 1 Width: 304

a)

b)

SplashScreen in modul Designer (de constructie) a) si in executie b)

5. Realizarea fisierului .exe

Click pe Build

Daca apare eroarea:

atunci din Tools submeniul Options..., tabul File Locations se cauta in lista Menu Builder. Apoi click Modify si folosind butonul se navigheaza catre locatia fisierului genmenu.prg. Implicit acesta se gaseste in c:\program files\microsoft visual foxpro 9\genmenu.prg

Apoi se reia procesul de constructie a fisierului .exe si totul ar trebui sa mearga bine.

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