|
|
səhifə | 8/17 | tarix | 17.03.2018 | ölçüsü | 1,41 Mb. | | #45490 |
| Optiunea 3 Command Clear
Apoi inchideti fereaastra de design si salvati fila cu un nume oarecare,
de exemplu Meniu.mnx.Pentru a verifica meniul,apasati butonul Run.Daca
doriti sa apelati meniul dintr-o fila oarecare,deschideti fila in Form
Designer,deschideti fereastra Properties,alegeti Methods si apoi editati
evenimentul Right Click Event astfel:
DO Meniu.mpr
Apoi verificati fereastra cu Run Form si executati un click drept de
mouse.Meniul se va afisa sub forma unui Popup.
Daca doriti sa verificati definitia meniului,sau sa faceti unele
modificari,puteti deschide direct fila Meniu.mpr (cu Open).Observati ca
fila .mpr contine liniile de cod ce au fost editate automat de catre
instrumentul Shortcut Designer.Puteti efectua eventualele modificari si
apoi salvati fila actualizata.
Pentru a modifica fila,puteti apela si Shortcut Designer selectand
meniul in fereastra Project Manager si apoi apasand butonul Modify.
In Shortcut Designer,caseta Result permite patru variante: Bar#,
Command,Submenu sau Procedure.Daca alegeti optiunea Command nu trebuie
decat sa introduceti comanda dorita in caseta care se deschide automat
(ca in exemplul de mai sus).Cu Bar# si Submenu puteti forma meniuri mai
complexe ce contin si un meniu Popup,iar cu Procedure puteti inlocui
comanda prin o procedura completa.
EXEMPLU: in meniul realizat anterior,inlocuiti pentru Optiunea 3 textul
din caseta Result prin Procedure.Se va deschide o fereastra de dialog in
care confirmati ca doriti sa inlocuiti comanda si apoi se va afisa butonul
Create.Apasati butonul Create si apoi editati procedura in fereastra des-
chisa automat (Shortcut Designer - meniu - Optiunea 3 Procedure ):
Clear
? SYS(1)
? SYS(2)
? SYS(3)
Apoi inchideti Shortcut Designer,confirmati schimbarile,verificati cu Run.
Daca doriti sa utilizati elemente din meniul sistemului,din fereastra
Shortcut Designer apasati butonul Insert Bar si apoi alegeti optiunile
dorite.Daca doriti sa inlocuiti complet meniul sistem,alegeti Menus din
Project Manager,apoi New si apoi Menu.Realizati meniul la fel ca si cel
Shortcut si executati cu Run.Observati meniul ferestrei principale.
Meniul sistem sa va relua dupa ce inchideti si redeschideti programul.
-49- Project Manager - Code
Pe langa meniuri,din grupul Other puteti genera si file de tip text,
sau puteti adauga in proiect file de tip text editate anterior.Pentru
acest scop,alegeti optiunea Text Files si apoi apasati butonul New (sau
respectiv Add).
Ultimul grup de instrumente utile din fereastra Project Manager este
denumit Code si include urmatoarele optiuni: Programs,API Libraries si
Applications.Optiunea Programs se utilizeaza pentru a adauga file de tip
cod.Daca utilizati mai multe astfel de file,care se apeleaza reciproc,
este bine sa denumiti cat mai sugestiv fila principala (cea care coordo-
neaza toate actiunile din proiect).
Exemplu: alegeti Code,apoi Programs si apsati butonul New.Apoi editati
un set oarecare de comenzi: ? Time()
? Date()
Inchideti fereastra si salvati programul cu un nume cat mai sugestiv,
de exemplu: principal.prg.Pentru a verifica programul,selectati fila si
apoi apasati butonul Run.Aceasta va fi fila principala din proiect.
Pentru a adauga un nou program,alegeti Programs,apasati butonul New si
editati cel de al doilea program:
? 'Incepe programul 1 '
MessageBox('Sfarsitul programului 1'
Inchideti fereastra si salvati programul cu numele program1.prg.Puteti
verifica programul cu Run.
Repetati toate operatiile si adaugati inca un program de genul:
? 'Incepe programul 2 '
MessageBox('Sfarsitul programului 2')
Clear
Salvati programul cu numele program2.prg si apoi verificati cu Run.
Acum proiectul d-voastra contine trei programe ce pot fi apelate separat.
Fiecare program are o fereastra de tip mesaj,care introduce de fapt doar
un nivel de inrerupere prin care marcheaza sfarsitul programului.
Daca doriti sa interconectati cele trei programe,de exemplu sa le acce-
sati pe rand,puteti utiliza programul principal pentru a apela succesiv
celelalte programe.Alegeti fila "principal",apasati butonul Modify si apoi
adaugati la codul existent comenzile:
DO program1.prg
DO program2.prg
Salvati modificarile si executati cu Run.Acum cele trei programe vor fi
executate succesiv.Atentie-comanda trebuie sa include calea completa de
acces la program.Daca de exemplu proiectul d-voastra este inclus intr-un
director separat,denumit EXEMPLE,comanda corecta va fi :
DO Exemple/program1.prg
DO Exemple/program2.prg
In mod similar puteti lansa in executie un meniu,sau una dintre ferestrele
de tip Form realizata anterior.Pentru acest scop se va utiliza fila cu
extensia .mpr in cazul meniurilor si respectiv .scx in cazul ferestrelor.
De exemplu,daca proiectul contine o fereastra ce afiseaza un ceas digital
salvata cu numele de Ceas1.scx,fereastra va putea fi lansata in executie
din fila de cod cu o comanda de genul:
DO FORM Ceas1.scx (sau DO FORM Exemple/Ceas1.scx )
Pentru a vedea ce astfel de ferestre sunt accesibile in proiect,alegeti
din meniul principal Open si apoi cautati filele cu extensia .scx.
-50- Project Manager -legaturi
Incercati sa realizati un mic program in care sa deschideti pe rand
cateva dintre ferestrele realizate la exercitiile din grupul FORMS.
Celelalte doua optiuni,API Libraries si Applications se pot utiliza
pentru a adauga in proiect file din tipul respectiv(cu Add).
Ultimul grup din Project Manager,denumit Other Files se poate utiliza
pentru a adauga in proiect orice alt tip de fila auxiliara.In prim plan
sunt cele de tip .BMP,dar se poate include in proiect orice alt tip de
file.Se utilizeaza acest grup,mai ales pentru a simplifica la maximum
calea de acces la fila respectiva.
EXEMPLU: Daca includeti in proiect o fila oarecare de tip .BMP,aceasta
va putea fi utilizata in oricare dintre programele din proiect,direct,
fara sa fie necesar sa includeti calea completa de acces la fila.
Acestea sunt instrumentele de programare oferite de utilitarul Project
Manager.Dupa cum se poate observa,instrumentele oferite sunt suficiente
pentru a putea realiza programe si aplicatii complete.Nu trebuie decat sa
includeti in proiect toate filele necesare,sa realizati corect legaturile
dintre file si componente si apoi sa construiti proiectul pentru a genera
fila executabila.Intreaga operatiune seamana cu un joc de "puzzle",in
care trebuie sa amplasati fiecare piesa in pozitia potrivita.Programarea
este usoara,ca un joc de copil.
Modul in care se realizeaza legaturile dintre file,componente sau mo-
dule depinde de experienta si de imaginatia fiecarui programator.Esential
exista trei tipuri de solutii:
1.-filele si modulele pot fi accesate cu ajutorul unor controale de
tip buton de comanda,sau din interiorul metodelor si evenimentelor orica-
rui component al interfetei grafice.
2.-filele si componentele sau modulele unui program pot fi apelate cu
ajutorul meniurilor de tip bara de meniu sau de tip popup.
3.-filele si modulele pot fi interconectate intre ele cu ajutorul unei
file de cod,in care sunt apelate succesiv,in momentul executiei.
Bineinteles ca se pot imagina si diverse solutii mixte,in care se com-
bina cele trei tipuri esentiale.
Probabil ca cea mai utilizata solutie tehnica este cea care utilizeaza
bare de controale de tip buton,sau grupuri de butoane radio si checkbox.
In general solutiile de tip interfata grafica sunt mult mai apreciate de
catre utilizatori ("totul la un click de mouse").
Nu exista nici o regula fixa.Este recomandabil totusi sa realizati
sistemul de comanda si control cat mai simplu de utilizat.Nu supraestimati
experienta sau inteligenta utilizatorului.Pentru fiecare actiune sau co-
manda utilizati un titlu cat mai sugestiv,sau adaugati si o fereastra de
dialog in care explicati modul in care se utilizeaza controlul respectiv.
Visual Fox este un program visual,special conceput pentru a realiza o
interfata grafica cat mai accesibila si primitoare.Nu ezitati sa utilizati
toate facilitatile grafice oferite : culori,fonturi,icon-uri,desene si
reprezentari grafice,efecte speciale de tip audio-video etc.
Daca nu aveti experienta anterioara,nu va lansati la programe extrem de
complexe.Realizati module pentru fiecare operatie de care aveti nevoie,
apoi alegeti o solutie oarecare prin care sa legati modulele intre ele.
Pastrati fiecare modul.La un progam viitor nu va mai trebui decat sa ale-
geti cateva dintre modulele preferate si sa imaginati tipul de conexiune.
Cu cat sunteti mai organizati,cu atat munca de programare este mai usoara.
-51- CLASE si SUBCLASE
Toate obiectele utilizate in exemplele de pana acum au fost obiecte
vizuale,derivate din clase standardizate incluse in nucleul de operare
al programului.Acest nucleu de baza,este format din urmatoarele clase:
CheckBox,Column,ComboBox,CommandButton,CommandGroup,Container,Control,
Cursor,Custom,DataEnviroment,EditBox,Form,FormSet,Grid,Header,Image,Label,
Line,ListBox,OLEControl,OLEBoundControl,OptionButton,OptionGroup,Page,
PageFrame,Relation,Separator,Shape,Spinner,TextBox,Timer,ToolBar.Acest
set de clase de baza nu poate fi modificat sau sters si trebuie sa poata
fi accesibil in program in orice moment.O parte dintre aceste clase sunt
clase vizuale si sunt reprezentate in bara de componente utilizate pentru
design,in timp ce altele nu sunt clase vizuale si nici nu apar in bara de
componente.Clasele de baza se utilizeaza pentru a realiza aplicatii stan-
dard.Este recomandabil sa utilizati aceste clase,ori de cate ori doriti
sa realizati aplicatii pe care urmeaza sa la partajati si cu alti utili-
zatori mai putin experimentati.Programele realizate exclusiv cu astfel de
clase,sunt foarte usor de depanat si modificat,sau transformat,chiar si
de catre programatori din tari diferite sau cu culturi diferite.Toate
clasele din nucleul de baza sunt insotite si de explicatii destul de clare
si de amanuntite (in programul Help),astfel incat nu ridica probleme deo-
sebite de implementare sau depanare.
Pe langa aceste clase,se pot programa si utiliza si clase auxiliare,
definite si exploatate de catre programator.Exista mai multe moduri de a
crea si exploata o clasa noua.Cea mai simpla si cea mai utilizata metoda
este de a crea o subclasa,derivata din una dintre clasele de baza.Prin
acest tip de definitie,subclasa realizata mosteneste toate proprietatile,
metodele si evenimentele clasei din care a fost formata,la care se adauga
si proprietatile sau metodele nou adaugate.In functie de clasa de baza
utilizata ca sablon,subclasa obtinuta va fi tot o clasa vizuala (Exemple:
CommandButton,EditBox,Grid etc.) sau va fi o clasa care nu este vizibila
in timpul executie (Exemple: Timer,Page,Column) dar contine o serie de
definitii sau proceduri necesare in timpul executiei.Clasele vizuale rea-
lizate astfel vor putea fi adaugate in bara de componente,la fel ca si
componentele de tip ActiveX si for putea fi utilizate in procesul de con-
structie si design a aplicatiilor,exact la fel ca si clasele de baza.O
metoda mai complexa si mai laborioasa,este de a crea si implementa toate
clasele noi cu ajutorul unor linii de cod.In acest caz,clasa se va crea
cu o comanda de tipul DEFINE CLASS.....ENDDEFINE iar obiectele derivate
din clasele nou definite se vor obtine prin comenzi de tipul CREATE OBJECT
dupa incarcarea filei sursa cu o comanda de tipul SET CLASSLIB TO.
Fiecare dintre cele doua metode are avantajele si dezavantajele sale.
Prima metoda este extrem de simpla,utilizeaza instrumentele grafice de
programare,produce obiecte vizuale ce pot fi incluse in bara de componente
si formeaza clase complexe in care majoritatea proprietatilor si a meto-
delor sunt gata definite.Dejavantajul major il reprezinta consumul de
memorie.Fiecare obiect derivat dintr-o astfel de clasa,ocupa in memorie
spatiul necesar unui obiect complet,cu toate proprietatile,functiile si
metodele obiectului original.In situatiile in care doriti sa utilizati un
obiect doar pentru a executa o operatie simpla,sau pentru a apela doar o
singura metoda,este mult mai economic sa definiti o clasa nonvizuala.Cea
de a doua metoda,este mult mai laborioasa,dar permite realizarea de clase
extrem de simple,cu o singura proprietate sau o singura metoda.
-52-
Decizia se va lua in functie de experienta programatorului,dar si in
functie de necesitatile de programare.Daca este necesar un numar mare de
astfel de clase noi,se vor prefera solutiile care consuma cea mai putina
memorie.Daca este necesara o singura clasa,se va alege ca sablon clasa
care ofera solutia cea mai generoasa,chiar daca o parte dintre proprietati
nu vor fi exploatate niciodata.
In general,nu are rost sa creati subclase,decat atunci cand clasele
de baza nu pot acoperii toate necesitatile de programare.Este recomanda-
bil sa realizati astfel de clase,atunci cand realizati aplicatii ce urmea-
za sa fie exploatate intensiv.Clasele nou create vor contine o serie de
proprietati si metode noi.Este bine sa insotiti programele astfel reali-
zate si cu o nota explicativa,in care sa descrieti cat mai clar,fiecare
clasa nou creata,scopul,metodele si modul de exploatare si depanare.De
cele mai multe ori,tot d-voastra o sa trebuiasca sa le depanati la nevoie.
Nu va bazati pe memorie,sau pe intuitia de moment.
Orice clasa nou creata va fi arhivata intr-o fila separata,cu extensia
.VCX.Filele de acest gen,poarta numele de biblioteca a clasei respective
(class library) si sunt necesare pentru a putea apela sau modifica clasa
respectiva.
EXEMPLU:
Cea mai simpla metoda de a crea o clasa noua este prin utilizarea in-
strumentului specializat denumit Class Designer.Pentru a deschide fereas-
tra Class Designer,introduceti in fereastra de comenzi comanda CREATE
CLASS,sau alegeti cu mouse din meniul File optiunea New,apoi Class si
apoi apasati butonul New File.
Se va deschide fereastra New Class.In caseta Class Name se va intro-
duce numele clasei realizate,iar in caseta Based On,se va alege tipul
clasei de baza utilizat ca sablon.De exemplu,daca doriti sa realizati o
clasa noua de tip buton de comanda,puteti introduce in prima caseta numele
clasei Buton1 si puteti selecta in caseta Based On tipul CommnandButton.
Completati apoi numele filei in care doriti sa salvati clasa : cmdButon1
Apoi confirmati apasand butonul OK.Este bine sa utilizati atat pentru
numele clasei,cat si pentru numele filei denumiri cat mai sugestive,astfel
incat sa fie cat mai usor de identificat la prima vedere.Daca doriti,este
bine sa utilizati si conventia de formare a denumirilor oferita in manua-
lul HELP (vezi object naming conventions).Aceste prefixe nu sunt necesare,
dar ordoneaza munca de programare.Pentru o clasa de tip buton de comanda
se recomanda sa formati denumirea si cu prefixul "cmd".
Clasa se va arhiva automat in fila cmdButon1.VCX si se va deschide
fereastra Class Designer - cmdbuton1.vcx(buton1),in care puteti observa
forma finala a obiectului.Daca nu efectuati nici o modificare,obiectul
astfel realizat va fi identic cu un buton de comanda standard,dar va avea
numele personalizat creat de d-voastra si va fi inclus intr-o fila de tip
.VCX ce poate fi distribuita impreuna cu aplicatia pe care o realizati.
Observati ca in meniul ferestrei principale a aparut o optiune noua,
denumita Class.Daca selectati aceasta optiune,se va deschide un meniu de
tip popup,cu urmatoarele optiuni: New Property,New Method,Edit Property/
Method,Include File si Class Info.
Pentru a adauga o metoda noua obiectului creat,alegeti optiunea New
Method.Alegeti un nume pentru noua metoda: de exemplu NumeButon si apoi
apasati butonul Add (eventual adaugati si o descriere sumara).
-53-
Apoi inchideti fereastra New Method.Inchideti fereastra Class Designer
si verificati prezenta filei cmdButon1.VCX (cu Open si Files of Type
Visual Class Library(*.vcx) ).Din meniul Open,selectati si deschideti
fila cmd.Button1.VCX.Se va deschide fereastra Open,in care va apare atat
numele filei cat si numele clasei.Confirmati cu Open.
Pentru a adauga o procedura oarecare la metoda nou definita in subclasa
proaspat realizata,executati un click drept de mouse pe butonl Command
din fereastra Class Designer si alegeti optiunea Code...
Se va deschide automat fereastra buton1.numebuton in care puteti edita
direct procedura directa (la nevoie puteti utiliza butonul de scroll din
caseta Procedure pentru a ajunga la metoda dorita).Editati ceva de genul:
This.Caption = 'XXXXXXX'
In acest moment,butonul realizat de d-voasta va avea si o metoda proprie
prin care se poate schimba automat numele butonului la 'XXXXXXX'.
Inchideti fereastra buton1.numebuton si apoi fereastra Class Designer si
obiectul d-voastra este gata sa fie utilizat.
Deschideti o fereastra Project Manager,alegeti Forms si apoi New si
New Form.Pentru a putea utiliza noua clasa in Form Designer,alegeti din
bara de componente butonul View Classes si selectati optiunea Add.Din
fereastra Open,alegeti fila cmd.Buton1.VCX si confirmati cu Open.In
bara de componente se va afisa butonul "Cmdbuton1".Executati un click pe
acest buton si apoi un click in fereastra.
Daca deschideti fereastra Properties,butonul creat va fi denumit
Buton11 (Buton1+1).
Pentru a verifica metoda implementata de d-voastra,selectati butonul,
apoi alegeti in fereastra properties Methods si Click Event si editati
urmatoarea procedura:
ThisForm.Buton11.NumeButon
Inchideti fereastra Buton11.Click si apoi verificati fereastra nou
creata cu Run Form.Salvati fila cu un nume oarecare si apoi apasati
butonul in timpul executiei.Daca totul este corect,numele butonului se
va schimba din Command1 in 'XXXXXXX'.
In mod similar,puteti adauga oricate metode personalizate la butonul
nou creat.
Deschideti din nou fila cmdButon1.VCX (cu Open) si alegeti din meniul
Class optiunea Class Info.Pentru ca butonul d-voastra sa fie afisat in
bara de componente cu o imagine oarecare personalizata,alegeti caseta
Toolbar icon,apasati butonul cu trei puncte si selectati una dintre
filele de tip .BMP din fereastra Open (de exemplu Fox). In mod similar
puteti adauga o imagine si pentru Container icon.
Daca doriti sa verificati prezenta metodei adaugate de d-voastra,
alegeti Members si apoi derulati lista pana la capat.Metoda noua nu va
fi inserata alfabetic ci va fi adaugata la capatul listei.
Pentru ca butonul sa apara in bara de instrumente cu noua infatisare,
alegeti din nou butonul View Classes si apoi deselectati si reselectati
butonul cmdbuton1 (ca sa fie reincarcata fila actualizata).
Aceasta este metoda cea mai simpla de a crea o subclasa.Toate codurile
necesare pentru generarea subclasei vor fi scrise automat de catre instru-
mentul de editare.Astfel se evita orice eroare posibila.Aceasta metoda
este recomandabila atat pentru incepatori cat si pentru a genera subclase
Dostları ilə paylaş: |
|
|