|
la butonul respectiv (obiectul nu este focalizat).Acest gen de situatie
|
səhifə | 8/10 | tarix | 03.11.2017 | ölçüsü | 0,98 Mb. | | #29921 |
| la butonul respectiv (obiectul nu este focalizat).Acest gen de situatie
se poate intalnii: fie atunci cand doriti sa utilizati in program si dife-
rite rutine cu executie automata,fie in etapa de depanare a unui program.
Astfel,daca presupuneti ca eroarea este generata de un mesaj Windows re-
dundant,in loc sa apasati butonul,apelati direct procedura de raspuns la
eveniment.Daca eroarea se mentine,inseamna ca are o alta cauza.Daca ero-
rea nu mai apare,inseamna ca mesajul utilizat pentru buton nu este discri-
minativ (acest gen de situatie intervine frecvent atunci cand se utilizea-
za matrice de controale).Apelarea procedurii,scurtcircuiteaza toate mesa-
jele Windows cat si functiile si procedurile de receptionare si filtrare
a mesajelor.
Fiecare control adaugat in aplicatie se identifica printr-un nume.Daca
pastrati numele creat automat,acesta va contine numele tipului de control
si un numar oarecare,adaugat in ordinea in care a fost creat obiectul.De
exemplu,daca adaugati trei butoane,vor fi denumite succesiv: Command1,Co-
mmand2 si Command3.Aceste denumiri sunt mai mult decat suficiente pentru
exercitii simple,de genul celor prezentate mai sus.Intr-o aplicatie mai
mare insa,numarul de controale este din ce in ce mai mare si este din ce
in ce mai greu sa faceti diferenta dintre doua controale de acelasi tip.
De exemplu,daca depanati codul unui program cu 20 de butoane,este destul
de greu sa faceti diferenta,de exemplu,dintre butonul 15 si butonul 17.
Pentru a simplifica operatiile de depanare si control,puteti denumi fie-
care control,cat mai sugestiv,astfel incat sa fie foarte usor de identifi-
cat in fila de cod.
-55-
Pentru formarea identificatorului,se utilizeaza aceleasi reguli ca si
pentru variabile si constante (caractere alfa numerice,trebuie sa inceapa
cu o litera sau o liniuta de subliniere...etc.).Si in acest caz,se pot
utiliza o serie de conventii de formare a denumirii (facultative).
Daca doriti sa creati aplicatii strict pentru uz intern,puteti forma
denumirea cu cuvinte in limba romana : Exemple: FereastraMea,ButonulMeu.
Este bine ca in cuvintele compuse sa scrieti cu litera mare prima litera
din fiecare cuvant.
Daca doriti sa creati aplicatii si controale de tip ActiveX,pe care
urmeaza sa le partajati si cu alti utilizatori sau programatori,este bine
sa utilizati denumiri formate din cuvinte in limba engleza.
Fiecare denumire este bine sa descrie cat mai clar controlul respec-
tiv,sau operatia principala pe care o executa.
Pentru ca sa fie cat mai usor de identificat si tipul de control,se
pot utiliza prefixe,cu semnificatie prestabilita.De exemplu,puteti utili-
za urmatoarea lista de astfel de prefixe :
PREFIX OBIECT EXEMPLU
=======================================================================
chk CheckBox chkReadOnly
cbo ComboBox cboEnglish
cmd CommandButton cmdCancel,cmdOK
cmg CommandGroup cmgChoices
cnt Container cntMoverList
ctl Control ctlFileList
edt EditBox edtTextArea
frm Form frmFileOpen
frs FormSet frsDataEntry
grd Grid grdPrices
grc Column grcCurrentPrice
grh Header grhTotalInventory
img Image imgIcon
lbl Label lblHelpMessage
lin Line linVertical
lst ListBox lstPolicyCodes
olb OLEBoundControl olbObject1
ole OLE oleObject1
opt OptionButton optFrench
opg OptionGroup opgType
pag Page pagPage1
pgf PageFrame pgfLeft
sep Separator sepToolSection1
shp Shape shpCircle
spn Spinner spnValues
text TextBox txtGetText
tmr Timer tmrAlarm
tbr ToolBar tbrEditReport
Pentru a schimba numele unui control,utilizati proprietatea Name,din fe-
reastra Properties.Este esential sa stabiliti numele controlului inainte
de a edita oricare dintre evenimente.In caz contrar,procedurile respective
vor ramane "orfane" (nu mai pot fi apelate).In exemplul anterior,puteti
denumi cele doua butoane: cmdRosu si cmdVerde (apoi editati procedurile).
-56-
Daca alegeti sa respectati o astfel de conventie pentru formarea denu-
mirilor,este bine sa o respectati in toate aplicatiile pe care le dezvol-
tati si pentru fiecare control.In acest mod,nu numai ca va fi mult mai
usor sa identificati un control in lista de coduri,dar,in viitor va putea
fi posibil sa dezvoltati programe de depanare automata.De exemplu,puteti
scrie un program care citeste fila de cod si identifica toate obiectele
cu denumire formata cu prefixul cmd.Acest program va afisa automat toate
butoanele de comanda din program,sau toate metodele si evenimentele ape-
late.Un alt program,va putea apela succesiv toate evenimentele de tip
buton din program,pentru a verifica functionalitatea aplicatiei...etc.
In acest mod,se vor putea dezvolta instrumente de lucru,cu care se va
simplifica foarte mult munca de depanare si control.Daca respectati con-
ventiile standard,aceleasi programe se vor putea aplica pentru orice apli-
catie sau program ce respecta setul de conventii.
O alta facilitate oferita de Visual Basic o reprezinta instrumentul
denumit Auto List Members.Atunci cand editati codul unei proceduri,dupa
ce introduceti numele controlului,sau al procedurii,Visual Basic afiseaza
automat o caseta cu un set complet de optiuni acceptabile.
EXEMPLU: - deschideti fereastra View Code
- in caseta Object alegeti Form
-se va afisa automat procedura Load
-editati in porocedura textul: Form1.
se va afisa automat caseta Auto List Members,cu optiunile acceptabile
pentru fereastra Form1 : ActiveControl,Appearance,AutoRedraw,BackColor,
BorderStyle,Caption.....etc.Practic lista contine toate proprietatile si
metodele obiectului.Pentru a alege una dintre ele,este suficient sa o
selectati cu un dublu click.Daca utilizati o astfel de optiune,puteti fi
sigur ca nu va genera o eroare de compilare.De exemplu,alegeti Caption si
completati procedura astfel:
Private Sub Form_Load
Form1.Caption = "Fereastra Principala"
End Sub
Instrumentul Auto List Members,poate fi activat sau inactivat din meniul
Tools.Alegeti din meniul Tools,optiunea Options,apoi Editor si bifati sau
anulati caseta check box denumita Auto List Members.Observati si restul
de optiuni accesibile.Tot in caseta Options,puteti explora si restul de
optiuni din meniurile: Edit Format,General,Docking,Enviroment si Advanced.
Descrierea amanuntita a acestor setari nu face obiectul acestui manual,dar
este bine sa fiti sensibilizati asupra faptului ca mediul de editare a
programelor poate fi personalizat in functie de preferintele d-voastra.
De exemplu: daca utilitarul Auto List Members va enerveaza,este suficient
sa deselectati caseta corespunzatoare.
Un alt obicei foarte bun,este sa utilizati cate un folder (director)
nou,pentru fiecare proiect nou.Astfel,programele vor fi mult mai usor de
verificat si depanat,sau vor putea fi sterse de pe disc fara nici un fel
de complicatie.Daca arhivati toate filele automat,in acelasi director in
care sunt si filele programului Visual Basic (Vb5cce),in timp va fi tot
mai greu,sau chiar imposibil sa separati filele ce apartin de un anumit
proiect.Este bine sa formati un director separat in care sa grupati toate
proiectele,iar pentru fiecare proiect sa utilizati cate un director dis-
tinct.Exemplele simple se pot grupa toate in acelasi director comun.
-57-
Interfata grafica poate fi formata dintr-o singura fereastra si cateva
controale vizuale,sau poate fi subimpartita in mai multe ferestre.In acest
caz,una dintre ferestre va fi fereastra de start(sau fereastra principala)
iar celelalte ferestre vor fi controlate cu ajutorul unor evenimente.Cea
mai simpla modalitate este sa se apeleze metoda Show.
EXEMPLU: -deschideti un nou proiect
-adaugati un buton in fereastra Form1
-din meniul Project selectati Add Form si Open
-se va adauga in proiect fereastra Form2
-reveniti in fereastra Form1,executati un dublu click pe
buton si editati urmatoarea procedura:
Private Sub Command1_Click()
Form2.Show
End Sub
Executati exercitiul cu Ctrl+F5 si apasati butonul.Se va deschide si cea
de a doua fereastra.Observati ca puteti trece cu un click de mouse de la
o fereastra la alta,fara nici un fel de dificultate.
Metoda Show,permite si deschiderea ferestrei in stilul denumit modal.
In acest caz,procedura se va edita astfel:
Private Sub Command1_Click()
Form.Show(1)
End Sub
Incercati sa executati exercitiul si in aceasta varianta.Observati ca nu
se mai poate trece de la fereastra Form2 la fereastra Form1 cu un simplu
click de mouse.Este necesar sa inchideti fereastra Form2,inainte de a
putea reveni la fereastra Form1.Stilul modal,se refera la faptul ca fe-
reastra sau caseta de dialog deschisa cu aceasta calitate asteapta o anu-
mita actiune inainte de a permite transferul fluxului de executie spre un
alt control.Exemplul tipic de fereastra modala il reprezinta fereastra
MessageBox (asteapta apasarea butonului OK).Acest gen de ferestre se uti-
lizeaza atunci cand doriti sa va asigurati ca utilizatorul nu poate sa
sara peste o anumita etapa din program.De exemplu,daca solicitati un set
de date oarecare,utilizatorul nu va putea parasi fereastra pana cand nu
completeaza toate casetele de dialog.
In mod implict,toate ferestrele sunt nemodale (modeless),cu exceptia
celor destinate pentru schimbul de date (MsgBox si InputBox).Pentru apli-
catiile curente,se recomanda mai ales stilul modeless,deoarece permite o
mult mai mare flexibilitate de lucru.De cele mai multe ori,clientul va
prefera sa deschida simultan mai multe ferestre si sa aleaga singur ordi-
nea in care doreste sa le utilizeze.
Pentru a crea o interfata cu ferestre multiple,se poate utiliza si o
fereastra de tip MDI (Multiple Document Interface).O astfel de fereastra
va fi un obiect de tip container pentru alte ferestre denumite ferestre
fiice.O fereastra fica este o fereastra obisnuita la care proprietatea
MDIChild este setata True.Ca rezultat,fereastra MDIForm va putea organiza
si sorta ferestrele incluse,in acelasi mod in care orice container poate
organiza obiectele incluse.Acest gen de fereastra se adauga in proiect tot
din meniul Project (cu Add MDIForm),dupa care se adauga ferestrele fiice.
Se utilizeaza pentru a putea prezenta doua sau mai multe ferestre simultan
sau ordonate dupa un anumit criteriu (in cascada,aliniate orizontal sau
vertical etc.).
-58-
EXEMPLU: -deschideti un nou proiect
-din meniul Project alegeti Add MDI Form si adaugati o
fereastra de tip MDI si apoi alegeti Add Form si adaugati o fereastra
simpla (Form2)
-alegeti fereastra Form2 si setati proprietatea MDIChild=True
-adaugati un buton in fereastra Form2 si procedura Click
Private Sub Command1_Click()
End
End Sub
-redenumiti Command1.Caption = "Exit"
-selectati fereastra MDIForm1 si executati un dublu click,
apoi editati urmatoarea procedura Load:
Private Sub MDIForm_Load()
Form2.Show
End Sub
-selectati fereastra principala Form1,executati un dublu click
si editati urmatoarea procedura Load:
Private Sub Form_Load()
MDIForm1.Show
Form1.Visible = False
End Sub
Executati exercitiul cu Ctrl+F5.Se va afisa fereastra MDIForm cu fereastra
Form2 inclusa in ea.Apasati butonul Exit,pentru a putea iesi din program.
In acest exemplu,fereastra principala Form1 a fost ascunsa imediat dupa
ce a activat fereastra MDIForm.Daca nu adaugati si butonul de exit,apli-
catia va stagna,deoarece fereastra Form1 ramane activa,chiar daca este
ascunsa.
Alegerea tipului de fereastra si a stilului de prezentare trebuie sa
se faca inainte de a incepe adaugarea de controale.Trebuie remarcat faptul
ca fereastra de tip MDIForm nu accepta decat controalele ce beneficiaza si
de proprietatea Align.Se utilizeaza mai ales pentru a include si grupa
alte ferestre,mai ales atunci cand aceste ferestre prezinta date de tip
text.Daca utilizati aceasta fereastra ca suport general pentru interfata
grafica,este bine sa va asigurati de la bun inceput cu una sau mai multe
solutii de iesire din aplicatie (meniu,buton de Exit etc.).
In general,este bine ca proiectarea unei interfete sa inceapa cu deci-
zia asupra obiectelor de tip container (cele utilizate pentru a grupa
restul de controale).Cu alte cuvinte,se va alege la incepul modulul cel
mai mare din program,si apoi se vor introduce modulele mai mici.
Eventual,este bine sa proiectati o mica schita grafica cu aspectul
general al interfetei pe care doriti sa o realizati.Alegeti fiecare tip
de operatie pe care doriti sa o implementati,apoi alegeti controlul cel
mai potrivit pentru operatia respectiva.
In etapa urmatoare,trebuie sa stabiliti modul in care se va face lega-
tura dintre diferitele module din program.Alegeti metodele sau evenimente-
le pe care doriti sa le exploatati.Daca exista o schita grafica,completati
cu sageti colorate legaturile dintre module.
In ultima etapa,verificati cu atentie modul in care se face transferul
fluxului de executie,de la un modul la altul.Toate modulele trebuie sa fie
cat mai usor accesibile si trebuie sa existe o solutie de continuitate,sau
o solutie de terminare a programului (excludeti buclele infinite).
-59-
TIMER CONTROL
Intr-o aplicatie,exista un numar foarte mare de situatii in care do-
riti sa amanati executia unei anumite operatii,sau doriti sa repetati o
anumita operatie la intervale regulate de timp.Exemplu: doriti sa apelati
un numar de telefon din 5 in 5 minute,pana cand cel apelat raspunde.
Pentru acest gen de situatii puteti apela functia Timer,sau puteti crea
proceduri personalizate utilizand functiile API Windows.Cea mai simpla
modalitate este insa sa utilizati un control de tip Timer.Acest control
este realizat special pentru a repeta o anumita operatie la un intreval
programabil de timp.Pentru a executa operatia se va utiliza evenimentul
Timer Event,iar intervalul de tip se va seta prin proprietatea Interval.
Proprietatea Interval se seteaza in milisecunde si accepta valori intre
0 si 65,353 (aproximativ un minut).Nu va asteptati la o acuratete maxima.
Precizia de executie nu este de o milisecunda,ci in jur de 10-50 de mili-
secunde,in functie de tipul de procesor instalat.Daca un procesor are
un clock intern de circa 19 milisecunde (chiar daca poate executa mili-
arde de operatii pe secunda),atunci nici precizia de executie/operatie nu
va putea scadea sub acest interval.Controlul este insa extrem de prectic
pentru operatiile uzuale dintr-o intefata grafica.Este simbolizat in
ToolBox sub forma de ceas desteptator si poate fi adaugat in aplicatie cu
un simplu dublu click.Controlul de tip Timer nu este vizibil in timpul
executiei.
EXEMPLU: -deschideti un proiect nou de tip Standard.exe
-executati un dublu click pe pictograma Timer din ToolBox
-apoi executati un dublu click pe controlul Timer1 din Form1
si editati urmatoarea procedura:
Private Sub Timer1_Timer()
Form1.BackColor = RGB(Rnd*250,Rnd*250,Rnd*250)
End Sub
-inchideti fereastra de cod,deschideti fereastra Properties
si setati proprietatea Interval la valoarea 1000.
Verificati exercitiul cu Ctrl+F5.Fereastra Form1 va schimba automat culoa-
rea de fond in fiecare secunda.Daca doriti sa modificati intervalul de
timp,resetati proprietatea Interval.
EXEMPLUL 2: -deschideti un proiect de tip Standard.exe
-adaugati doua controale de tip Timer si editati cele doua
proceduri astfel:
Private Sub Timer1_Timer()
Form1.Print Timer
End Sub
Private Sub Timer2_Timer()
Cls
End Sub
-deschideti fereastra Properties si setati pentru Timer1
proprietatea Interval = 1 iar pentru Timer2 Interval = 1000
Apoi executati exercitiul cu Ctrl+F5.Fereastra va afisa periodic rezul-
tatul functiei Timer (cate secunde au trecut de la miezul noptii).
Observati cum cele doua controale de tip Timer actioneaza la intervalele
determinate.Atentie: -nu confundati functia Timer cu controalele de tip
Timer.Numarul de valori afisate pe secunda va fi in functie de viteza
procesorului instalat (sub 1000 ).
-60-
LABEL CONTROL
Principalul scop al unei interfete grafice este de a media comunicarea
dintre om si masina.Pentru a putea introduce sau extrage date,exista mai
multe variante posibile.Cea mai simpla si cea mai economica este sa ape-
lati direct functiile InputBox() si MsgBox().Aceste functii nu ocupa spa-
tiu de memorie,nu prelucreaza si nu emit mesaje Windows,se executa rapid
si exact,fara riscul de a genera erori.Aceste functii se recomanda si in
etapa de depanare a unui program,ori de cate ori credeti ca unul dintre
controalele grafice contine o eroare de reprezentare.
Pentru ca schimbul de date sa se poata face cat mai eficient si cu un
aspect grafic cat mai atragator,au fost create diverse controale vizuale
specializate in prezentarea datelor,sau in preluarea de date.
Un astfel de control este si cel denumit Label (eticheta).Label este
un control grafic specializat in prezentarea datelor de tip text.Textul
va putea fi reprezentat in orice culoare,cu diverse tipuri de fonturi si
la dimensiunea dorita.Textul afisat poate fi un text fix,prestabilit in
etapa de design sau poate fi un text preluat dintr-o fila,preluat de la
tastatura sau rezultat in timpul exexcutiei,in urma unor operatii din
program.Daca se va utiliza pentru fragmente de text scrise cu fonturi de
dimensiuni diferite,controlul se va adapta automat la dimensiunea necesa-
ra,cu conditia ca proprietatea AutoSize sa fie setata True.
Acest control se utilizeaza mai ales pentru a afisa etichete sau titlul
unui documet,pentru a adauga texte explicative langa orice alt tip de con-
trol,pentru a prelua date de tip text cu lungime relativ mica,sau chiar
pentru a realiza module elementare de comunicatie.
EXEMPLU: -deschideti un nou proiect
-adaugati un buton
-adaugati doua controale de tip Label
-selectati primul control de tip label (Label1) si setati
proprietatea Caption = "Numele d-voasta este: "
-dimensionati controlul astfel incat sa afiseze intregul
text,apoi deplasati controlul la locul dorit in fereastra
-selectati cel de la doilea control label (Label2) si
stergeti textul din proprietatea Caption.
-alegeti proprietatea BackColor si setati una dintre culo-
rile preferate (de exemplu din Palette,alegeti galben)
-alegeti proprietatea ForeColor si setati culoarea cu care
doriti sa fie editat textul din control (de exemplu din Palette -rosu)
-alegeti proprietatea Font,apasati butonul cu trei puncte
si setati Fontul,Stilul si Dimensiunea (de exemplu 24)
Dostları ilə paylaş: |
|
|