|
particularitati de management al memoriei etc.).Reciproc,atunci cand
|
səhifə | 10/10 | tarix | 03.11.2017 | ölçüsü | 0,98 Mb. | | #29921 |
| particularitati de management al memoriei etc.).Reciproc,atunci cand
creati si distribuiti astfel de clase,este bine sa le insotiti si cu un
set de explicatii complete,pe langa codul sursa fara nici o conversie.
In majoritatea situatiilor se vor prefera obiectele inglobate in pro-
gram,fata de cele conectate,cu exceptia situatiilor in care datele explo-
atate sunt si trebuie sa fie partajate,in retea,cu alti utilizatori.
Un container OLE nu poate sa contina decat un singur obiect inglobat si
nu poate executa operatii de sortare sau reordonare.
-78-
CONTROALELE SI OBIECTELE ACTIVEX
ActiveX este un set de tehnologii prin care componentele software ale
unui program pot interactiona cu alte componente software din retea,indi-
ferent de limbajul in care au fost editate.Tehnologia ActiveX are la baza
modelul COM (Component Object Model).COM este un sistem destinat pentru
realizarea de interactiuni software in limbaj binar,cu alte cuvinte este
standardul binar pentru componentele ce interactioneaza.Practic,indiferent
de limbajul in care au fost scrise,componentele vor fi convertite in cod
binar si respectiv in cod masina.Interactiunea dintre obiecte va avea loc
la acest nivel (adica in cod masina),dupa care datele rezultate vor fi
convertite din nou spre obiectul de destinatie.Singura conditie pentru ca
un limbaj sa poata crea componente de tip COM,este ca limbajul respectiv
sa permita crearea de structuri de pointeri si respectiv sa poata utiliza
acesti pointeri pentru a apela functiile din program.
Limbajele cele mai adecvate sunt cele orientate spre obiect,dar se pot
crea componente de tip COM si in limbajele simple ca: Pascal,Ada,Java,C,
sau Basic.In general,un obiect este format dintr-un set de date si o serie
de functii pentru prelucrarea acestor date.In particular,un obiect de tip
COM este un obiect in care accesul la date nu se poate face decat prin
intermediul unor functii specializate.Acest set de functii,poarta numele
de interfata,iar functiile pentru prelucrarea datelor din interfata poarta
numele de metode.Accesul la metode se poate face doar prin intermediul
unor pointeri.Obiectele de tip COM au fost dezvoltate din conceptul OLE
(Object Linking and Embedding) si se caracterizeaza prin faptul ca accesul
la date nu se poate face decat indirect.
Pentru a putea utiliza componente de tip COM,este necesara prezenta
unei biblioteci speciale,denumita COM Library.Aceasta biblioteca include
un set DLL-uri si file esentiale (OLE32.DLL,RPCSS.EXE etc.).
Obiectele de tip ActiveX sunt instante ale unor clase de tip ActiveX.
Clasele de tip ActiveX va permit urmatoarele facilitati:
-puteti sa creati componente ce pot fi apoi incluse in alte programe,sub
forma de texte,grafice,calcul tabelar,sunete,animatie etc.
-puteti sa creati componente ce vor fi inglobate in alte aplicatii
-puteti utiliza "Drag and Drop" pentru a copia date intre aplicatii ce
utilizeaza un limbaj de programare diferit (copiaza doar valoarea datelor)
-puteti utiliza secvente de automatizare,pentru a controla un program
cu ajutorul unui alt program
-puteti crea controale sau containere de tip ActiveX
Principalele tipuri de clase de tip ActiveX sunt urmatoarele (clasifi-
cate dupa functionalitatea lor): Clase OLE Container,Clase OLE Server,
Clase Drag-and-Drop,Clase Data Transfer,Clase Common Dialog,Clase Automa-
tition,Clase OLE Control,Clase Active Document si Clase OLE-Related.
Clasele standard au fost dezvoltate prin drivare succesiva din clase
ancestoare.Astfel,cu cat o clasa are mai multi ancestori,cu atat moste-
neste mai multe proprietati si metode.Prin acest mecanism,se economiseste
un volum important de munca,deoarece functionalitatea esentiala a obiectu-
lui se mosteneste de la ancestori.Firma Microsoft a creat un arbore gene-
alogic al tuturor claselor de tip ActiveX dezvoltate de Microsoft,sub
denumirea de "Microsoft Foundation Class Library (cu mai multe versiuni).
Daca lucreti cu aceste clase,este bine sa aveti o plansa cu acest
arbore genealogic,pentru a va putea orienta mai usor.
-79-
Visual Basic va permite ambele tipuri de interactiune cu obiectele si
clasele de tip ActiveX.Puteti sa utilizati astfel de controale pentru a
dezvolta programe sau controale noi,sau puteti sa creati controale si
clase de tip ActiveX complet noi.Nu este necesar sa cunoasteti protocoale-
le si standardele interne,nici mecanismele de lucru.Toate operatiile ne-
cesare sunt efectuate automat.Nu trebuie decat sa definiti controalele si
apoi sa stabiliti functionalitatea lor.
Pentru a utiliza un obiect de tip ActiveX,cea mai simpla modalitate
este sa-l includeti in ToolBox,dupa care poate fi utilizat la fel ca si
controalele intrinsici (cele descrise anterior).Pentru a inculde un astfel
de obiect in ToolBox,alegeti din meniul Project optiunea Components si
apoi bifati in fereastra Components controalele dorite:
EXEMPLU: -deschideti un proiect nou
-selectati Project si Components si alegeti din lista
ActiveX LED Marquee Control (bifati caseta CheckBox),apoi confirmati
cu OK.In caseta ToolBox se va adauga un obiect de tip AXMarquee.
-adaugati in Form1 un control AXMarquee
-deschideti Form1.Properties,selectati obiectul AXMarquee1
si setati proprietatea Scrolling = True
-in acest moment,in obiect va incepe sa defileze textul din
proprietatea Text.Puteti schimba acest text.
-daca doriti sa puteti modifica textul si in timpul exe-
cutiei programului,adaugati si un control de tip TextBox si editati
urmatoarea procedura Change:
Private Sub text1_Change()
AXMarquee1.Text = Text1.Text
End Sub
Executati exemplul.Schimbati textul editatnd obiectul Text1.
Un alt obiect util este ChartFX 2.0 OLE Custom Control:
EXEMPLU: -deschideti un nou proiect
-din Project si Components adaugati un control de tip ChartFX
in ToolBox si apoi in Form1.
-executati un click drept pe obiect si alegeti Properties
-in fereastra Property Pages,alegeti meniul Tools si apoi
selectati caseta ToolBar
-alegeti meniul Data Values si selectati numarul de elemente
in caseta Points si numarul de serii in caseta Series
-setati valoarea maxima in YAxis / Max
-puteti utiliza si restul de meniuri pentru a personaliza
modul de presentare grafica: alegeti fonturi,adaugati titluri si expli-
catii sau o legenda,alegeti culorile etc.
-inchideti Property Pages si redimensionati obiectul astfel
incat sa fie cat mai bine reprezentat
Executati exemplul cu Ctrl+F5.In timpul executiei,puteti sa modificati
valoarea fiecarui element (implicit se vor utiliza doar valori aleatoare).
Pentru a seta valoarea fiecarui element,alegeti din bara de butoane pe
cel care are desenta pe el un ciocan (butonul Tools) si apoi alegeti me-
niul Data Editor.Se va afisa o grila,in care puteti seta valoarea pentru
fiecare element.Pentru a reveni la grafic,apasati din nou butonul Tools
si deselectati meniul Data Editor.Daca graficul are aspectul dorit,apasati
pe butonul cu imprimanta,pentru a tipari datele.
-80-
Lista de componente ActiveX va fi in functie de filele de tip .ocx
instalate in calculatorul d-voastra.Majoritatea acestor controale se in-
staleaza automat in directorul System din Windows,dar pot fi utilizate
indiferent de adresa la care au fost arhivate.Puteti completa aceasta
lista cu file preluate din orice sursa valabila (Internet).
Pentru a crea controale de tip ActiveX,utilizati la deschiderea pro-
iectului optiunea ActiveX Control (in loc de Standard EXE).In loc de Form1
se va deschide o fereastra denumita Project1-UserControl1.Puteti utiliza
direct aceasta fereastra,dar in acest caz,toate controalele realizate vor
fi denumite Project1 si vor crea conflicte de identificator.Pentru a
schimba numele proiectului,alegeti din meniul Project optiunea Project
Properties si inlocuiti in caseta Project Name textul dorit.In continuare,
controlul se realizeaza la fel ca un proiect obisnuit:
EXEMPLU: -deschideti un proiect nou de tip ActiveX
-selectati Project Properties si setati Project Name=Parola
-executati un click drept in fereastra UserControl1 si des-
chideti fereastra Properties.
-pentru a schimba numele ferestrei UserControl alegeti pro-
prietatea Name si introduceti numele dorit: Exemplu: ControlulMeu
-adaugati un control de tip Label
-setati Label1.Caption = "Introduceti parola:"
-adaugati un control de tip TextBox
-stergeti textul din Text1.Text
-adaugati un control de tip CommandButton
-setati Command1.Caption = Confirma
-dublu click pe buton si editati procedura Click:
Private Sub Command1_Click()
If Text1.Text = "Parola mea" Then
MsgBox ("Parola este corecta !")
Else
MsgBox ("Parola este incorecta !")
End Sub
Apoi alegeti din meniul File,optiunea Make...si construiti fila .ocx.Este
bine sa utilizati un director nou,dar puteti salva fila la orice adresa
doriti.Apoi salvati fila si proiectul.Daca salvati fila inainte de a con-
strui proiectul cu File,acesta va ramane neinregistrat si va returna un
mesaj de eroare.
Pentru a verifica noul component,deschideti un proiect nou de tip
Standard.EXE,alegeti din meniul Project optiunea Components,selectati con-
trolul proaspat realizat ("Parola"),confirmati cu Apply si apoi cu OK.
In bara ToolBox se va afisa noul control,cu numele sub care a fost salvat
("ControlulMeu").Adaugati in Form1 un control din acest tip si programul
poate fi executat cu Run si Start.
Observati ca nu se mai pot face nici un fel de modificari asupra con-
trolului nou realizat.Proiectul poate fi dezvoltat in continuare,prin
adaugarea unor ferestre noi.Dat fiind faptul ca fereastra Form1 este cea
de start,daca doriti sa dezvoltati proiectul,este recomandabil sa nu
utilizati aceasta fereastra pentru controlul nou creat.In fereastra Form1
puteti adauga un buton cu care deschideti o fereastra secundara in care
amplasati controlul.In acest mod,functionalitatea programului va fi mult
mai simpla.
-81-
Asadar,un control de tip ActiveX este extrem de usor de realizat.Nu
trebuie decat sa deschideti un nou proiect de tip ActiveX si sa utilizati
interfata grafica pentru a construi functionalitatea obiectului.Se pot
crea clase noi,sau se pot utiliza controalele intrinsici din bara ToolBox.
Daca este neceaar,se pot combina si mai multe controale de tip ActiveX,
pentru a crea un control nou.
Diferenta consta in faptul ca fereastra de tip UserControl nu poate
fi depanata in etapa de design (nu poate fi executata).Din acest motiv,
trebuie sa stiti exact ce anume doriti sa implementati in controlul dorit.
Cea mai buna modalitate,este sa procedati organizat.In prima etapa,faceti
o schema pe hartie cu principalele functii si aspectul general al contro-
lului dorit.Apoi deschideti un proiect de tip Standard.EXE si creati un
astfel de control executabil.Depanati cu rabdare fiecare proprietate,
metoda si eveniment,pana cand controlul corespunde exact cu modelul pro-
pus.La nevoie,copiati toate codurile mai complexe,pentru a fi mai usor de
transferat in proiectul de tip ActiveX.Apoi deschideti un proiect nou de
tip ActiveX si editati controlul.In final,verificati cu atentie controlul
realizat (apelati toate proprietatile,metodele si evenimentele).
In cazul in care controlul urmeaza sa fie utilizat in mod izolat,intr-o
fereastra oarecare,este putin probabil sa apara erori de executie nescon-
tate.Situatia se complica insa atunci cand controlul realizat urmeaza sa
interactioneze cu resul obiectelor din aplicatie.In acest caz,trebuie sa
verificati cu atentie fiecare procedura si fiecare identificator.
Controlul de tip ActiveX nu afiseaza codurile sursa.Pentru a putea fi
depanat si exploatat cat mai usor,este bine sa asociati si o fila secun-
dara cu codurile sursa,sau cel putin o fila de tip text in care sa expli-
cati cat mai clar functionalitatea obiectului si metodele de integrare in
proiect.Programul creaza automat si o fila de cod,cu extensia .ctl.Este
recomandabil sa atasati si aceasta fila,ori de cate ori doriti sa distri-
buiti un control de tip ActiveX realizat de d-voastra.In acest mod respec-
tati munca programatorului ce va folosi controalele d-voastra.Deasemenea,
este bine sa distribuiti si filele cu exetensia .vbp si .vbw.Cea mai buna
solutie este sa creati fiecare control ActiveX intr-un director separat si
sa distribuiti controlul impreuna cu toate filele create automat.
Nu are rost sa creati controale ActiveX banale.Este bine ca fiecare
control nou creat sa adauge o functionalitate noua,sau sa inlocuiasca un
volum oarecare de munca.Este util sa creati un astfel de control,atunci
cand repetati frecvent un anumit set de operatii.In loc sa repetati de
fiecare data acelasi algoritm,este mai simplu sa creati un control ActiveX
si apoi sa utilizati controlul respectiv.
Este bine,ca pe cat posibil controalele ActiveX sa fie cat mai mici,sa
consume cat mai putina memorie de RAM,sa nu genereze conflicte de identi-
ficator,sa exploateze cat mai multe variabile locale si private in dauna
celor globale si publice,pe scurt sa genereze cat mai putine cauze posi-
bile pentru erorile de executie si sa fie cat mai usor de depanat.
Puteti utiliza imagini grafice,icon-uri si cursoare,astfel incat con-
trolul sa fie cat mai spectaculos,dar nu uitati sa adaugati si o functio-
nalitate unica,sau cel putin o solutie avantajoasa pentru una dintre pro-
blemele de programare cu care va intalniti frecvent.
Controalele de tip ActiveX vor putea fi apelate de pe orice platforma
in care este implementat acest Standard.
-82-
Cea de a treia varianta de proiect,denumita CtlGroup permite combinarea
unei file executabile,cu designul unui control de tip ActiveX.Daca alegeti
aceasta varianta de proiect,puteti sa lucrati in paralel: in fereastra
UserControl creati controlul de tip ActiveX,iar in fereastra Form1,verifi-
cati functionalitatea.Daca dele doua ferestre vor fi identice,operatiile
de verificare si depanare vor fi mult mai simple.In plus,beneficiati la
sfarsit atat de un executabil cat si de un control de tip ActiveX identic
cu executabilul respectiv.
Nu este necesar sa utilizati cele doua ferestre in paralel.Daca doriti
puteti sa creati un control de tip ActiveX in UserControl si un proiect
total diferit in Project2.
EXEMPLU: -deschideti un proiect de tip CtlGroup
-deschideti fereastra Project Explorer pentru a putea naviga
in proiect
-observati ca de fapt sunt doua proiecte : Project1 cu o fe-
reastra de tip UserControl si Project2 cu o fereastra Form1
-redenumiti ambele proiecte si ambele ferestre
-editati un control de tip ActiveX in primul proiect (daca
doriti puteti include controlul ActiveX creat anterior (Parola)
-editati o interfata grafica oarecare in cel de al doilea
proiect (de exemplu un buton executabil)
-selectati proiectul de tip UserControl si construiti contro-
lul cu Make...
-apoi slavati toate filele si inchideti programul
Dupo repornire,puteti utiliza cel de al doilea proiect,sau puteti utiliza
controlul de tip ActiveX nou creat.
In fiecare dintre cele doua proiecte puteti adauga noi module de tip
Form,User Control,Class Module sau Module,dar grupul nu poate sa contina
mai mult de doua proiecte paralele.Acest tip de proiect este foarte avan-
tajos atunci cand nu stiti exact ce tip de control ActiveX doriti sa rea-
lizati si este necesar sa executati si o serie de manevre de tatonare.
Este bine sa utilizati acest tip de control in etapa de initiere,deoarece
permite si o depanare instantanee a principalelor proceduri si evenimente
implementate.La inceput,este recomandabil sa lucrati in paralel (controlul
si executabilul).Atunci cand controlul urmeaza sa interactioneze si cu
alte ferestre sau componente din viitorul program,puteti adauga in cel de
al doilea proiect si aceste ferestre,pentru a verifica functionalitatea
viitorului proiect (chiar daca nu figureaza in controlul ActiveX).
Pentru crearea controlului de tip ActiveX,puteti apela si la utilitarul
denumit ActiveX Control Interface Wizard.Pentru a apela acest wizard este
necesar sa deschideti un proiect de tip ActiveX sau CtlGroup si sa prefi-
gurati in fereastra User Control aspectul general al viitoarei interfete
(adaugati butoanele si controalele de care urmeaza sa aveti nevoie).Apoi
alegeti din meniul Add_Ins optiunea: ActiveX Control Interface Wizard.
Se va deschide fereastra ActiveX Control Interface Wizard in care
puteti sa adaugati noi proprietati,metode si evenimente pentru controlul
nou creat.Apasati butonul Next.In fereastra "Select Interface Members"
utilizati butoanele pentru a selecta proprietatile,metodele si evenimente-
le pe care doriti sa le includeti in control.In caseta Selected names vor
figura cele selectate,iar in caseta Available names vor fi afiosate cele
ce pot fi incluse.
-83-
De exemplu,adaugati proprietatile Align,Cancel si Caption (daca nu
exista).Apoi apasati butonul Next.In fereastra urmatoare puteti crea
proprietati noi (diferite de cele standard preexistente).De exemplu,
apasati butonul New,alegeti Type=Property si editati un nume (Prop11).
Apoi apasati butonul Next.In fereastra "Set Mapping" puteti atribui
fiecare dintre proprietati sau metode unuia dintre membrii constituenti
ai controlului.De exemplu,daca exista si un buton,puteti atribui proprie-
tatea Caption butonului respectiv.Apoi puteti sa atribuiti butonului si
proprietatea nou creata (Prop11).Dupa ce epuizati aceste operatii,apasati
Next.In fereastra urmatoare "Set Attributes" puteti specifica pentru
proprietatile noi introduse in obiect tipul de data,valoarea implicita
sau vizibilitatea sa (in timpul executiei sau in etapa de design).De
exemplu,pentru proprietatea noua Prop11 puteti alege tipul de data Integer
cu vaolarea implicita 10 si cu optiunea Read/Write atat pentru Run Time,
cat si pentru Design Time.Apoi apasati butonul Next.In etapa finala
puteti reveni la etapele anterioare cu Back,sau apasati butonul Finish,
pentru a definitiva controlul.Se va deschide automat fereastra ActiveX
Control Interface Wizard Summary in care sunt descrise pe scurt etapele
pe care puteti sa le urmati pentru a verifica sau aplica controlul nou
creat.Puteti salva aceasta fila,sau alegeti Close.Apoi selectati din nou
fila UserControl si construiti fila .ocx.Deschideti un nou proiect de
tip Standard.EXE si includeti noul control in Form1.Apoi deschideti fe-
reastra Properties si verificati noile proceduri,metode sau evenimente.
Acest utilitar confera un grad sporit de maleabilitate controalelor
realizate de d-voastra.Practic,putati adauga orice proprietate sau eveni-
ment dorit (chiar daca nu este in conexiune cu elementele din control).
Un alt utilitar extrem de practic este denumit Setup Wizard.Pentru a
lansa in executie acest wizard,apasati butonut START (Windows),alegeti
Programs,apoi Visual Basic 5.0 CCE si apoi optiunea Application Setup
Wizard.Acest utilitar se utilizeaza pentru a impacheta in acelasi director
toate filele neceare pentru executia unui proiect,incluzand si toate
filele si bibliotecile de tip DLL sau filele de resurse necesare.Puteti
alege si varianta de a imparti filele astfel incat sa incapa de dischete.
Parcurgeti wizardul pana la capat si apoi apasati butonul Finish.
Exista si un set de utilitare destinate pentru depanarea aplicatiilor
localizate in meniul Debug.In esenta se procedeaza ca pentru orice alt
tip de depanare: se fixeaza un set de nivele de intrerupere a programului,
apoi se executa programul pe etape,pana cand se localizeaza sursa erorii.
Acest procedeu este valoros in cazul modulelor de cod,dar este mai putin
operant pentru modulele multiple.O metoda asamanatoare,relativ simpla
este sa includeti in punctele cheie cate o fereastra de tip MsgBox().Pro-
gramul se va opri in acele puncte.Fragmentati astfel programul pana cand
identificati sursa erorii.
Un alt procedeu este sa urmariti o anumita expresie,cu ajutoriul unei
ferestre Add Watch.In punctele esentiale,programul poate fi executat pas
cu pas cu ajutorul optiunii Step Into.
Procedeele de baza pentru depanare sunt aceleasi ca pentru orice pro-
gram.Acest manual nu va intra in amanunte,deoarece acest mediu nu este
destinat pentru a crea programe mari,ci doar pentru a crea controale si
executabile relativ mici.Codurile sunt relativ scurte si necesita doar
rar procedee avansate de verificare si control sau depanare automata.
-84-
Erorile de sintaxa sunt de obicei identificate de compilator.Mai greu
de depistat si corectat sunt erorile ce intervin in etapa de executie si
erorile de conceptie.Erorile de executie se datoreaza de obicei unor
factori externi.De exemplu variabile si functii importate din file externe
conflicte de identificator sau supraincarcarea definitiilor,erori datorate
spatiunui de vizibilitate sau spatiului activ denumit (namespace),sau
conflicte cu tipurile de date importate din DLL-uri.Pentru a putea marca
un anumit punct din program,fara a intrerupe executia,se poate introduce
o functie Beep() in punctele cheie.Astfel programul va putea rula normal,
dar va pune in evidenta punctul critic.O alta solutie este sa executati
programul in diverse contexte de memorie.Uneori eroarea se datoreaza doar
memoriei insuficiente,unor alte date coexistente in memorie dar fara nici
o legatura cu programul (programe ce ruleaza in paralel).
Erorile cele mai grave sunt cele de conceptie.Daca interfata creata
nu include toate facilitatile necesare pentru o anumita functionalitate,
fie din neglijenta,fie din neatentie,aceasta greseala nu se poate corecta
decat prin rescrierea programului sursa.
In situatiile critice,salvati toate datele esentiale si apoi verificati
programul.Cea mai simpla solutie este sa pastrati in permanenta si o copie
de siguranta,pentru toate programele cu care lucrati frecvent.Decat sa va
lansati in manevre complexe de depanare si control,este intotdeauna mai
usor sa stergeti programul si sa reinstalati versiunea corecta.
Daca nu sunteti programatori profesionisti,este mai bine sa va axati
doar pe crearea unor controale cat mai fiabile.Este foarte importatnt sa
verificati cu maximum de exigenta fiecare linie din program in momentul
crearii,astfel incat componentele respective sa poata fi reutilizate in
siguranta,atat de d-voastra,cat si de alti utilizatori.Este mult mai bine
sa creati componente mici,simple si clare,decat programe complexe,greoaie
si/sau incomprehensibile.Chiar daca sunt extrem de simple,este bine sa
adaugati si o fila text cu explicatiile necesare.Atunci cand oferiti
programele si aplicatiile cu titlul de "freeware",este recomandabil sa
adaugati si filele sursa ("open source").Pentru cele realizate in scop
"comercial",puteti utiliza orice procedeu de protectie a datelor (desi eu
nu cunosc nici o persoana fizica cu venituri substantiale realizate prin
vanzare de componente software).
Familia programatorilor si utilizatorilor de componente create in
Visual Basic este foarte mare (milioane sau chiar sute de milioane de
membri).Daca respectati aceasta familie,ve-ti fi la randul vostru respec-
tati.
Mult succes.
Dostları ilə paylaş: |
|
|