Visual Basic 0 abc-doar


la butonul respectiv (obiectul nu este focalizat).Acest gen de situatie



Yüklə 0,98 Mb.
səhifə8/10
tarix03.11.2017
ölçüsü0,98 Mb.
#29921
1   2   3   4   5   6   7   8   9   10

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)

Yüklə 0,98 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin