Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuții   




Cartea de oaspeți   




Mesaje   





Agora   





Clic aici
PC Magazine





Soluții - PC Magazine Romania, Mai 2004

ActiveX (2)

Konstantin Klyagin

Urmare din numarul trecut

Alte comodități

Probabil ca cei curioși s-au întrebat deja, cum oare pot să pun o descriere la o proprietate. Într-adevăr, punând cursorul pe proprietăți standard vedem că jos, sub denumirea acestora, apare un text descriptiv.

Un asemenea mesaj se poate defini chiar în fișierul .odl, cuvântul cheie fiind "helpstring". Pentru a oferi utilizatorului un confort mai mare în timp ce el face design, putem scrie câte o propoziție pentru fiecare proprietate a controlului. De exemplu:

[id(1), helpstring("Culoarea
afisajului aratat de catre domnul
Vasile")] vasile_Culoare Culoare;

Proprietăți-referințe la alte controale

Dacă tot vorbim despre proprietăți, înainte de încheiere să privim cu atenție cel mai interesant caz, acesta fiind proprietăți de tipul referință la un alt control ActiveX. De exemplu, având un control care reprezintă o conexiune FTP, am putea dori să avem posibilitatea de a-l conecta la un canal de comunicare prin care să opereze ulterior. În mod normal, ar fi logic să setăm proprietatea "Connection" cu controlul care reprezintă conexiunea (din cod in VB):

FTP1.Connection = Connection1

Deoarece nu prea avem conexiuni, protocoale de rețea, iar exemplele noastre nu necesită nici un dial-up amarât, să ne întoarcem privirile înapoi pe Vasile. Putem să-i găsim și lui niște puncte în care se poate intersecta cu alte controale: locul de muncă (proprietatea Uzina), marca de țigări preferată, nevastă. J Presupunem că avem interfața Dana cuprinzând metoda Spala(), la care câteodată trebuie să apeleze Vasile.

Pentru a face o astfel de legatură între două controale ActiveX, se folosește interfața abstractă IUnknown. Imediat aflăm cum lucrăm cu ea.

În primul rând, creeam propritatea. În ClassView alegem "Add Property.." și setăm LPUNKNOWN ca tipul acesteia. Metoda SetNevasta() acum va accepta orice altă interfață, iar pentru a o folosi avem nevoie de o variabilă internă:

class VasileCtrl : public
oleControl
{
...
DANALib::_DanaCtlPtr nevasta;
}

De asemenea, ca să avem acces la metodele și proprietățile acestei componente și ca preprocesorul să recunoască tipul _DanaCtlPtr, trebuie să importăm biblioteca respectivă de tipuri în header:

#import "dana.tlb"
Setarea se face astfel:
void CVasileCtrl::SetNevasta
(LPUNKNOWN newValue)
{
nevasta = static_cast<
DANALib::_DanaCtlPtr >(newValue);
if(nevasta == NULL)
ThrowError(CTL_E_INVALIDPROPERTY-
VALUE);
SetModifiedFlag();
}

A doua linie verifică dacă valoarea nouă se referea la un control de tipul la care ne așteptam. În sfârșit, în caz de nevoie, apelăm la controlul asociat, cum ar fi el o clasă C++ obișnuită:

nevasta->Spala();

Iar înainte de folosire în VB, nu uităm să setăm proprietatea noastră cu o valoare:

Vasile1.Nevasta = Dana1

Fiind lămuriți complet cu proprietățile în ActiveX, luna viitoare mergem mai departe și ne vom apuca de alte aspecte ale vieții personale a lui Vasile, precum și lucrul cu tipuri de date COM și pagini de proprietăți. Ne vedem atunci.


PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2004 Agora Media.

[email protected]

LG - LifeŽs Good

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro