Tema: Components ActiveX. Pràctiques


Format de presentació de les pràctiques

Haureu de comprimir (Winzip) els fitxers dels projectes i les DLL i EXE’s que genereu. Generareu enllaços des de la vostre pàgina web per poder-los descarregar. Comproveu vosaltres mateixos que els projectes es recuperen i s’executen correctament abans de notificar al professor que heu acabat la pràctica.


Pràctica 1: component DLL ActiveX

Crear  un component de codi DLL ActiveX que oferirà un objecte TarjaCredit a altres aplicacions. S’utilitzarà l’objecte TarjaCredit per la validació d’una compra amb targeta de crèdit.

Els elements de l’objecte són:

Nom

Tipus

Numero

Propietat (enter)

Caducitat

Propietat (data)

Quantitat

Propietat (procediment)

Aprovar

Mètode

 

Les propietats del projecte seran les següents:

Propietat

Valor

Nom del projecte

DLLCreditCard

Descripció del projecte

Objeto CreditCard

Execució desatesa

Activada

 Name de la classe

CreditCard

Nom del fitxer de classe

Cc.cls

Nom del fitxer vbp

Cc.vbp

 

Quantitat ha de ser un procediment de propietat. Hi haurà una variable privada per emmagatzemar el valor de l’import de la compra.  En el procediment  Property Get, retornem el valor de la variable privada.  En el procedimient Property Let, comprovar que el valor és més gran que zero. Si es menor que zero, la variable privada valdrà  zero.

El mètode Aprovar retorna  un valor Boolean. Si s’aprova la targeta de crèdit, el mètode retorna True, altrament False. Per saber si s’aprova o no utilitzar la següent lògica:

Condició.... Acció
Quantitat = 1000 And Caducitat > Now()  Aprovar= True
Quantitat>= 1000 And Caducitat <= Now() Aprovar= False

La propietat Numero ha de ser la propietat predeterminada de la clase CreditCard.

Compilar el projecto Cc.dll. Activeu l’opció “Propiedades del proyecto à Compatibilidad del proyecto “ per tal de que quan  efectuem canvis en el projecto no es perdin les referències de l’aplicació client.


Pràctica 2: Client de la DLL

  1. Afegir un projecte nou EXE estàndard al projecte DLLCreditCard
  2. Afegir una referència al projecte DLLCreditCard.
  3. Crear una variable de mòdul cc de tipus CreditCard.
  4. Agregar al formulari un control CommandButton anomenat Inicialitzar tarjeta
  5. En el l’event Click del control CommandButton, inicialitza la targeta de crèdit amb els següents valors:  caducitat = 1 de setembre de 2005, Quantitat = 500, número = 1234. Crideu al mètode Aprovar i mostreu el resultat.
  6. Canvieu  el valor de Quantitat a 2000. ¿El mètode Aprovar retorna False?

Pràctica 3: Control d’errors

 

  1. Modificar el procediment de propietat Quantitat Property Let de forma que si l’import especificat per l’usuari és negatiu, generi un error en temps d’execució amb la següent descripció:  Número: vbObjectError + 1000, Origen: DLLCreditCard.CreditCard, descripción: L’import de la compra ha de ser més gran que zero.
  2. En la fitxa Opciones à General posar l’opció Interceptación de errores a Interrupción en módulos de clase.
  3. Modificar el còdi del client per passar un import de compra de –100 i comprovar que es produeix un error d’execució en el mòdul de classe.
  4. En Opcions à Interceptación de errores posar  Interrupción en errores no controlados. Comprovar que ara l’error és en l’aplicació client.
  5. Afegir un controlador de errors (On Error) al succés  Click del procediment CommandButton en el que comprovarem l’error generat en el mòdul de classe per mostrar un missatge que avisi a l’usuari que l’import de la compra ha de ser un valor positiu.

 


Pràctica 4: Afegir successos a l’objecte ActiveX

Utilitzarem  successos per simular la connexió a l’entitat bancària durant el procés del mètode Aprovar.

  1. En el mòdul de classe CreditCard, afegir el codi  següent al principi del procedimient Aprovar:
Dim sngEndTime As Single
RaiseEvent Status("Connectant    amb el banc...") ‘informa al client de l’estat
'Simula el retard de    trucar al banc: 2 segons
sngEndTime = Timer +    2
Do While Timer <    sngEndTime
    DoEvents    ' Passa a altres processos
Loop
RaiseEvent Status("Procés    de la targeta...") ‘informa al client de l’estat
'Simula el retard del    procés de la targeta: 2 segons
sngEndTime = Timer +    2
Do While Timer <    sngEndTime
    DoEvents    ' Passa a altres processos
Loop

 

  1. Afegiu i configureu un control Timer per temporitzar l’espera que heu programat. Declareu un succés Estat amb un paràmetre de tipus String.   En l’aplicació client, afegir una etiqueta per mostrar l’informació de l’estat. 
  1. Afegiu la palabra clau WithEvents a la declaració de la variable d’objecte cc. Ara accediu al codi del succés Estat per mostrar el text de estat en el control Label. Comprovar l’aplicació client.

 


Pràctica 5: Compilació dels projectes DLL i client.

Compileu la DLL i el projecte client per separat. Tanqueu Visual Basic i proveu a executar el client compilat.


Pràctica 6: Crear un control ActiveX

Hem de crear un control ActiveX que simularà l’obtenció de informació de cotitzacions de la borsa.

  1. Crear un projecte control ActiveX de nom Stock. L’objecte UserControl es dirà StockControl. Guardar l’objecte UserControl i els fitxers com a  Stock.ctl y Stock.vbp, respectivament.   Afegir dos controls Label, dos controls TextBox i un control Timer a l’objecte UserControl. Els textos dels Labels seran Identificació i Preu de l’acció. La propietat Interval del control Timer valdrà 1000.
  2. Afegir el codi següent al succés Timer del control Timer:
If txtIdentificacio    = "MSFT" Then
    'preu simulat
    txtPreu.TEXT = Rnd() * 200
Else 'tipus desconegut
    txtPreu.TEXT = 0
End If

 

  1. Afegir un projecte EXE estàndard al grup de projectes. Guardar el formulari i el projecte com Contain.frm i Contain.vbp, respectivament. Afegir un objecte StockControl al formulari.
  2. Observar que quan el control es situa en el formulari i el formulari està en execució, ha d’aparèixer el número zero en el quadre de text Preu. Perquè?
  3. Executar el projecte client i escriure en el quadre de text Identificació MSFT (en majúscules). Es mostraran valors aleatoris de l’acció. Perquè?

Pràctica 7: Propietats del control ActiveX

 

Afegiu  al control ActiveX dos procediments de propietat: Actiu i Font. La propietat Actiu serà de tipus Boolean i quedarà connectada a la propietat Enabled de l’objecte Timer de forma que el client podrà controlar si es modifiquen o no els valors. La propietat Font és de tipus Object i servirà per que el client seleccioni el tipus de font que es mostrarà ens els Label i els TextBox del control ActiveX.