|
proprietati.In mod curent se utilizeaza pentru a seta o anumita proprie-
|
səhifə | 4/17 | tarix | 17.03.2018 | ölçüsü | 1,41 Mb. | | #45490 |
| proprietati.In mod curent se utilizeaza pentru a seta o anumita proprie-
tate,sau pentru a alege o optiune logica ADEVARAT sau FALS.De exemplu,
intr-un formular se poate utiliza pentru a specifica o anumita conditie
gen: casatorit sau necasatorit,elev sau student etc.
Acest obiect ocupa putin loc in interfata grafica,poate fi utilizat in
timpul executiei sau poate fi ignorat cu desavarsire.Obiectul prezinta
doua stiluri de prezentare diferite.Stilul standard,apare ca o caseta
in care se poate bifa o pipa,iar stilul grafic apare ca un buton oarecare
la care se pot utiliza pictograme,atat pentru situatia in care butonul
este apasat(selectat) cat si pentru situatia in care butonul este liber.
EXEMPLU: In Form Designer adaugati un obiect de tip Check Box.
Pentru ca butonul sa controleze o stare oarecare,adaugati si un camp
Label si dimensiunati obiectul pentru o reprezentare optima.
Apoi selectati obiectul Check1,deschideti fereastra Properties,executati
un dublu click pe Click Event si editati urmatoarea procedura:
DO CASE
CASE This.Value = 1
ThisForm.Label1.Caption = "Butonul este selectat"
CASE This.Value = 0
ThisForm.Label1.Caption = "Butonul este neselectat"
ENDCASE
Apoi alegeti proprietatea Caption si scrieti textul dorit(APASA BUTONUL).
Verificati fereastra cu Run Form.
In mod normal,textul din Label1 se va modifica dupa cum caseta Check1
este sau nu este selectata.Pentru ca obiectul sa fie reprezentat sub forma
de buton,alegeti proprietatea Style si setati valoarea 1 - Graphical,apoi
alegeti proprietatea Picture si adaugati o pictograma(apasati pe butonul
cu trei puncte si selectati o fila cu extensia .bmp).Daca doriti ca butonul
sa afiseze o imagine diferita atunci cand este apasat,selectati proprie-
tatea DownPicture si adaugati o noua pictograma.
Pentru a realiza imagini de tip .bmp proprii,puteti utiliza utilitarul
Imageedit din directorul Imageedit.Pentru acest scop,parasiti programul
Microsoft Visual Foxpro si deschideti din Windows Vpf/Imageedit.Din File,
alegeti New,apoi Bitmap,selectati dimensiunile si culorile,apoi desenati
imaginea dorita si salvati fila in directorul Vfp(pentru a fi mai usor de
preluat in viitor).Apoi redeschideti proiectul,alegeti din Forms fereastra
dorita si apasati butonul Modify.In Form Designer,deschideti fereastra
Properties,selectati obiectul Check Box de tip grafic,alegeti Picture si
selectati imaginea .bmp proaspat realizata.Acum butonul va avea aspectul
dorit.
Obiectul Check Box poate fi si inactivat complet,cu ajutorul proprie-
tatii Enabled.In plus,proprietatea Value accepta si valoarea 2,care semni-
fica faptul ca starea obiectului este nedeterminata(fata de 0=neselectat
si 1=selectat).Pentru obiectele de tip Check Box,proprietatea Value accepta
si valori logice cu semnificatia .F. = 0,.T. = 1 si NULL = 2.
Pentru desemnarea obiectului,se prefera pointerul This,iar pentru desem-
narea ferestrei curente se utilizeaza pointerul ThisForm,desi se pot
utiliza si formulele explicite de gen Form1.Check1.Caption...etc.
-19- FORM - COMBO BOX
Pentru a realiza o interfata grafica interactiva,frecvent se apeleaza
la obiecte de tip ComboBox.Aceste obiecte combina cate un obiect de tip
TextBox cu un obiect de tip ListBox,astfel incat utilizatorul poate sa
introduca un text oarecare in momentul executiei,sau poate sa aleaga un
text preexistent in lista de optiuni a obiectului.Mai mult,lista de
optiuni poate fi completata,redusa,filtrata sau modificata activ,in
timpul executiei.Astfel,este posibil ca in aceeasi interfata grafica,
utilizatorii sa poata selecta grupuri diferite de date,in functie de o
parola de acces sau un alt criteriu oarecare de selectare a metodei de
organizare al listei de optiuni din ListBox.Fiecare element din lista va
purta un numar de ordine si va putea fi sortat in functie de un anumit
criteriu,dar,este recomandabil ca lista sa nu contina mai mult de 60 de
date distincte.Daca este necesar sa utilizati grupuri mai mare de date,
este recomandabil sa arhivati aceste date in tabele de tip .dbf si sa
utilizati obiecte de tip ComboBox pentru a prelua doar o parte dintre
acestea,in functie de unul sau mai multe criterii de filtrare ( nu se
pot utiliza obiectele de tip ComboBox pentru a arhiva volume mari de
informatie).
Pentru a schimba formatul de prezentare a datelor,se poate utiliza
proprietatea Format.De exemplu,daca se utilizeaza doar date de tip
caracter,se poate seta proprietatea Format la valoarea ! (semnul excla-
marii) pentru a transforma toate caracterele in majuscule.
Pentru a configura si verifica un control de tip ComboBox,se poate
utiliza un algoritm secvential introdus intr-o fila de cod,sau se poate
utiliza utilitarul Builder din Form Designer.
EXEMPLU: din Project Manager alegeti Forms,New si New Form.
In fereastra Form Designer adaugati un obiect de tip ComboBox din bara
de controale Form Controls,apoi executati un click drept de mouse si
alegeti optiunea Builder.
Se va deschide fereastra Combo Box Builder.
Pentru a forma o lista de optiuni,cu date introduse de la tastatura,
alegeti in caseta "Fill the list with:" optiunea "Data entered by hand",
apoi alegeti numarul de coloane si introduceti datele dorite.Atentie:
doar prima coloana va contine datele semnificative,cu care se poate opera
activ in obiectul final,restul coloanelor vor contine doar date orienta-
tive,ce pot fi afisate in momentul selectiei dar nu pot fi preluate din
obiectul TextBox.Introduceti datele astfel incat prima coloana sa contina
datele pe care doriti sa le preluati,iar restul coloanelor sa contina
date orientative pentru ca selectia sa fie cat mai discriminativa(Exemplu:
daca lista contine obiecte de acelasi fel,cea de a doua coloana poate
contine criteriul de discriminare dintre doua sau mai multe obiecte iden-
tice.Dupa ce lista este completa (nu mai mult de 60 de elemente),puteti
modifica aspectul obiectului deschizand meniurile Style si Layout(dar
este recomandabil sa pastrati valorile implicite).Daca inlocuiti stilul
Drop-down combo prin Drop-down list,datele selectate nu vor mai putea fi
preluate cu proprietatea Text,deoarece obiectul TextBox nu va mai putea
fi utilizat (practic ComboBox devine un obiect de tip ListBox).
In meniul Layout puteti modifica largimea campurilor afisate in mo-
mentul selectiei (trageti cu butonul mouse apsat de marginea din dreapta
a butonului situat in capul coloanei respective.
Dupa ce obtineti aspectul dorit,inchideti fereastra Combo Box Builder.
-20-
Pentru ca datele introduse in ComboBox sa poata fi utilizate activ,
este necesar sa utilizati una dintre metodele specializate.Cel mai practic
este sa apelati la metoda InteractiveChange Event,care preia orice mo-
dificare a datelor din obiect.De exemplu,pentru a transfera datele din
ComboBox intr-un obiect de tip Label,adaugati un obiect de tip Label,
apoi executati in fereastra Properties un dublu click pe metoda Interacti-
veChange Event(din Combo1) si editati textul:
ThisForm.Label1.Caption = ThisForm.Combo1.Text
Inchideti fereastra Combo1.InteractiveChange si verificati fereastra cu
Run Form.
Observati ca orice caracter introdus de la tastatura in caseta de
editare,va fi transcris instantaneu in obiectul de tip Label.Pentru a
transfera una dintre optiunile prestabilite,apasati butonul de derulare
si executati un click pe optiunea dorita.
Daca doriti ca lista de optiuni sa se schimbe in functie de un criteriu
oarecare,alegeti metoda Init Event si reconfigurati lista cu ajutorul
metodelor Clear si AddListItem,sau utilizati metoda ProgramaticChange
Event.
Lista de optiuni prestabilite poate fi preluata si dintr-un tabel de
tip .dbf,sau dintr-o arie de date.Pentru a exemplifica acest mod de imple-
mentare,adaugati inca un obiect de tip ComboBox,executati un click drept
si deschideti fereastra Combo Box Builder.In caseta "Fill the list with:"
selectati de aceasta data optiunea "Fields from a table or a view".
In caseta "Databases and tables" introduceti baza de date si/sau tabelul
dorit (Exemplu: alegeti fila Arhiva1.dbf).Apoi alegeti campurile de
care aveti nevoie din caseta "Available fields" si utilizati butonul cu
sageata spre dreapta pentru a transfera campurile utile in caseta "Selec-
ted fields".Pentru a observa rezultatul selectiei,alegeti meniul Layout.
La nevoie modificati dimensiunea coloanelor.
Pentru datele preluate dintr-un tabel,se poate utiliza si meniul
Value.Acest meniu permite ca datele selectate sa fie transcrise automat
intr-o alta coloana,sau chiar intr-un alt tabel.Alegeti in prima caseta
coloana pe care doriti sa o preluati in momentul selectiei si in cea
de a doua caseta ("Field name") alegeti coloana si tabelul in care doriti
sa transferati datele (se poate utiliza si butonul cu trei puncte).
(EXEMPLU: Biblioteca.Autor ).In final,confirmati cu OK.
Pentru a transfera datele selectate in obiectul Label,redefiniti metoda
InteractiveChange Event astfel:
ThisForm.Label1.Caption = ThisForm.Combo2.Text
Inchideti fereastra Combo2.InteractiveChange si verificati fereastra cu
Run Form.Apoi salvati fereastra si inchideti Project Manager.
Acum,se pot utiliza ambele obiecte de tip ComboBox pentru a transfera
date in Label1,iar obiectul Combo2 se poate utiliza si pentru a actualiza
automat o alta baza de date(De exemplu: coloana Autor din biblioteca.dbf).
Studiati cu atentie toate proprietatile si metodele obiectului.Prin
combinarea acestora se pot obtine un numar destul de mare de solutii
tehnice prin care transferul de date dintre doua tabele,sau actualizarea
automata a unui tabel sa se poata face cu un simplu click de mouse.Se pot
adauga o serie de conditii de filtrare si/sau verificare automata a date-
lor,astfel incat transferul sa nu fie efectuat decat daca datele selectate
respecta o anumita conditie (de exemplu daca sunt unice).
-21- FORM - LIST BOX si SPINNER
Un obiect asemanator cu ComboBox este ListBox.Se utilizeaza exclusiv
pentru a alege date prestabilite,dintr-o lista de optiuni,deoarece,spre
deosebire de ComboBox,acest control nu are si o caseta de tip TextBox.
Prin urmare,in timpul executiei nu se pot introduce date de la tastatura.
Acest obiect se utilizeaza preferential pentru a impiedeca orice eroare
posibila,generata de neglijenta in editare a utilizatorului.Se compun
liste cu optiuni(nu mai lungi de 60 de elemente),dintre care utilizatorul
va putea alege varianta dorita.Se programeaza si implemeneteaza la fel
ca obiectul ComboBox (din Form Designer cu Builder).(vezi ComboBox)
Un alt obiect util poarta numele de Spinner (roata) si se utilizeaza
pentru a putea incrementa sau decrementa valoarea unei variabile.Se
prezinta sub forma unei casete de editare cu doua butoane de derulare;
-cel cu sageata in sus incrementeaza valoarea,iar cel cu sageata in jos
decrementeaza valoarea Value.Pentru incrementare se utilizeaza implicit
valoarea 1,dar se poate utiliza orice alta valoare intrega sau fractionara
prin setarea proprietatii Increment.
Obiectul prezinta si doua proprietati; Format si InitMask ce se pot
utiliza pentru a determina formatul de prezentare a datelor.Obiectele de
tip Spinner se utilizeaza in interfata grafica mai ales pentru a schimba
cat mai usor valoarea unei proprietati,pentru a seta aspectul sau cali-
tatea unui alt obiect etc.(Exemplu: nuanta unei culori ).Pentru a determi-
na un domeniu limitat de valori acceptabile,se pot utiliza proprietatile
KeyboardHighValue si KeyboardLowValue.
EXEMPLU: Deschideti o noua fereastra Form Designer.
Adaugati un obiect de tip Spinner si un obiect de tip Label.
Pentru ca saltul sa se faca cu o valoare fractionara,setati proprietatea
Increment(Exemplu: la 3.14 )(in fereastra Properties).Pentru ca sa atri-
buiti o valoare de pornire in format decimal,executati un dublu click pe
metoda Init Event si editati textul: ThisForm.Spinner1.Value = 0.000
Apoi executati un dublu click pe metoda Interactive Change Event si edi-
tati textul: ThisForm.Label1.Caption = Str(ThisForm.Spinner1.Value,5,5)
Verificati fereastra cu Run Form.
Pentru a completa exemplul,puteti utiliza alte trei obiecte Spinner
cu care sa schimbati in timpul executiei culoarea de fond pentru Label1.
Adaugati cele trei obiecte si utilizati metoda Init Event a fiecarui
obiect spinner pentru a seta o valoare oarecare,cu o formula de genul:
This.Value = 200 (setati valorile 50,200 si 250)
Apoi setati pentru fiecare obiect proprietatea Increment la valoarea 10,
proprietatea KeyboardHighValue la valoarea 255 si KeyboardLowValue la
valoarea 0.In final adaugati un buton si editati motoda Click Event astfel
ThisForm.Label1.BackColor = RGB(ThisForm.Spinner2.Value,
ThisForm.Spinner3.Value,ThisForm.Spinner4.Value)
Schimbati numele butonului,in Caption (OK).
Verificati fereastra cu Run.In mod normal,puteti utiliza obiectul Spinner1
pentru a face salturi de 3.14,afisate in Label1,sau puteti utiliza cele
trei obiecte Spinner si butonul pentru a alege activ o culoare de fond
pentru obiectul Label1.Daca doriti,adaugati si trei obiecte de tip Label
in care sa specificati culoarea setata de fiecare spinner (Rosu,Verde si
Albastru).Daca depasiti valorile limita admise,in momentul in care apasati
butonul,va apare o fereastra de avertizare in care se afiseaza domeniul
de valori admise(comanda nu se executa).
-22- FORM - GRID
Cel mai important obiect din bara de controale este obiectul Grid.Acest
obiect este de tip container si permite afisarea datelor sub forma de
randuri si coloane (in tabele).Fiecare coloana este la randul sau un con-
tainer ce include un obiect de tip Header (titlul) si un grup de controale
(de obicei de tip TextBox).Fiecare dintre obiectele care compun obiectul
de tip Grid are proprietati si metode proprii si poate fi accesat sepa-
rat de restul obiectelor din grila.Prin urmare,obiectul de tip Grid poate
fi imaginat ca un grup de obiecte,ce pot fi controlate simultan prin
proprietati si relatii comune,sau pot fi accesate independent de restul
obiectelor.Ca rezultat,datele prezentate in interiorul unui astfel de
obiect pot fi prelucrate prin formule mai mult sau mai putin complexe.
Acest obiect este utilizat preferential pentru prezentarea datelor in
format tabelar,dar poate fi utilizat si pe post de container pentru orice
alt tip de obiecte vizuale.Obisnuit,obiectul de tip grid este conectat
fie la un tabel de tip .dbf,fie la o baza de date.
Pentru a prezenta tabele simple,cu un numar relativ redus de inregis-
trari,se poate utiliza un obiect de tip Grid in care se vor afisa toate
datele.Cu cat tabelul este mai mare,cu atat se vor utiliza formule mai
complexe de selectare a datelor dorite.Uneori,se vor putea utiliza doua
sau mai multe obiecte de tip Grid,in care se vor prezenta doar selectii
ale datelor din tabel,sau datele vor fi ordonate si sortate prin formule
diferite.In alte situatii,se vor utiliza mai multe obiecte de tip Grid
pentru a prezenta datele dintr-un tabel in functie de metode diferite de
filtrare a inregistrarilor afisate,etc.In functie de scopul propus,se
vor extrage din tabelul sursa,doar una sau mai multe dintre coloanele de
date.Mai mult decat atat,obiectul de tip Grid poate include atat datele
preluate dintr-un tabel cat si obiecte de comanda si control (butoane,
EditBox,CheckBox) prin care se pot executa operatii asupra datelor.
Un singur obiect de tip Grid,poate prezenta coloane de date preluate
din doua sau mai multe tabele,sau poate prezenta date rezultate prin
efectuarea unor operatii asupra datelor din tabele (Exemplu: suma valori-
lor numerice din doua sau mai multe coloane).
Pentru proiectarea si implementarea obiectului,cea mai simpla modalita-
te este data de instrumentul Builder din Form Designer.
EXEMPLU: In fereastra Project Manager deschideti Form Designer(New Form).
Adaugati un obiect de tip Grid si executati un click drept de mouse,apoi
alegeti optiunea Builder.
Se va deschide fereastra Grid Builder si meniul Grid Items.
Pentru a conecta obiectul la un tabel,sau la o baza de date,apasati bu-
tonul cu trei puncte si alegeti tabelul dorit.
De exemplu alegeti Biblioteca.dbf.Observati ca se va afisa automat si
baza de date (Baza1) cat si celalat tabel inclus in aceeasi baza de date
(Arhiva1).Pentru a forma coolanele grilei,alegeti din caseta Available
Fields coloanele dorite (Exemplu: Autor,Titlul,Descriere) si apasati
butonul cu sageata spre dreapta pentru a deplasa datele in caseta Selected
Fields.
Pentru a schimba stilul de prezentare,alegeti meniul Style si una
dintre variantele accesibile (Exemplu: Ledger),apoi alegeti meniul Layout
pentru a vedea aspectul final al datelor.La nevoie,redimensionati campu-
rile tragand cu butonul mouse apasat de titlul fiecarei coloane.Apoi
confirmati cu OK si verificati fereastra cu Run Form.
-23-
La nevoie,redimensionati fereastra Form,astfel incat sa include toate
coloanele selectate.
In continuare,puteti utiliza proprietatile si metodele fiecarui obiect
pentru a modifica aspectul sau forma de prezentare.De exemplu,in fereastra
Properties,alegeti Grid1,apoi proprietatea BackColor si setati valorile
10,250,50.Verificati cu Run Form.
Pentru a modifica doar aspectul titlului primei coloane,alegeti in
fereastra Properties obiectul Header1 (utilizati sageata de derulare din
caseta de editare),apoi alegeti proprietatea BackColor si setati valorile
100,100,250.Daca doriti sa schimbati titlul,alegeti Caption si introduceti
textul dorit.
Daca doriti sa modificati culoarea de fond,doar pentru cea de a doua
coloana,derulati in fereastra Properties pana la obiectul Column2,apoi
alegeti obiectul Text1 situat sub obiectul Column2(fiecare coloana are
cate un obiect de tip Text1) si apoi alegeti proprietatea BackColor si
setati valorile 250,100,50.In acest caz,nu se va putea vizualiza imediat
aspectul selectat ci va fi necesar sa executati obiectul cu Run Form si
sa selectati o inregistrare din cea de a doua coloana.Inregistrarea
activa va fi colorata caramiziu.
Asadar,grila in intregime,titlurile si coloanele pot fi prelucrate
independent,ca si cand ar fi obiecte izolate.In mod similar,puteti seta
oricare dintre proprietatile sau metodele si evenimentele obiectelor.
Pentru a experimenta o grila care contine si butoane de comanda,
puteti crea un tabel de tip Free Tables cu urmatoarele campuri de date:
Produs,Cod,Valoare,Butoane.Salvati tabelul cu numele calcul1.dbf si apoi
introduceti cateva date in primele trei coloane (lasati liber campul de-
numit butoane).Apoi deschideti o noua fereastra Form Designer(cu New Form)
adaugati un obiect de tip Grid,deschideti Grid Designer si includeti
in selectie cele patru campuri.Verificati fereastra cu Run Form.
In continuare,pentru a schimba coloana Butoane cu obiecte de tip
Command Button,executati un click drept de mouse pe obiectul Grid si
selectati optiunea Edit(obiectul va fi inconjurat cu un chenar verde),
apoi selectati un buton din Controls Toolbar si executati un click in
coloana Butoane.In acest moment,coloana Butoane va contine atat obiectul
de tip TextBox cat si obiectul de tip CommandButton,dar obiectul de tip
TextBox il mascheaza pe cel subjacent.Pentru a pune in evidenta butonul,
executati un click in Form,apoi deschideti fereastra Properties,derulati
caseta de editare pana la coloana a patra si observati cele doua obiecte.
Alegeti obiectul Text1,executati un click in fereastra Form si apoi
apasati tasta Del.In acest moment,in Form1,coloana Butoane din Grid1 va
afisa un buton de tip Command Button.Pentru a putea utiliza butonul,
alegeti din fereaastra Properties obiectul Command1 (sub Column4) si
schimbati numele in Caption (Exemplu: FONTURI).Apoi alegeti metoda
Click Event si editati urmatorul text:
ThisForm.Grid1.FontName = 'Impact'
ThisForm.Grid1.ForeColor = RGB(250,20,20)
Apoi alegeti metoda RightClick Event si editati urmatorul text:
ThisForm.Grid1.FontName = 'Arial'
ThisForm.Grid1.ForeColor = RGB(0,0,0)
La nevoie redimensionati inaltimea campurilor cu Grid1.RowHeight=30 si
testati fereastra cu Run Form.Executati click dr/stg in coloana Butoane.
-24-
In forma actuala,butonul din coloana Butoane nu este vizibil decat
dupa ce se executa primul click de selectie in aceasta coloana,deoarece
la initializarea ferestrei se activeaza implicit prima coloana din grila.
Pentru ca butonul sa fie vizibil de la inceputul aplicatiei,selectati in
fereastra Properties obiectul Grid1,executati un dublu click pe metoda
Init Event si editati urmatorul text:
ThisForm.Grid1.Column4.SetFocus
Acum coloana Butoane este cea care va fi activata implicit la debutul
aplicatiei,iar butonul continut va fi afisat de la bun inceput.
Pentru ca sa afisati intr-un obiect grila valori diferite de cele din
tabelul sursa,se pot utiliza expresii matematice prin care se calculeaza
sau recalculeaza valorile,in functie de cele continute in tabele.Pentru
acest scop se utilizeaza proprietatea ControlSource a coloanei respective.
De exemplu,daca in tabelul calcul1.dbf coloana Valoare este de tip
double,se poate executa un calcul matematic direct asupra valorilor din
aceasta coloana.De exemplu,presupunem ca fiecare produs din tabel asigura
un profit de 16% din valoare,in urma comercializarii.Pentru a putea afisa
profitul pentru fiecare valoare,alegeti in fereastra Properties coloana
care contine datele preluate din calcul1.valoare (coloana3) si schimbati
proprietatea ControlSource din calcul1.valoare in calcul1.valoare * 0.16.
Apoi alegeti titlul coloanei respective (Header1) si schimbati proprie-
tatea Caption la valoarea PROFIT.
Executati fereastra cu Run Form.Grila va contine o coloana noua,intitulata
PROFIT in care se va afisa direct rezultatul calculului efectuat.Daca
doriti,puteti utiliza Builder pentru a adauga in grila si coloana Valoare
(dupa schimbarea titlului coloana este din nou accesibila).
Pentru afisarea campurilor calculate astfel,se pot utiliza formule mai
mult sau mai putin complexe.Daca datele din coloana sunt de tip caracter,
este necesar sa fie convertite la o valoare numerica inainte de a fi
calculate.Invers,atunci cand coloana in care se vor arhiva rezultatele
definitive este de tip caracter,dupa efectuarea calculelor matematice se
va face si conversia de la tipul numeric la tipul caracter.Exemple destul
de sugestive se gasesc si in Help/Sample Applications/Solutions/Controls/
Grid/Display calculated values in a column.
Pentru ca datele sa poata fi prezentate cat mai clar,se pot utiliza
simultan mai multe obiecte de tip Grid,in care se aleg doar o parte
dintre coloanele unui tabel,sau se utilizeaza criterii diferite de
ordonare.Atunci cand mai multe tabele sunt incluse in aceeasi baza de date
si sunt indexate,se poate stabili o legatura temporara,sau permanenta,
intre doua sau mai multe tabele.Un exercitiu destul de elocvent a fost
prezentat impreuna cu baza de date baza1 (cu tabelele biblioteca.dbf si
respectiv arhiva1.dbf) (vezi si pagina 9).
Cand urmeaza sa utilizati un numar mai mare de tabele,sau tabele cu
un numar foarte mare de coloane si de inregistrari,este bine sa faceti
o mica schita si sa paginati obiectele inainte de a incepe munca de pro-
gramare propriu zisa.Este bine sa incadrati fiecare obiect in asa fel
incat pagina rezultata sa poata fi afisata pe ecran in intregime si/sau
sa poata fi imprimata pe o coala de hartie de format normal (A4).Alegeti
cu atentie culorile si fonturile,astfel incat datele esentiale sa fie cat
mai usor de observat de la prima vedere.Evitati sa utilizati prea multe
culori,sau nuante prea stridente.
-25- FORM - IMAGE
Urmatorul obiect din paleta Form Controls este Image.Acest obiect per-
mite preluarea si afisarea imaginilor de tip BitMap.Prin proprietatile,
metodele si evenimentele sale,obiectul de tip Image poate fi astfel
configurat incat sa prezinte imaginea de tip BitMap la parametrii optimi,
sau poate fi deplasat,modificat,si actualizat in timpul executiei.Daca
se utilizeaza si un algoritm temporal,obiectele de tip Image se pot uti-
liza si pentru a realiza diverse efecte de animatie.Se pot utiliza file
de tip .bmp create cu diverse editoare de imagini.Programul VisualFox
contine un astfel de editor de imagini,in directorul Imagedit.
Pentru a exemplifica acest obiect,creati doua file de tip .bmp cu
dimensiuni de 100 x 100 si salvati cele doua file cu un nume oarecare.
EXEMPLU: realizati doua imagini cu cate o inimioara cu dimensiuni si
culori diferite si salvati cele doua file astfel:inima1.bmp si inima2.bmp.
Din fereastra Project Manager alegeti Form,apoi New si New Form.
In fereastra Form Designer adaugati un obiect de tip Image,apoi utilizati
proprietatea Picture pentru a selecta prima dintre cele doua imagini cre-
ate anterior (inima1.bmp).Redimensionati obiectul si apoi verificati fe-
reastra cu Run Form.
Apoi adaugati un alt obiect de tip Image si selectati in proprietatea
Picture cea de a doua imagine.Verificati fereastra cu Run Form.
Daca doriti ca imaginile sa fie prezentate alternativ,deplasati cel
de al doilea obiect de tip Image,astfel incat sa se suprapuna exact peste
primul.Apoi alegeti din fereastra properties obiectul Image1 si executati
un dublu click pe metoda Click Event si editati textul:
ThisForm.Image1.Visible = .F.
ThisForm.Image2.Visible = .T.
Apoi alegeti obiectul Image2 si editati metoda Click Event astfel:
ThisForm.Image2.Visible = .F.
ThisForm.Image1.Visible = .T.
Apoi verificati fereastra cu Run Form.In mod normal,la fiecare click de
mouse pe imaginea grafica se va inlocui imaginea existenta cu imaginea
alternativa.
Daca doriti sa puteti deplasa cele doua imagini cu un click drept de
moause,selectati pentru fiecare obiect metoda RightClick Event si editati
cate o procedura de genul:
ThisForm.Image1.Left = ThisForm.Image1.Left + 10
ThisForm.Image1.Top = ThisForm.Image1.Top + 10
si respectiv:
ThisForm.Image2.Left = ThisForm.Image2.Left -5
ThisForm.Image2.Top = ThisForm.Image2.Top -5
Verificati fereastra cu Run Form.Cu un click de mouse stang puteti selecta
imaginea dorita,iar cu cate un click de mouse drept puteti deplasa cele
doua imagini (spre colturile opuse ale ferestrei).
Prin metodele si evenimentele Windows,obiectele de tip Image sunt
obiecte active si pot fi utilizate pentru a realiza orice fel de operatii
in fereastra.De exemplu,un click de mouse pe o astfel de imagine grafica
poate determina efectuarea unui calcul matematic,poate actualiza o inre-
gistrare dintr-un tabel,sau poate determina imprimarea datelor...etc.
Acest gen de obiecte,nu sunt doar decorative,ci pot fi utilizate la fel
ca orice alt obiect din interfata.Metodele WriteExpresion si ReadExpresion
se pot utiliza pentru reconfigurarea proprietatilor in timpul executiei.
-26- FORM - TIMER
Pentru a putea executa una sau mai multe operatii,la intervale regulate
de timp se pot crea o serie de algoritmi care citesc periodic ceasul sis-
temului.Pentru a simplifica acest gen de situatii,exista si un obiect
visual,de tip cronometru,denumit Timer.Acest obiect este invizibil in
timpul executiei,dar contine un grup de proprietati,8 metode si 4 eveni-
mente ce pot fi utilizate activ pentru temporizarea operatiilor utile.
Dintre acestea,proprietatea Interval,determina in milisecunde durata
de timp dintre doua evenimente de tip Timer.De exemplu,daca proprietatea
Interval este setata la valoarea 1000,atunci evenimentele de tip Timer se
vor succeda la intervale de timp de o secunda.
EXEMPLU: Deschideti o fereastra noua in Form Designer si adaugati un
obiect de tip Label.Ajustati dimensiunile,culorile si Fonturile.Apoi
adaugati un obiect de tip Timer,setati proprietatea Interval = 1000 si
editati metoda Timer Event astfel:
ThisForm.Label1.Caption = Time()
Apoi verificati fereastra cu Run Form.In mod normal,Label1 va afisa ora
exacta,actualizata la intervale de o secunda (un ceas digital).Puteti
utiliza acest gen de implementare,pentru a adauga ora exacta in orice
fereastra de tip Form.
Pentru a putea executa operatii complexe,se pot utiliza mai multe cro-
nometre.O aplicatie frecventa o reprezinta jocurile grafice,in care
fiecare cronometru controleaza un grup de actiuni ale unui anumit obiect,
sau realizeaza un efect de animatie.O alta aplicatie practica o repre-
zinta actualizarea unui tabel,sau a unei selectii,folosind ca sursa o
baza de date situata la distanta sau in retea.
Obiectele de tip Timer nu sunt vizibile decat in etapa de design.Pentru
ca depanarea aplicatiilor sa fie cat mai usoara,este bine sa amplasati
obiectul Timer,imediat langa obiectul pe care il controleaza (dar poate fi
amplasat oriunde in Form).
EXEMPLU: Pentru a obtine o inima care pulseaza,puteti utiliza cele doua
file .bmp realizate pentru obiectul Image.Deschideti o noua fereastra in
Form Designer si adaugati un obiect de tip Image.Utilizati proprietatea
Picture pentru a afisa prima inimioara,apoi suprapuneti cel de al doilea
obiect de tip Image si utilizati proprietatea Picture pentru a afisa cea
de a doua inimioara.Pentru a obtine un efect de animatie,adaugati un
obiect de tip Timer,setati proprietatea Interval la valoarea 800,apoi
editati metoda Timer Event astfel:
IF ThisForm.Image1.Visible = .T.
ThisForm.Image1.Visible = .F.
ThisForm.Image2.Visible = .T.
ELSE
ThisForm.Image1.Visible = .T.
ThisForm.Image2.Visible = .F.
ENDIF
apoi verificati fereastra cu Run Form.Pentru a schimba ritmul,puteti
modifica proprietatea Interval,sau puteti adauga un obiect de tip Spinner
care sa actualizeze valoarea proprietatii Interval in timpul executiei.
In mod similar,puteti realiza orice efect de animatie.Incercati sa
obtineti un efect de animatie,in care o masinuta sau un trenulet sa se
deplaseze in fereastra de la o extremitate la alta.Eventual,cu un obiect
Timer secundar,puteti semnaliza,sau puteti emite un nor de vapori...etc.
-27- FORM - PAGE FRAME
Urmatorul obiect din bara Form Controls este Page Frame.Acest obiect
este de tip container si este util pentru a forma aplicatii de tip fisier.
Page Frame este doar cadrul (chenarul) in care se includ doua sau mai
multe obiecte de tip pagina (Page).Desi este de tip container,Page Frame
nu este vizibil decat daca este inclus intr-o fereastra de tip Form(este
asemanator cu tipul Panel din Delphi).Page Frame contine o serie de pro-
prietati si metode prin care defineste caracterele generale ale obiectului
(dimensiunea,pozitia,chenarul,pagina activa etc) si un set de evenimente
ce pot fi utilizate pentru a ordona activitatea din fisier.
In plus,fiecare pagina este un obiect independent,cu proprietatile,
metodele si evenimentele sale.In sinteza,PageFrame este o colectie de
obiecte de tip pagina,ordonate sub forma de fisier.Trebuie remarcat si
faptul ca metoda Refresh apelata pentru fereastra in care este inclus
obiectul Page Frame nu actualizeaza intregul obiect ci doar pagina care
este activa in momentul apelului.
Acest obiect se utilizeaza pentru a realiza obiecte de tip fisier,in
care fiecare pagina prezinta cate un set diferit de informatii.
EXEMPLU: In Project Manager deschideti o noua fereastra Form Designer.
Adaugati si redimensionati un obiect de tip Page Frame.Deschideti fe-
reastra Properties si setati proprietatea PageCount = 5.Acum fisierul
d-voastra va avea 5 pagini diferite (5 obiecte diferite).Puteti utiliza
acest fisier pentru a prezenta datele din tabelul biblioteca.dbf.Pentru
acest scop,executati un click drept in Form,alegeti Data Enviroment si
selectati tabelul Biblioteca.dbf.Apoi adaugati in Page Frame 5 obiecte
de tip Text Box(suprapuse sau subjacente).Adaugati in Form,in afara
obiectului Page Frame si un obiect de tip Label (afiseaza pagina activa).
Selectati pe rand,fiecare obiect de tip Text Box si utilizati Builder,
apoi Value pentru a prelua in fiecare obiect cate un camp de date din
tabelul biblioteca.dbf (Text1=Biblioteca.Titlul,Text2=Biblioteca.Autor,
Text3=Biblioteca.Editura,Text4=Biblioteca.Anul,Text5=Biblioteca.Descriere)
Apoi,in fereastra Properties alegeti obiectul Page1.In Caption intro-
duceti titlul paginii,de exemplu Titlul.Apoi setati proprietatea BackColor
(de exemplu: 250,50,100).Editati metoda Click Event astfel:
ThisForm.Label1.Caption = This.Caption
ThisForm.Text1.Visible = .T.
ThisForm.Text2.Visible = .F.
ThisForm.Text3.Visible = .F.
ThisForm.Text4.Visible = .F.
ThisForm.Text5.Visible = .F.
Apoi alegeti obiectul Page2.Setati Caption = Autor si BackColor (de
exemplu: 200,100,100) si editati Click Event astfel:
ThisForm.Label1.Caption = This.Caption
ThisForm.Text1.Visible = .F.
ThisForm.Text2.Visible = .T.
ThisForm.Text3.Visible = .F.
ThisForm.Text4.Visible = .F.
ThisForm.Text5.Visible = .F.
Procedati asemanator,si pentru obiectele Page3,Page4 si Page5,astfel
incat fiecare pagina sa afiseze un alt obiect Text Box.Apoi setati in
metoda Init Event din Pageframe1 configuratia initiala(primul obiect de
tip Text Box vizibil,restul ascunse).Verificati obiectul cu Run Form.
-28- FORM - OLE CONTAINER
Un alt obiect extrem de util este OLE Container.Acest obiect de tip
container permite includerea in fereastra a unor obiecte de tip OLE,create
in alte programe sau aplicatii.Din categoria obiectelor OLE,fac parte atat
obiectele de tip ActiveX,cat si obiectele OLE inserabile create in apli-
catii de tip Microsoft Word,sau Microsoft Excel.Tehnologia OLE (Object
Link Embadded) a fost creata special pentru a permite schimbul de date
dintre aplicatiile create pe platforme software diferite.In plus,obiectul
OLE Container adauga si un set de proprietati,metode si evenimente pro-
gramabile pentru controlul operatiilor din fereastra.Puteti utiliza un
astfel de control,de exemplu,pentru a include in pagina o fila editata cu
NotePad din Windows.
EXEMPLU: Pentru ca obiectul OLE Container sa poata fi utilizat este ne-
cesara si o fila auxiliara denumita vfpole50.dll.In mod normal,gasiti
aceasta fila in directorul OS/SYSTEM (unitatea C).Copiati fila in directo-
rul Vfp (pentru a fi mai usor de identificat).
Apoi,in Project Manager,alegeti Forms,New si New File.
Adaugati in Form Designer un obiect de tip OLE Container.Daca fila dll
(vfpole.dll) este corect instalata,se va deschide automat fereastra Insert
Object in care puteti selecta tipul de obiect OLE pe care doriti sa-l
includeti in container.Pentru a crea un obiect grafic de tip BitMap
selectati optiunea Bitmap Image si confirmati cu OK,apoi desenati imaginea
dorita (la fel ca in Paint din Windows).
Pentru a include in fereastra o pagina editata anterior cu WordPad,
alegeti in caseta Object Type optiunea Word Pad Document,apoi selectati
optiunea Create from File.Utilizati butonul Browse pentru a seta calea
de acces la fila dorita,apoi confirmati cu OK.Pentru a putea verifica
documentul,executati un click drept de mouse in OLE Container si alegeti
optiunea Package Object,apoi Activate Contents.
In final verificati fereastra cu Run Form.Documentul va fi afisat la fel
ca in ecranul Desktop din Windows si va putea fi deschis cu un dublu click
de mouse.In plus,puteti utiliza toate metodele si evenimentele obiectului
Olecontrol1 pentru a adauga procedurile dorite.
Un obiect asemenator este OLE Bound.Acest obiect este tot un container,
dar se utilizeaza pentru a include obiectele de tip OLE in campurile de
tip General ale unui tabel de tip .dbf.Cu un astfel de control puteti
include intr-o baza de date,documentele de tip NotePad,sub forma de
inregistrari ale unui tabel.Obiectele inserabile de tip OLE nu au proprie-
tati,metode si evenimente,astfel incat obiectul OLE Bound suplineste si
aceasta deficienta prin proprietatile,metodele si evenimentele sale.
Bazele de date ce contin in tabele si obiecte de tip OLE sunt mai greu
de organizat,ocupa mai mult spatiu de memorie si blocheaza o buna parte
din memoria de operare,doar pentru evidenta legaturilor (link-uri) dintre
container si obiectele inserabile.Daca sunteti incepator,nu este recoman-
dabil sa proiectati acest gen de aplicatii (daca memoria de RAM nu este
corect exploatata,o parte dintre link-uri vor ramane nerezolvate si
obiectul final va fi incomplet sau nefunctional).Pentru a crea astfel de
baze de date,este recomandabil sa va sfatuiti si cu administratorul de
sistem.Acest obiect este foarte util,pentru obiectele de tip OLE,altele
decat cele de tip ActiveX.Visual FoxPro contine un set foarte bogat de
obiecte de tip ActiveX (vezi capitolul urmator),care au proprietati,
metode si evenimente proprii si nu necesita un OLE Container intermediar.
-29- FORM - LINE si SHAPE
Pentru a include obiecte de tip ActiveX in OLE Container,alegeti din
fereastra Insert Object optiunea Insert Control,apoi alegti tipul de
control dorit (Exemplu: Chart FX).
Urmatoarele obiecte din bara de controale sunt Line si Shape.Ambele,au
mai mult un rol decorativ,dar,prin metodele si evenimentele lor pot fi
utilizate pentru a organiza actiunile efectuate in fereastra respectiva.
Obiectul Line se utilizeaza pentru a adauga in fereastra o linie,oblica
orizontala sau verticala.Pentru a schimba culoarea,se poate utiliza pro-
prietatea BorderColor.Pentru a determina orientarea si dimensiunile,se
poate trage cu mouse de obiect,sau se pot utiliza proprietatile Height si
Width impreuna cu Top.Metodele si evenimentele se pot utiliza pentru a
modifica aspectul liniei in timpul executiei (efecte de animatie),sau
pentru a determina orice alt gen de operatii posibile.
EXEMPLU: Deschideti o noua fereastra Form Designer.Adaugati un obiect
de tip Line.Pentru ca linia sa fie rosie,setati proprietatea BorderColor
(de exemplu: 250,0,0).Pentru ca linia sa fie orizontala,setati proprie-
tatea Height la valoarea 0,apoi determinati lungimea liniei cu ajutorul
proprietatii Width.Daca doriti sa adaugati si un efect de animatie,puteti
adauga un obiect de tip Timer la care setati proprietatea Interval =100 si
editati metoda Timer Event astfel:
IF ThisForm.Line1.Height < ThisForm.Line1.Width
ThisForm.Line1.Height = ThisForm.Line1.Height +1
ThisForm.Line1.Width = ThisForm.Line1.Width - 1
ENDIF
Obiectul Shape deseneaza un chenar dreptunghiular,un cerc sau o elipsa.
Pentru a determina forma obiectului desenat se utilizeaza proprietatea
Curvature,care poate lua valori intre 0 si 99.Valoarea 0 specifica absenta
unei curbaturi si determina un obiect cu unghiuri drepte in timp ce va-
loarea 99 specifica o curbatura maxima si determina obiecte circulare sau
eliptice.Pentru a determina exact dimensiunile si coordonatele obiectului
se pot utiliza proprietatile Height si Width si respectiv Top si Left.
Pentru a modifica aspectul se pot utiliza proprietatile BackColor,Border-
Color,DrawMode,FillColor si SpecialEffect.In plus,se pot utiliza metodele
si evenimentele obiectului.
EXEMPLU: In fereastra Form Designer adaugati un obiect de tip Shape.
Setati BackColor = RGB(50,200,50) si BorderColor = RGB(0,0,250).Apoi
setati dimenisunile si pozitia obiectului.Pentru a putea observa efectul
proprietatii Curvature,cu ajutorul unui efect de animatie,adaugati un
obiect de tip Timer,setati proprietatea Interval = 50 apoi editati metoda
Timer Event astfel:
IF ThisForm.Shape1.Curvature < 99
ThisForm.Shape1.Curvature = ThisForm.Shape1.Curvature + 1
ENDIF
Verificati fereastra cu Run Form.
Aceste obiecte se utilizeaza fie pentru a evidentia un alt obiect din
aplicatie (Exemplu: o linie de subliniere pentru un obiect de tip Label),
fie pentru a crea o arie colorata diferit in care se va executa un click
de mouse,sau un dublu click,pentru a determina o anumita operatie.
Obiectele Line si Shape se pot utiliza si pur decorativ,pentru a crea
o sigla,un antet,un simbol de identificare a ferestrei,sau pentru a adauga
efecte vizuale si/sau desene animate,etc.
-30- FORM - CONTAINER si LOCKS
Un alt obiect simplu este obiectul denumit Container.Este de tip con-
tainer si se utilizeaza pentru a grupa doua sau mai multe obiecte.Acest
obiect creaza un alt spatiu de vizibilitate pentru obiectele continute.
Pentru a fi usor de individualizat intr-o fereastra,se poate utiliza
proprietatea BackColor sau se poate utiliza proprietatea Picture,pentru
a realiza o imagine de fundal cat mai atragatoare.Un obiect de tip con-
tainer poate grupa butoane,casete de dialog,etichete si texte statice,
imagini si desene etc.O alta aplicatie o reprezinta jocurile video,unde
grupeaza si deplaseaza grupuri de obiecte de tip BitMap si Image.
Prin metodele si evenimentele sale,poate adauga noi facilitati obiecte-
lor continute.Astfel,se pot utiliza metodele containerului pentru a
determina actiuni care intereseaza simultan toate obiectele continute si
respectiv metodele fiecarui obiect in parte,pentru a specifica actiunile
specifice ale obiectului respectiv.
Pentru a utiliza acest obiect,nu trebuie decat sa adaugati in fereastra
Form Designer un astfel de obiect si apoi sa setati pozitia,dimensiunile,
aspectul si actiunile specifice.Proprietatea Visible,nu afecteaza si
obiectele continute (nu se poate utiliza pentru a "ascunde" controalele).
Urmatorul obiect din bara de controale este Separator.Rolul sau este
destul de limitat si are un set limitat de proprietati si metode.Nu poate
fi activat de catre evenimentele Windows (nu raspunde la mesaje).Se poate
utiliza doar pentru a introduce un spatiu gol intre controalele amplasate
intr-o bara de controale (implicit sunt grupate fara spatii).
Ultimele doua controale din bara de controale Standard sunt Builder
Lock si Button Lock si se utilizeaza pentru a mentine o anumita actiune.
Daca apasati butonul Builder Lock,atunci,pentru fiecare obiect nou creat
se va deschide automat utilitarul Builder,in momentul in care adaugati
controlul in fereastra Form Designer.Este util atunci cand urmeaza sa
adaugati si sa definiti intr-o fereastra mai multe obiecte care necesita
utilitarul Builder (Exemplu: mai multe grile si cateva casete de dialog).
Button Lock mentine activata orice alta selectie din bara de controale.
Daca apasati acest buton,dupa ce selectati un anumit control,puteti adauga
oricate obiecte din tipul respectiv cu un simplu click de mouse (fara sa
mai fie nevoie sa selectati obiectul in bara de controale).Exemplu: pentru
a adauga un numar oarecare de obiecte de tip Label,apasati butonul Label,
apoi apasati butonul Button Lock si apoi executati in fereastra cate un
click de mouse pentru fiecare obiect Label necesar.Practic,butonul Button
Lock blocheaza butonul activ,atat timp cat este necesar.
Acesta este setul standard de controale vizuale.Pentru a adauga in
bara standard si alte controale,puteti utiliza butonul View Classes dupa
care alegeti optiunea Add.Pentru a inlocui obiectele standard cu un set
oarecare de obiecte de tip ActiveX,alegeti din meniul Tools optiunea
Options,apoi Controls,selectati butonul ActiveX controls si alegeti in
caseta Selected controalele dorite (Exemple: Bitmap Image,Chart FX,Image
Document,NetManage TCP,Video Clip etc.) si confirmati cu OK.Apoi apasati
butonul View Classes si alegeti optiunea ActiveX Controls.Bara de con-
troale standard va fi inlocuita cu o bara in care vor fi incluse controa-
lele de tip ActiveX selectate anterior.Pentru a reveni la bara standard,
selectati din nou butonul View Classes si alegeti optiunea Standard.
In aceeasi fereastra se pot grupa si combina atat controale standard,
cat si controale de tip ActiveX,dar,atentie la stabilirea link-urilor.
-31- FORM - ActiveX
Controalele de tip ActiveX pot fi selectate din bara de controale si
adaugate in fereastra cu un simplu click de mouse,deoarece obiectul de
tip OLEContainer va fi creat si initializat automat.Obiectul de tip
ActiveX va beneficia atat de metodele si proprietatile proprii(atunci
cand exista) cat si de cele ale obiectului container de suport.
Exista un numar foarte mare de astfel de controale.O parte dintre ele
sunt incluse in VisualFox sub forma de file cu extensia .OCX,iar restul
pot fi procurate si adaugate din diverse surse(Internet,discuri sursa etc)
sau pot fi preluate din alte aplicatii instalate pe acelasi calculator
(Delphi,Visual Basic,Visual C,Excel etc.).
Paleta de obiecte de tip ActiveX este extrem de bogata si satisface
toate necesitatile de progrmare,pentru o serie intreaga de aplicatii si
domenii de activitate (Exemple: aplicatii audio-video,comunicatie in
retea,interfete grafice,animatie si jocuri video,baze de date,analiza si
sistematizarea datelor etc.).O parte dintre controalele ActiveX pot fi
utilizate direct in mediul VisualFox,fara nici o alta operatie prelimi-
nara,in timp ce altele necesita prezenta unor file speciale cu un anumit
format(Exemple: .avi,.jpg,.wav etc.),sau prezenta unor unitati si biblio-
teci de functii de tip .DLL si/sau coexistenta unor alte programe auxi-
liare.Multe dintre aceste controale au fost concepute pentru alte medii
de programare.Ca rezultat,aceste controale pot fi apelate si utilizate in
VisualFox,dar solutiile de implementare pot fi uneori destul de complexe.
In acest manual se vor prezenta succint,doar cateva controale simple,
ce pot fi apelate si exploatate direct.Pentru restul obiectelor de tip
ActiveX puteti consulta documentatia tehnica sau literatura de speciali-
tate.O parte dintre obiecte sunt insotite de un manual de utilizare,dar
majoritatea nu au nici o documentatie tehnica.Pentru oricare dintre aceste
obiecte puteti utiliza direct metodele si evenimentele containerului.
Atunci cand doriti sa utilizati un singur astfel de obiect,este mai simplu
sa adaugati un obiect de tip OLEContainer si sa utilizati optiunea Insert
Control pentru a alege obiectul dorit.Cand doriti sa utilizati un numar
mare de controale de tip ActiveX(de exemplu seria Microsoft Forms 2.0 ...)
este mai practic sa formati o bara de controale si apoi sa utilizati bu-
tonul View Classes pentru a activa optiunea ActiveX Controls.
EXEMPLU: Deschideti o fereastra noua in Form Designer.
Adaugati un obiect OLEContainer si alegeti din caseta Object Type optiunea
Bitmap Image.Confirmati cu OK.In fereastra Form1 se va afisa un obiect
de tip Bitmap Image in care puteti realiza un desen cu ajutorul obiectelor
grafice din paleta situata la dreapta ferestrei (la fel ca in Windows).
Realizati un desen oarecare (culorile se pot selecta in paleta situata in
Dostları ilə paylaş: |
|
|