Visual Basic 0 abc-doar


sati sageata spre dreapta de doua ori)



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

sati sageata spre dreapta de doua ori).

EXEMPLU: deschideti din nou proiectul precedent si Menu Editor.

Selecati cu mouse submeniul Micsoreaza si apoi apasati butonul Insert

Apasati de doua ori sageata spre dreapta,apoi completati casetele astfel:

Caption = Maximizeaza Name = mnuMax Index = 11 Shortcut = Ctrl + M

Meniul Marime va fi reprezentat in caseta de afisaj astfel:

Marime

....Mareste

........Maximizeaza Ctrl+M

....Micsoreaza

Inchideti fereastra Menu Editor cu Ok,apoi selectati Marime si Mareste,

pentru a afisa noul submeniu.Executati un click in noul submeniu si apoi

editati procedura de raspuns:

Private Sub mnuMax_Click(Index As Integer)

Form1.Width = Form1.Width + 2000

Form1.Height = Form1.Height + 1000

End Sub

Inchideti fereastra Code si verificati fereastra cu Ctrl + F5.Verificati

noul submeniu.Observati ca meniul Mareste nu mai este functional si ca

procedura de raspuns nu mai poate fi apelata ( si nici nu poate accepta

o combinatie de tip shortcut).Prin selectarea cu mouse,meniul Mareste nu

face decat sa afiseze noul submeniu (sau lista de submeniuri).

Daca doriti sa lasati un spatiu gol in lista de submeniuri,apasati o

data sageata spre dreapta (adaugati cele patru puncte) si completati caseta

Name,dar lasati caseta Caption goala (eventual adaugati si un index).


-49-

Meniurile pot fi de doua tipuri: meniuri fixe si meniuri popup,denumite

si meniuri verticale sau meniuri de derulare.Meniurile fixe sunt prezente

in aplicatie in orice moment si in aceeasi pozitie fixa,in timp ce meniu-

rile popup pot fi afisate doar atunci cand este nevoie de ele si pot avea

o localizare variabila.Meniurile de tip popup sunt afisate de obicei cu

ajutorul unui click drept de mouse,la pozitia actuala a indicatorului

mouse,dar pot fi declansate de orice alt eveniment,sau pot fi afisate la

o locatie fixa prestabilita.Pentru a afisa un meniu de tip popup se utili-

zeaza metoda PopupMenu.

EXEMPLU: -deschideti proiectul anterior

-deschideti fereastra View Code si editati urmatoarea procedura

Click:

Private Sub Form_Click()

Form1.PopupMenu mnuCulori(1)

End Sub

Inchideti fereastra Code si verificati fereastra cu Ctrl+F5.Apoi executati

un click de mouse in fereastra Form1.Se va deschide automat meniul Culori,

la pozitia actuala a mouse-ului.

Un meniu de tip Popup se creaza la fel ca si un meniu obisnuit,cu aju-

torul ferestrei Menu Editor.Este esential insa,ca meniul sa contina si

submeniuri si o cifra de indexare ce va fi utilizata ca argument pentru

functia PopupMenu.

In mod conventional,meniurile popup sunt declansate de un click drept

de mouse,dar se poate utiliza orice alt eveniment (in exemplul de mai sus

s-a utilizat evenimentul Click).

Meniurile de tip popup prezinta avanatjul ca nu ocupa din spatiul gra-

fic al aplicatiei si pot fi declansate doar in momentul potrivit.In rest,

meniurile Popup au aceeasi functionalitate ca si meniurile fixe.

Pentru controlul evenimentelor de la nivelul meniurilor,sistemul Win-

dows utilizeaza urmatoarele mesaje interne: WM_INITMENU,WM_INITMENUPOPUP,

WM_MENUCHAR si WM_MENUSELECT.Mesajele nu sunt foarte numeroase si sunt

destul de discriminative,astfel incat operatiile controlate cu ajutorul

meniurilor se executa rapid si fara erori.

Exista o polemica intreaga prin care se recomanda utilizarea meniurilor

ori de cate ori este posibil.Totusi,menurile sunt din ce in ce mai putin

prezente in aplicatii,deoarece un buton este ceva mai simplu de adaugat si

mai direct.In plus,un numar mare de programatori nu utilizeaza un plan

general al aplicatiei,ci incep sa programeze si adauga controalele nece-

sare pe parcurs.Pentru fiecare idee noua,adauga cate un buton,sau un alt

control simplu,fara sa tina cont de aspectul global al aplicatiei.Acest

gen de implementare este valabil atunci cand doriti sa obtineti o solutie

simpla,cat mai rapid.Atunci cand doriti insa sa realizati o interfata

grafica,menita sa dureze un timp indelungat,trebuie sa tineti cont de

fiecare amanunt.

O solutie alternativa,este sa utilizati un singur buton,cu care puteti

deschide o fereastra noua,in care meniul a fost inlocuit cu diverse con-

troale (pentru a obtine un aspect mai performant).In acest mod,se prote-

jeaza si memoria de operare si se obtine si aspectul dorit (butoane cu

diverse imagini de tip BitMap sau arii grafice ce pot activa diferite

functii si operatii).Solutia optima se va alege in functie de experienta

si tabiet-urile programatorului (sau preferintele utilizatorului).


-50-

BARA DE CONTROALE STANDARD (Toolbox)

Este principalul instrument de lucru destinat pentru adaugarea de con-

troale vizuale de tip standard,sau de tip ActiveX.Daca nu este activata,

se poate activa din meniul View,selectand optiunea Toolbox.

Bara de controale standard se afiseaza implicit in partea din stanga

a ferestrei Project si contine o serie de pictograme,prin care sunt repre-

zentate controalele standard.Controalele standard,sunt denumite si con-

troale intrinseci datorita faptului ca definitia lor este inclusa in

nucleul programului.Nu mai este necesar sa derivati aceste obiecte din

clasa de baza,ci pot fi adaugate in proiect cu un simplu click de mouse.

Controalele standard sunt: Pointer,PictureBox,Label,TextBox,Frame,CheckBox

CommandButton,OptionButton,ComboBox,ListBox,HScrollBar,VScrollBar,Timer,

DriveListBox,DirListBox,FileListBox,Shape,Line,Image,Data,OLE.

La aceste controale,puteti adauga in orice moment,un set oarecare de

obiecte de tip ActiveX,pe care le puteti selecta alegand din meniul Pro-

ject optiunea Controls (bifati caseta checkbox din lista si apoi apasati

butonul Apply).

Controalele de tip standard au fost concepute pentru a fi adaugate in

proiect in etapa de design.Proprietatile si metodele lor pot fi apelate

si in etapa de executie,dar includerea lor in proiect se face doar in

etapa de design.Daca doriti sa creati astfel de obiecte cu ajutorul unor

rutine automate,trebuie sa creati o clasa noua,derivata din clasa standard

si apoi sa creati obiecte din noua clasa.

Daca nu sunteti familiarizati cu pictograma fiecarui tip de control,

este suficient sa amplasati indicatorul mouse deasupra pictogramei si se

va afisa automat numele controlului respectiv.

Pentru a adauga un control standard in proiect,executati un dublu click

pe pictograma respectiva (trebuie sa existe un proiect deschis).

EXEMPLU: -deschideti un proiect nou de tip Strandard.exe

-cautati in Toolbox controlul denumit CommandButton

-executati un dublu click pe pictograma CommandButton

In fereastra Form1,se va adauga automat un buton,amplasat in centrul

ferestrei.In fiecare colt,si in centrul laturilor,sunt simbolizate si

niste patratele mici albastre.Puteti utiliza aceste patratele pentru a

redimensiona butonul.Selectati un astfel de patratel albastru cu mouse si

trageti cu butonul mouse apasat,pana cand obtineti dimensiunea dorita.

Acelasi rezutat se poate obtine si utilizand proprietatile Width si

Height din fereastra Properties.

Pentru a putea deplasa butonul in alta pozitie,selectati butonul cu

indicatorul mouse,in mijlocul butonului si apoi trageti cu butonul mouse

apasat,pana cand deplasati butonul in pozitia dorita.Acelasi rezultat se

poate obtine utilizand proprietatile Top si Left din fereastra Properties.

Pentru a elimina un control din proiect,executati un click drept de

mouse pe controlul respectiv si alegeti optiunea Cut.

Pentru a copia (multiplica) un control,executati un click drept de

mouse pe control,alegeti optiunea Copy,apoi executati tot un click drept

de mouse in fereastra Form1,in pozitia in care doriti sa amplasati noul

control si alegeti optiunea Paste.

Pentru a schimba numele butonului,deschideti fereastra Properties,apoi

selectati butonul,alegeti proprietatea Caption si editati textul dorit.

De exemplu editati textul : CULORI.


-51-

Pentru ca butonul sa fie functional,trebuie sa editati o procedura.Cel

mai frecvent se utilizeaza procedura Click().Executati un dublu click de

mouse pe buton (in fereastra de design).Se va deschide automat fereastra

Code cu scheletul procedurii Command1_Click().Completati procedura astfel:

Private Sub Command1_Click(Index As Integer)

Randomize

Form1.BackColor = RGB(Rnd * 250,Rnd * 250,Rnd * 250)

End Sub

Acum puteti verifica exercitiul cu Ctrl+F5.Lansati fereastra si apasati

butonul de cateva ori.Apoi inchideti fereastra (cu butonul X,din colt).

Pentru ca sa puteti inchide fereastra Form1 mai usor,puteti adauga un

buton special.Executati din nou un dublu click pe pictograma CommandButton

din Toolbox si apoi deplasati butonul in pozitia dorita.

Deschideti fereastra Properties si denumiti butonul Exit (setati pro-

prietatea Caption).

Apoi executati un dublu click pe cel de al doilea buton si editati

urmatoarea procedura:

Private Sub Command2_Click()

End

End Sub

Executati din nou fereastra cu Ctrl+F5.Utilizati butonul CULORI pentru

a schimba culoarea ferestrei si iesiti din aplicatie cu butonul EXIT.

Comanda End este special conceputa pentru a intrerupe executia programului

si a reveni la fereastra de design.Puteti utiliza aceasta comanda pentru

intreaga etapa de design a unui proiect (cu un buton specializat).

Executati din nou exercitiul,si observati ca in timpul executiei,buto-

nul CULORI are in interior si un chenar desenat cu linie punctata.Acest

chenar,semnifica faptul ca in momentul respectiv,acela este contrulul care

are focus (adica programul asteapta comenzi sau instructiuni de la contro-

lul respectiv).Intr-o interfata cu mai multe controale,in momentul in

care selectati cu mouse unul dintre controale,fluxul de executie va astep-

ta mesaje de la controlul respectiv (asteapta un eveniment declansat de

controlul respectiv).Automat,controlul care are focus,va fi semnalizat cu

ajutorul unui astfel de chenar format din linii punctate.Pentru a deter-

mina activ controlul pe care doriti sa il activati la un anumit moment

dat (fara sa fie selectat cu mouse),se poate utiliza metoda SetFocus.

Acest gen de marcaj,are importanta mai ales in cazul programelor ce

executa automat o serie intreaga de operatii.De exemplu,sa presupunem ca

intr-o aplicatie oarecare programul va cauta o anumita data,dintr-o serie

de controale de tip lista.Daca exista o rutina de cautare automata,utili-

zatorul nu va trebui decat sa urmareasca in fereastra chenarul format din

linii punctate pentru a sti in ce lista cauta procesorul in momentul res-

pectiv.

Un control poate fi activat sau inactivat,cu ajutorul proprietatii

Enable.In exemplul de mai sus,puteti seta pentru butonul CULORI proprieta-

tea Enable = False.Executati din nou aplicatia si observati ca butonul

este colorat complet in gri,titlul este sters si este nefunctional.Pentru

ca butonul sa poata fi utilizat trebuie sa resetati proprietatea Enable

la valoarea True.

Prin acest procedeu,controalele pot fi activate sau inactivate si in

timpul executiei (De exemplu: -in functie de o parola de acces).


-52-

Un control inactivat nu primeste si nu emite mesaje.Ca rezultat nu este

implicat in nici unul dintre evenimentele ce au loc in program.Atunci cand

interfata grafica este foarte incarcata,se pot inactiva temporar o parte

dintre controale,tocmai pentru a limita numarul de evenimente posibile.O

alta solutie este ca activarea controalelor sa se faca succesiv,sau in

cascada,in etape.Un control poate fi inactivat si in etapa de depanare a

unui program,pentru a putea localiza mai usor sursa erorilor.

O alta proprietate interesanta este proprietatea Default.Daca este

setata True,butonul respectiv poate fi activat si de la tastatura,prin

simpla apasare a tastei Enter.Intr-o fereastra poate exista un singur

buton de tip Defalut (implicit).Daca setati unul dintre butoane Default,

restul butoanelor din fereastra vor fi setate automat Default = False.

Pentru a prezenta la un anumit moment dat doar o parte dintre controale

se poate utiliza si proprietatea Visible.Daca se seteaza Visible = False,

controlul respectiv nu va mai fi prezent in timpul executiei.Pentru a

afisa obiectul,la un moment dat oarecare,se va utiliza un eveniment oare-

care si o comanda pentru resetarea proprietatii.

EXEMPLU: in exemplul anterior (cel cu doua butoane) setati pentru cel

de al doilea buton (Exit) proprietatea Visible = False.Apoi adaugati

in fereastra de cod si urmatoarea procedura:

Private Sub Form_Click()

Command2.Visible = True

End Sub

Executati exercitiul cu Ctrl+F5.Butonul Exit nu se va afisa decat dupa ce

executati un click in fereastra.

Si acest procedeu se poate utiliza pentru a descongestiona spatiul

grafic din fereastra aplicatiei.Setarea proprietatii Visible are acelasi

efect ca si utilizarea metodelor Hide si Show.Practic,se pot realiza doua

sau mai multe interfete grafice,in aceeasi fereastra,aspectul grafic fiind

controlat de unul sau mai multe evenimente din fereastra (Exemplu: se pot

afisa seturi diferite de butoane,in functie o selectarea unei optiuni).

Pentru ca un buton sa afiseze un desen oarecare,sau o imagine de tip

BITMAP,se poate utiliza proprietatea Picture,conjugata cu proprietatea

Style.In prima etapa,schimbati proprietatea Style la valoarea Graphical,

apoi selectati proprietatea Picture,apasati butonul cu trei puncte si

navigati pana cand deschideti fila de tip .bmp dorita.Apoi confirmati cu

butonul Open.Daca doriti ca butonul sa afiseze o alta imagine atunci cand

este apasat,selectati proprietatea DisabledPicture si alegeti o alta

imagine de tip .bmp (navigati tot cu butonul cu trei puncte).

Pentru restul de proprietati,deschideti manualul Help,alegeti categoria

"command buttons,described" si apoi studiati cu atentie intreaga lista.

Pentru o orientare rapida se poate utiliza si fereastra Properties.Fiecare

dintre proprietatile unui control permite dezvoltarea unui set diferit de

solutii,iar prin combinarea lor se pot obtine practic o infinitate de

implementari.Pentru utilizator,este important doar ce text este afisat pe

buton si ce anume se executa in momentul in care este apasat butonul.Insa

pentru programator,exista o infinitate de nuante,ce nu pot fi descrise

exhaustiv in nici un manual.Trebuie sa exersati cat mai mult aceste tipuri

de solutii,pana cand va formati o experienta proprie.

Controalele de tip CommandButton au un numar relativ redus de metode,

insa pot controla un numar destul de mare de evenimente.


-53-

Pentru a creste cat mai mult performanta programelor d-voastra,este

bine sa exploatati cat mai judicios toate facilitatile oferite de fiecare

control.De exemplu,in cazul butoanelor de tip CommandButton,utilizatorul

nu constata decat rezultatul actiunilor efectuate in momentul in care

apasa pe buton.Programatorul poate insa sa execute si un numar complex de

operatii,asociate cu apasarea butonului respectiv,dar fara nici o legatura

cu actiunea principala.De exemplu,butonul care confirma alegerea unei

anumite optiuni,poate executa in background si o serie de operatii de

cleaning si management al memoriei,poate inregistra optiunea selectata,

sau poate comunica date pe un port paralel,etc.Uneori,simpla apasare a

unui buton,poate declansa doua sau mai multe evenimente,fiecare dintre

ele cu un rezultat diferit.

EXEMPLU: -deschideti un nou proiect de tip Standard.exe

-adaugati un buton in Form1 (dublu click in ToolBox)

-deschideti fereastra View Code si editati procedurile:

Private Sub Command1_Click()

Beep

End Sub

Private Sub Command1_MouseDown(Button As Integer,Shift As Integer, _

X As Single,Y As Single)

Form1.BackColor = RGB(250,0,0)

Command1.Caption = "ACTIVAT"

End Sub

Private Sub Command1_MouseUp(Button As Integer,Shift As Integer, _

X As Single,Y As Single)

Form1.BackColor = RGB(0,0,250)

Command1.Caption = "INACTIV"

End Sub

Executati exemplul cu Ctrl + F5.Apasati butonul si mentineti putin apasat,

apoi eliberati butonul.Observati ca in momentul in care este apasat,ferea-

stra se coloreaza in rosu si butonul afiseaza textul "ACTIVAT",iar in mo-

mentul in care se elibereaza butonul,fereastra se coloreaza in albastru si

butonul afiseaza textul "INACTIV".In plus,la terminarea unui ciclu complet

(apasat/eliberat) se executa si un sunet de tip Beep.

Practic,actiunea de a apasa butonul a fost descompusa in trei eveni-

mente diferite :1.-apasarea butonului 2.-eliberarea butonului si 3.-click

Pentru fiecare dintre cele trei evenimente se pot asocia un numar oarecare

de instructiuni,astfel incat codul sa fie cat mai compact si sa se execute

un numar cat mai mare de operatii/unitatea de timp.Prin acest gen de so-

lutie se elimina erorile accidentale generate de eventualele mesaje redun-

dante,preluate de la un alt control de acelasi tip.In plus,cu un singur

control se pot organiza mai multe seturi de operatii distincte.

Pentru a alege evenimentele cu care doriti sa lucrati,cel mai simplu

este sa utilizati fereastra View Code.Alegeti in caseta Object (prima)

optiunea Command1 iar in caseta Procedure (cea de a doua) se vor afisa

automat evenimentele controlului respectiv.Apasati butonul de derulare si

apoi alegeti evenimentul dorit.

O alta viziune asupra proiectului va poate oferi fereastra Project Ex-

plorer,sau fereastra Object Browser.Ambele se deschid din meniul View si

ofera o imagine de ansamblu a tuturor obiectelor,proprietatilor,metodelor

si evenimentelor din proiect.


-54-

Butoanele pot fi actionate si cu ajutorul liniilor de cod.Daca se ape-

leaza procedura Click,rezutatul este acelasi ca si atunci cand se apasa

butonul respectiv,cu diferenta ca fluxul de executie nu se va mai deplasa

la butonul respectiv ( nu primeste focus ).

EXEMPLU: -deschideti un proiect nou de tip Standard.exe

-adaugati doua butoane,denumite Rosu si Verde

-adaugati pentru fiecare buton cate o procedura:

Private Sub Command1_Click()

Form1.BackColor = RGB(250,0,0)

End Sub

Private Sub Command_Click()

Form1.BackColor = RGB(0,250,0)

End Sub

Pentru a controla cele doua butoane cu ajutorul unor linii de cod,putem

utiliza evenimentele Click si DblClick ale fereastrei Form1.Adaugati si

urmatoarele proceduri:

Private Sub Form_Click()

Command1_Click

End Sub

Private Sub Form_DblClick()

Command2_Click

End Sub

Executati exemplul cu Ctrl+F5.Observati diferenta: daca apasati cele doua

butoane,sau daca executati un click sau un dublu click in fereastra.In

cazul in care apasati un buton,acesta primeste focus (observati chenarul

format din linii punctate).In cazul in care apelati direct procedura,fara

sa apasati pe buton,chenarul format din linii punctate nu se deplaseaza

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