Microsoft Visual Basic5.0 · Costruzione di ActiveX · Primi ... · di Francesco Petroni Microsoft...

8
di Francesco Petroni Microsoft Visual Basic 5.0 · Costruzione di ActiveX · Primi esercizi Gli obiettivi di questo articolo sono due. Il primo è quello di esplorare le funzionalità presenti nel Microsoft Visual Basic 5.0 dedicate alla realizzazione di componenti attivi. Si tratta di funzionalità del tutto nuove, in quanto non erano presenti nella precedente versione di VB. Il secondo è quello di cercare di fare un po' di chiarezza attorno al termine ATTIVO, oggi diventato di moda e quindi associato un po' a tutto. Si sente parlare di Componenti Attivi, di Controlli ActiveX, di Server Attivi, di Documenti Attivi, di Pagine Attive e di altro ancora. Gli ambiti in cui sono usati questi termini sono non solo Internet (il vero responsabile di tutto quello che sta succedendo), ma anche il Workgroup Computing e il Personal Computing. Parleremo soprattutto del Visual Basic 5.0, del quale in questo stesso numero presentiamo la prova. Anzi questo articolo costituisce un approfondimento di una delle novità più importanti del VB5, la possibilità di realizzare componenti ActiveX. Piccolo riassunto delle versioni precedenti Nella storia della Microinformatica il primo esempio concreto di riutilizzabi- lità di componenti è rappresentato pro- prio dal Visual Basic, la cui prima ver- sione già sfruttava i controlli VBX. Lo sviluppatore VB poteva inserire nella 338 propria applicazione controlli VBX che svolgessero funzionalità specifiche, che venivano in tal modo facilmente aggiunte all'applicazione. I controlli VBX hanno avuto un enorme succes- so anche per il fatto che sono stati adottati in molti altri ambienti di svilup- po. Sono sopravvissuti fino alla versio- ne 3.0 del VB. All'epoca la Microsoft mise a disposi- zione di chi voleva sviluppare propri componenti VBX, e quindi non voleva solamente utilizzarli, uno specifico strumento di sviluppo che si chiamava Control Developer's Kit (CDK), e che si basava comunque sull'uso del linguag- gio C. Successivamente, con la versione 4.0 di Visual Basic, i VBX sono stati sosti- tuiti dai controlli OCX, basati sull'inter- faccia OLE, e quindi più in linea con le tecnologie standard di Windows. Con- temporaneamente sono stati aggiorna- ti i vari CDK, che sfruttavano le versio- MCmicrocomputer n. 177 - ottobre 1997

Transcript of Microsoft Visual Basic5.0 · Costruzione di ActiveX · Primi ... · di Francesco Petroni Microsoft...

di Francesco Petroni

Microsoft Visual Basic 5.0 ·Costruzione di ActiveX ·Primi eserciziGli obiettivi di questo articolo sono due. Il primo è quello di esplorare le

funzionalità presenti nel Microsoft Visual Basic 5.0 dedicate alla

realizzazione di componenti attivi. Si tratta di funzionalità del tutto

nuove, in quanto non erano presenti nella precedente versione di VB. Il

secondo è quello di cercare di fare un po' di chiarezza attorno al termine

ATTIVO, oggi diventato di moda e quindi associato un po' a tutto.

Si sente parlare di Componenti Attivi, di Controlli ActiveX, di Server

Attivi, di Documenti Attivi, di Pagine Attive e di altro ancora. Gli ambiti in

cui sono usati questi termini sono non solo Internet (il vero responsabile

di tutto quello che sta succedendo), ma anche il Workgroup Computing

e il Personal Computing. Parleremo soprattutto del Visual Basic 5.0, del

quale in questo stesso numero presentiamo la prova. Anzi questo

articolo costituisce un approfondimento di una delle novità più

importanti del VB5, la possibilità di realizzare componenti ActiveX.

Piccolo riassuntodelle versioniprecedentiNella storia della Microinformatica ilprimo esempio concreto di riutilizzabi-lità di componenti è rappresentato pro-prio dal Visual Basic, la cui prima ver-sione già sfruttava i controlli VBX. Losviluppatore VB poteva inserire nella

338

propria applicazione controlli VBX chesvolgessero funzionalità specifiche,che venivano in tal modo facilmenteaggiunte all'applicazione. I controlliVBX hanno avuto un enorme succes-so anche per il fatto che sono statiadottati in molti altri ambienti di svilup-po. Sono sopravvissuti fino alla versio-ne 3.0 del VB.All'epoca la Microsoft mise a disposi-zione di chi voleva sviluppare propricomponenti VBX, e quindi non voleva

solamente utilizzarli, uno specificostrumento di sviluppo che si chiamavaControl Developer's Kit (CDK), e che sibasava comunque sull'uso del linguag-gio C.Successivamente, con la versione 4.0di Visual Basic, i VBX sono stati sosti-tuiti dai controlli OCX, basati sull'inter-faccia OLE, e quindi più in linea con letecnologie standard di Windows. Con-temporaneamente sono stati aggiorna-ti i vari CDK, che sfruttavano le versio-

MCmicrocomputer n. 177 - ottobre 1997

Projt'cll PlOlecl Properlles EJ

Projacl~Context !D:

lo

Am<.Ce1

rlJ~!lt\:llndedE~

r ThtI'ooperObjf'l;l:

r. 1hreoò P9Jli ~ !l>t'eoò,

Figura 1 - MS Visual Basic 5.0 - Scelta del tipo diProgetto ed impostazione delle Proprietà del Pro-getto.Scopo principale di questo articolo è quello diesplorare la più importante tra le nuove funziona-lità disponibili in Visual Basic 5. O, quella che ser-ve per costruire, in varie forme, componenti attivi

riutilizzabili in variambiti. Con VB5si possono realiz-zare eseguibiliEXE, librerieDLL, documentiattiv/~ componen-ti ActiveX. che siconcretizzano inun file con desi-nenza OCX Mol-te delle attivitàinerenti la costru-zione di tali com-ponenti sono fa-cilitate dalla pre-senza di efficaciWizard. Facilita lacos truzione deicomponenti an-che la possibilità

di lavorare su più progett/~ il primo per creare ilcomponente ed il secondo per testarlo. Anchequesta è una novità di Visual Basic 5.0. Qui ve-diamo la Box nella quale si sceglie il tipo di pro-getto che si vuole realizzare e quella nella qualesi inseriscono le impostazioni "fini" del progetto infase di sviluppo.

Anche Microsoft Internet Explorer è unHOST di ActiveX. L'attivazione avvienetramite il Tag HTML <OBJECT>. TaleTag fa riferimento ad un controllo iden-tificato tramite un ID. Se il controllonon è presente sul sistema occorre in-stallarlo, ed in questo caso si utilizza laspecifica CODEBASE, interna al TagOBJECT, che in pratica permette di re-ferenziare un ActiveX da un URL.In questo caso il componente mancan-te viene scaricato, installato ed esegui-to. I file scarica bili sono quelli con desi-nenza DLL, EXE e OCX, oppure CAB,che sono i file compressi autoinstalla-bili, ed INF, che sono i file contenentile specifiche di installazione. I file ven-gono scaricati nella cartella Win-dows\Occache del sistema Client, e lìrimangono.Su questo, che è forse l'aspetto piùcritico dell'attivazione di Internet, tor-neremo tra un po', dopo aver chiarito

P \,l:>grede ActiveX Controls

P ReqUreueer-Key

Ifroject Desa<>tJon:I Pri'no Esercizio di Costruzione cl un ActiveX

-·'1_I~lc_1Projacl1Yl>e: :ttart\cl Objact:

IAttivex Control :::J I(None)Slandard EXEAttiveX EXEActiveX DlL

ActiveXDll

VBEdit

ActiveX EXE

~••VB Application

WIz••.d

ActiveX Docl..ll"lel1t ActivOll

ActiveX Contro!

5, il Visual J++,e l'ActiveX ControlsFramework (che però non è visuale).Visual Basic 5 permette sia di sviluppa-re ActiveX sia, in quanto HOST, di uti-lizzare controlli ActiveX. Questa possi-bilità facilita la fase di sviluppo in quan-to i nuovi ActiveX che possono esseretestati direttamente "sul posto".

Figura 2 - MS Visual Basic 5.0 - Il nostro primoobiettivo: la pesca dei dati con il componenteLista3.Vogliamo costruire un componente attivo (ilcui nome sia LlSTA3) che possa servire per"pescare" dati da un qualsiasi database, dati dautilizzare nelle più svariate situazioni. Cerchia-mo di capirne il funzionamento osservando lafigura: in alto: abbiamo due TextBox nelle qua-li d/gitiamo il nome del Database ed il Record-set desiderato (una Tabella o una Querv,espressa in forma di comando SQL). Il pulsan-te Esegui impostacome Proprietà Basee Dati del nostro nuo-vo oggetto il conte-nuto delle due boxed attiva un Metodo,il cui nome è Attiva,che scatena il riempi-mento della lista a trecolonne. In cima allalista a tre colonne ab-biamo piazzato tre al-tre TextBox (che fan-no parte anch 'essedel nostro compo-nente) per vedere leinformazioni del sin-golo elemento sele-zionato. Il pulsanteScegli trasferisce letre nuove Proprietà(che si chiamano Pro-gr, Matricola e Nomi-nativo) dal controlloall'applicazione che losta usando.

ni via via più aggiornate del C, C++,del Visual C.Il maggior difetto dei controlli OCX,che li rende praticamente inutilizzabiliin applicazioni sviluppate per Internet,è costituito dal fatto che sono sempremolto voluminosi in quanto necessita-no, per poter funzionare, del supportodi voluminose librerie specifiche, qualila MFC, la Microsoft Foundation Class.Gli ActiveX, che conservano la desi-nenza OCX, invece sono più leggeri (equindi più facilmente scaricabili via In-ternet) dei vecchi controlli OCX, inquanto è stato ridotto il numero delleinterfacce COM supportate. La Micro-soft inoltre mette a disposizione deglisviluppatori strumenti alternativi per losviluppo di ActiveX, non più solo C e isuoi derivati, ma anche il Visual Basic

MCmicrocomputer n. 177 - ottobre 1997 339

Trtt=tZ'!I'::==:a~ods ~ ~ .::~\ Figura 5 - MS Excel 97 - Utilizzo del con-

1~'1.11- g I ~ Q;b @ " I .., c-. • " • ~ I~ !li' " :<' I lì)trollo ActiveX Lista3: il listato VBAAnalizziamo ora il codice VBA scritto per. le. ::J le••• ::J Excel. La situazione è mostrata chiara-

}lJ ~1!6 Dlm r -: mente dalla ProjectView, in cui notiamo8 ~ _ojecO (••02••••) Pnvate Sub Cl ClickO la presenza degli oggetti Sheet e Thi-a Mlc:rosoftExcelObjects I TI •• "tl:\KKKX\DATI9?lIDS" sWorkbook, di Excel, della Form UF (una

@)Sl>eetl(O«;) T2 •• "SELECT • 'ROPI' PtRSoor" UserForm) e di un Module che potrebbe'!)TNsW<wlllook PlyL1~t. Bas~ •• T1e --Forms JtlyL1~t.. Dat.1 •• T2 contenere le varie procedure. In realtà

~l.F PfyL1:!1t.Attiva tutto il codice è inglobato nella Form ed8 •••••••• End Sub in particolare le due uniche routine sono

4_""', Pnvate Sub C2_ClickO associate agli eventi Click sui due Pulsan-Cell:!l(r, 1) • MyLi~t.,Pr09r ti. Quella sul primo pulsante imposta leD§m. .1 C~lll'(r, 2) • lIyLi~t.,JIl11t.ricela

proprietà Base e Dati dell'oggetto Lista3ICIC"""""""-on 21 C~lls(r, 3) • !lyL1st,Nom1nat.ive

~lc~1r • r + 1 (che nella nostra applicazione abbiamo

End Sub chiamato MyList, avendo impostato laCI J Pr l.V8tl! Sub USl!rForm_Activat.l! () proprietà Name del componente) ed ese-

),cCMer«or r • ActiveCell. Rev gue il metodo Attiva. Il Click sul secondo,",o_ ,•... End Sub""!<Colo< O~& pulsante trasferisce sulle celle del foglio ilacl<Style l-fo&"<SO_ valori delle proprietà Progr, Matricola e""~ ,.... Nominativo. La variabile R serve per ge-....",., ESOQUl - stire la riga corrente sulla quale trascrive-cri:roITipText

.:::J .f re i dati scelti .w~. ''''- '"' J1.!.Lj

Cosa si intendeper attivazionedi Internet

cosa si intende per attivazio-ne di Internet.

Cercando di semplificare undiscorso che oggettivamen-te è un po' complesso, inquanto fa riferimento all'ar-chitettura ed anche alla sto-ria di Windows, possiamoaffermare che ActiveX è uninsieme di tecnologie che

permettono di inserire un contenutointerattivo nelle pagine WEB. Le tec-nologie di base sono tre.La prima è costituita dagli ActiveXControls, che sono i successori deiVBX e degli OCX, di cui abbiamo appe-na parlato e che costituiscono l'argo-mento principale del nostro articolo.La seconda tecnologia consiste negliActiveX Document. Si tratta di parti-colari estensioni che rendono normalidocumenti compositi (per intenderciquelli che si realizzano con i prodottiOffice e che contengono oggetti OLErealizzati con altri prodotti OLE Server)di essere attivati interamente, comeun oggetto unico, dall'interno di unambiente Client.Il primo esempio di tecnologia Acti-veX Document è costituito dal Rac-

coglitore di Office, chenon produce file proprima semplicemente rac-coglie ed assembla do-cumenti realizzati congli altri componenti dellasuite.Il secondo esempio ècostituito proprio da MSInternet Explorer 3.0che è un contenitore didocumenti attivi. Comenoto può visualizzare siadocumenti HTML, siadocumenti DOC, scritticon MS Word ed attivi,sia qualsiasi documentorealizzato con qualsiasiprodotto, ma dichiaratoattivo.Il terzo esempio sarà

Figura 3 - MS Excel 97 - Utilizzo delcontrollo ActiveX Lista3.Utilizziamo lo stesso componenteActiveX mostrato nella figura prece-dente questa volta in un 'applicazioneMS Excel 97. Nell'ambiente IOE diMicrosoft Office 97 abbiamo realizza-to una Form che contiene due casel-le di testo, due pulsanti ed il nostrocomponente Lista3 (sinonimi di com-ponente sono Controllo e ActiveX).La definizione del Database e del Re-cordset è analoga a quella utilizzatanell'esempio precedente. Quando sifa click sul pulsante Scarica vengonoscaricate le tre proprietà, Progr, Ma-tricola e Nominativo, direttamentesulle celle del foglio attivo. In praticaabbiamo realizzato un 'applicazioneche consente di scegliere i dati desi-derati in maniera non preordinata. Seci fosse una regola di selezione con-verrebbe costruire una Query.

x

...!o'x'il ~ ~1~'..tJil ,,'~I

- -- ~embe;;oru;;a3' - -<>AIliva

BaseDatiMatricolaNominativOProgr

IClass Ult83MerItletOf~

Ic~1

2.Z00.000 .••.

5.'ZO.0003.233.0002.804.000 -J6.167.000L 160.000S.811.0007.0Z.000 ~

2668 DI .urCILIS

2674 !U.SITTIZ675 VbJTURI26eo l!A»YUI>tHIZ6e4 VIOU2neAlABBAZ101 tIRIZ71Z CUALTlIU

Que.to • un Con"""o AcIiveX~ Ic.ALlttI 16.128.000

I O'\IOOOC\DATI97."""

I saECT· FROM PERSONE

Ilv_CoroOoI<o CortroIoarteplmaiTmagi'leWang ~o ConlIoIodgil:aiua2Xlne i'rfnagineWango CoMoIo Mictos:oft Web Browser JO CorIooIo modiico""""'" W"",O CI",,~ R""", Corbol4.GO D8G,id Comcl f Show IlIIlEo02.Liol03 r Selectedlt_O..."O M•• queeOl Objecl _ .

~tcrwrwt<Controi I ~ "iV"':ii.l tè_O'IieCorbolObjecl IEo02

[ LocaIion C:\W1NOOWSISYSTEM""",<ÌO.OCK Irel'SS'SO <glooaIS.~ Es02pp~Imij

378

1115

2e6283274

DolI

••A

Figura 4 - MS Excel 97 -Utilizzo del controllo Ac-tiveX Lista3Una volta generato edinstallato, il controlloOCX diventa patrimoniocomune dell'intero am-biente Windows. Il mo-do più semplice per uti-lizzarlo è quello di "pe-scarlo" dalla finestra Ad-ditionai Controis, pre-sente in qualsiasi pro-dotto programmabile"ad oggetti", ed il meto-do più semplice perprogrammarlo è quellodi aiutarsi con la fine-stra Object Browser (Vi-sualizzatore di Oggetti!che mostra, puntual-mente, proprietà e me-todi del componente selezionato. Da notare, in quest'ultima Box, la simbologia che distingue le Pro-prietà dai Metodi.

I123•56789101112131.15161718

~

340 MCmicrocomputer n. 177 - ottobre 1997

jAyoid tW\Ju~1 vislonNEW Surround Vìdeo adds ~d'gr"•...•"" •..•••••.._"0'''. t •• vn, ••.W •.loo"'>l'P.

I

Figura 7 - MS Visual Ba-sic 5.0 - Immagini dai Wi-zard.Riguardano la creazionedei componenti attivi dueWizard, quello che guidanella cos truzione di unActiveX e quello che con-verte un 'applicazioneVB5 in un documento at-tivo. Si tratta owiamentedi procedure molto co-mode, ma che vannousate solo da chi sa esat-tamente quale sia l'obiet-tivo da raggiungere e chemagari lo saprebbe rag-giungere anche senzausare il Wizard.

It countsUPOATEO BitOtt 50ft CountV .OCt hu onlsimple, unfW funct.ion: il !'(:otM thenumber ofvisiton lO your sit •.

Suite S'uece ••PREMIERE ProloVi,,,, Activ,X Component.Suile fn.b.afu thru mus\-havt con1tots:Data Explorer, OataT abl., Uld WIOX.

hlghllghts

controt of tha WMk

trolli, tra quelli presenti sul sistema, esi gestiscono Proprietà e Metodi delcontrollo. Le Box sono la Insert Con-trols e la Object Browser.In figura 5 vediamo il codice del pro-gramma, scritto in VB5 per Excel 97,che permette di usare il controllo. An-che in questo caso per la descrizionedel listato vi rimandiamo alla figura ealla sua didascalia.

Come documentarsiMentre, come abbiamo appena visto,è relativamente facile usare un con-trollo ActiveX, in quando esistono

[cIt ..•

Activex.com

Browser EnhancemenlSOollce AppllcalionsTools & VIlhllesSlte DevelopmentApohcallOD QeyelopmeotDatabase ConneclMl'fControl peyglopmenl

Contro. Librarypop~"ewnewest titlespick~

Quick Se:nch

I

S*t the options ycu wcdd h to lJSe.

r 1:._0<1 "'oId_'

I->I~

•Jo!n nowEREB

(ACTlVEx.cOM)

[le !l_o !(........ VJi P!I/olli 1

]1tlcIrizzo1"""_._comc~ @In_del"''' @lo••••

Add VOI' own Propertie$, Methods, "Events yoo ~ forycu mrtrol. These.ve fl'll!lt\'lbers lIlique to yox controt andones that: you have not alrMdy selected InprevIous stflps.

sta3 ed è presente nel file ES020CX.Il nostro controllo serve per pescare,in maniera non preordinata, dati dauna Tabella di un Database. I dati pe-scati, o meglio scelti uno ad uno, de-vono essere resi disponibili nell'appli-cazione che ospita il controllo (VB 5.0ed Excel 97).Il funzionamento dell'oggetto, che in-ternamente usa comandi DAO, è de-scritto nella didascalia di figura 2.E' chiaro che una volta realizzato l'og-getto (oppure una volta disponibile, serealizzato da altri) è facilmente utilizza-bile, in quanto l'ambiente Host dispo-ne delle classiche Box (le vediamo infigura 4) con le quali si scelgono i con-

Figura 6 - www.activex.com - /Isito Internet dedicato agli Acli-veX La Tecnologia ActiveX è unatecnologia trasversale, in quantoriguarda tutti i prodotti di svilup-po che operano all'interno del-l'ambiente Windows, per cui ilsuo approfondimento può partireda ciascuno di questi prodotti.Noi partiremo dal Visual Basic 5.0che, come detto, per la primavolta permette di costruire com-ponenti di questo tipo. L'argo-mento ActiveX, pur essendo ab-bastanza nuovo, è molto docu-mentato. Viene ben trattato neimanuali del Visual Basic 5 ed esi-stono, nel catalogo MicrosoftPress, numerosi testi su tale ar-gomento. Su Internet sono dedi-cate ad ActiveX molte pagine delSito Microsoft e molti siti riserva-ti agli sviluppa tori.

Nella prima figura dell'articolo abbia-mo inserito due Box, quella che appa-re quando si esegue il comando FileNew Project, e che presenta una deci-na di "varianti", e quella che mostra leproprietà del progetto in cui si control-la, o al limite si imposta, il tipo di pro-getto da sviluppare. E' chiaro infattiche il fatto che si crei un eseguibileEXE, oppure una libreria DLL, oppureancora un controllo ActiveX, non puòche essere una scelta iniziale, da farequando si inizia un nuovo progetto.Il nostro obiettivo è quindi quello direalizzare un ActiveX, che si concretiz-za, come detto, in un file OCX, riutiliz-zabile in altri programmi.Partiamo dalla fine vedendo subito co-me funziona il controllo ActiveX chevogliamo costruire. Lo vediamo, in fi-gura 2, inserito in u'n'applicazione VB,ed, in figura 3, inserito in un'applica-zione Excel. Il nome del controllo è Li-

L'ambiente di sviluppoVB e la scelta del tipodi attività

costituito, come già noto a moltidi voi, dal Desktop della prossi-ma versione di Windows 95 (an-ticipata in MS Internet Explorer4.0) che rende lo stesso desk-top un contenitore di documentiattivi.La terza tecnologia, ActiveXScripting, definisce le caratteri-stiche dei prodotti Host, quelliche sono in grado di eseguireprogrammi e documenti attivi.Ad esempio MS Internet Explo-rer è un Host ActiveX Scriptinge dispone di un motore per ese-guire script sia in linguaggio VB-Script che JScript.Rimanendo strettamente in am-bito Microsoft, non si può non notarel'omogeinizzazione dei vari sottinsiemidel linguaggio VB, con VB5, VBA e VB-Script, e soprattutto l'omogeinizzazio-ne dei prodotti che sono tutti in gradodi condividere i vari componenti.Torniamo all'argomento principale delnostro articolo, la sviluppo di compo-nenti ActiveX con VB5 e il loro utilizzocon altri prodotti ed in altre situazioni.

MCmicrocomputer n. 177 - ottobre 1997 341

strumenti che ne aiutano la gestione,non è altrettanto facile sia progettarliche costruirli.Nel primo caso la difficoltà sta nel de-cidere quale parte di attività vada as-segnata al controllo, e quale lasciataal programma host, in modo che poiconvenga effettivamente riutilizzare ilcontrollo anziché scrivere un nuovocodice.Nel secondo caso la difficoltà sta neldover pensare in termini di Proprietàdel controllo, in termini di Metodi su-biti dal controllo, in termini di Eventiche si scatenano sul controllo. In pri-ma approssimazione si può affermareche le Proprietà del controllo equival-

gono a Variabili che si possono impo-stare oppure leggere, i Metodi equival-gono a Procedure che vengono ese-guite. Per gli Eventi è un po' più diffici-le trovare un parallelismo.Insomma il controllo ActiveX va "pen-sato" in termini di Proprietà, Metodi edEventi e qui sta la difficoltà, perlome-no inziale, per chi non è abituato a la-vorare per componenti.Per quanto riguarda la documentazio-ne sono fondamentali i manuali del Vi-sual Basic 5.0 (che descriviamo nellaprova pubblicata in questo stesso nu-mero di MC), i tanti siti Internet dedi-cati a tale tecnologia (figura 6), i testiMS Press o di altre case editrici tecni-che.Anche i Wizard (ne vediamo esempinelle figure 7 ed 8), che aiutano il pro-

grammatore nelle fasipiù onerose del lavoro,. .possono servire a capirei meccanismi su cui sibasa la ProgrammazioneObject Based.Infine, prima di vederecome si fa a costruire unActiveX (dopo aver vistocome si fa ad usarlol, ri-cordiamo che la tecnolo-gia ActiveX è ancora agliinizi. Diventerà ancorapiù importante, special-mente in un'ottica azien-dale, dove le applicazionisono "Mission Criticai",quando sarà attivo il Ser-ver. Sarà, in altre parole,solo il Server a contene-re, in copia unica, protet-ta, sicura, i componenti,

Figura lO - MS Visual Basic 5. O - L'appli-cazione che crea l'ActiveX.Dopo aver visto come si usa, lavorandocon Excel, il nostro ActiveX, vediamocome si costruisce, lavorando ~on Vi-sual Basic 5.0. Nel suo ambiente di svi-luppo vediamo in alto a destra la ProjectWindow, che contiene il progetto (il pri-mo dei due, che si chiama ES02) che asua volta comprende due Form, quellache coincide con la parte esteriore delnostro oggetto, e quella che ne mostrale proprietà "Custom". Questa secondaform, che è generabile con uno specifi-co Wizard, è quella che appare quandosi apre la Box con le proprietà persona-lizza te del nuovo controllo. Secondo laterminologia vigente in VB5, si tratta diuna User Form e di una Properties PageForm. Il codice, che riportiamo nel te-sto, comprende sia parti tradizionali, adesempio quelle che fanno funzionare laForm, sia quelle che servono per gestireProprietà e Metodi.

F'""30

F'"

Es02 (E<02.<bo)User Cortrols••••• 16PtopertyPaQeS15 Es02l>!>(Es02l>P·oao)

~ •• 02. (h02.vbp)S Fol'ms

t:1 Es02f(Forml.ftm)

IUst43 UserCortroI

"""""'leat_1lista3

~ CotrQonentsr ~ ~omtho M1aosoftweb•••

xl

x Figura 8 - MS Visual Ba-The•••"" •• _,....'"""""'"" •• o.c.binet sic 5.0 - Il Setup Wizard.~;:n~osoft •• _-",can I vari Wizard di cui ab-

biamo parlato nelle pre-cedenti didascalie (e an-che altri di cui non ab-biamo parlato in questoarticolo) si lanciano dal-l'interno dell'ambientedi sviluppo di Visual Ba-sic. C'è anche il SetupWizard, che invece èesterno, il cui compito èquello di produrre il fileeseguibile 'finale'. Una

_. I variante di questa pro---=--.J cedura (la vediamo nella

figura) è quella che per-metti! di creare un 'applicazione 'downloadabi-le" attraverso Internet. Vengono generati siafile di tipO HTML che file CAB, che contengo-no il materiale da scaricare in formato com-presso. " problema successivo riguarda lemodalità di distribuzione del materiale cosisviluppato (ne parliamo nel testo).

$eparatelU'ltrne ceI*let:s are Il"bd to those on thel'taosoft web••• (_fIod by!ho .dea flo), ••.lo_Iocation •••• """_fvbolow.

.,0 •• "c'L,

ThewtlftUSti yolI pro~ ne (.~) ot 'C:Wt'Aousty..-It...,Iote flo (.••• ) lo -...... tho 1It 01fiestochttb.t. wIh yru~.

~1stt-.protertfttClf~.forYOU'

"""-'7~'\M5W5OIPt""aMC.<bo

rR_thoProje<t

Figura 9 - Dall'ActiveDesktop all' Active Ser-ver.L'attuale tecnologia, egli esercizi che vi propo-niamo nell'articolo, ri-guardano la possibilità diutilizzare componentiche debbono essere di-stribuiti su ciascunClient. In un prossimofuturo, in termini di pro-dotto parliamo di Win-dows NT Server 5.0, l'o-rientamento sarà quellodi far lavorare di più ilServer e meno i Desk-top. Il fatto, ad esempio,che i componenti Acti-veX potranno esser la-sciati sul Server e da lirichiamati all'occorrenzane faciliterà la gestionee la manutenzione.

342 MCmicrocomputer n. 177 - ottobre 1997

Dim DD As DatabaseDim RR As RecordsetDim BV, DV As String

, dichiarazioni

. trasferimento dati dalla Lista nelle TextBox

listato D

risponde alla Box Custom Property delcontrollo.La User Form è invece una Form nor-male, contiene componenti normali eparti di codice normale. Nel nostro ca-so tutto ciò che serve per attivare ilDatabase, leggere la Tabella, riempirela Lista, trasferire i dati dalla Lista alleText Box. Riportiamo le parti di codice"normale"(vedi listato A):C'è poi una parte di codice specificadel controllo ActiveX. Occorre infattidefinire le sue Proprietà, che in prati-ca sono Variabili che vanno impostate,lette, e sulle quali o dalle quali, sposta-re valori, ed occorre definire Metodi,che sono procedure, o funzioni che"movimentano" l'oggetto..Il controllo dispone di due Eventi spe-cifici, utili per le eventuali inizializzazio-ni da eseguire quando si attiva il con-trollo e per le eventuali riconfigurazionifinali(vedi listato B).Il Metodo ATTIVA può essere unaFunction oppure una Sub. La sua pro-grammazione è standard. In pratica èsemplicemente il fatto che stiamo la-vorando su un ActiveX e non su un'ap-plicazione standard che traduce laFunction in un Metodo (vedi listato C).Qui vediamo invece la definizione del-le proprietà. E' fondamentale capire ladifferenza tra le proprietà di scrittura,quelle che servono per trasferire i dativerso il controllo, e quelle di lettura,che servono, al contrario, per riportaredati dal controllo all'applicazione. Nelnostro caso quelle di scrittura sonoBase e Dati (l'istruzione è let), e ser-

vono per riporta-re sull'ActiveXDatabase e Re-cordSet di inte-resse. Quelle dilettura (istruzio-ne Get) servonoper leggere icampi (ricordia-mo che abbiamousato una Listasemplice, nellaquale abbiamosimulato la crea-zione di tre co-lonne) della rigascelta nella Lista(vedi listato D).Ci fermiamo qui.Non ci interessa-

del

scorri-

listato B

listato A

listato C

definizione

svuotamento

fine

apertura

, record succes-

"#,###"), 12)riempimento

, creazione del Re-

scorrimento del Re-

• lettura dei campi di

• evento finale del controllo

• evento iniziale del controllo

Public Property Let Base(ByVal vNewValue As Variant)BV = vNewValue

End Property

Public Property Get Progr() As VariantProgr = L1.ListIndex + 1

End Property

Public Property Let Dati(ByVal vNewValue As Variant)DV = vNewValue

End Property

Public Property Get Matricola() As VariantMatricola Left(L1, 4)

End Property

Public Property Get Nominativo() As VariantNominativo Trim(Mid(L1, 6, 12»

End Property

15»

o

DV = 1111

Private Sub UserControl_Initialize()BV = "Il

Private Sub UserControl_Terminate()• non utilizzato

End Sub

End Sub

KK = KK & Left(RR!cognome + Space(10), 12)KK = KK & Right(Space(10) + Format(RRlimporto,Ll.AddItem KK

della ListaRR.MoveNext

Private Sub L1_Click()D1 Left(L1, 4)D2 = Mid(L1, 6, 12)D3 = RTrim(Mid(L1, 21,

End Sub

Public Function Attiva()del metodo ATTIVA

Set DD = OpenDatabase(bv)DB

Set RR = dd.OpenRecordset(dv,dbOpenSnapshot)cordSet

L1.Cleardella Lista

Do While Not RR.EOFcordSet

KK = RR!cod &: " ••interesse

sivoLoop

mentoL1.ListIndex

End Function

anche se i Client che li utilizzerannosaranno migliaia (figura 9 per prome-moria).

In figura 10 vediamo il nostro compo-nente in lavorazione. Comprende dueform, una User Form, che è la parteesteriore dell'applicazione e la Pro-perty Form, che può essere generatada un Wizard e che contiene le varieproprietà, leggibili ed impostabili, delnuovo controllo. La Property Form cor-

Andiamoun po'più a fondo

MCmicrocomputer n. 177 - ottobre 1997 343

va costruire un controllo com-plesso, ma solo verificarequanto il fatto di costruire uncomponente riutilizzabile com-plichi il nostro lavoro con VB.In definitiva lo sforzo in più èpressoché irrilevante, speciequando il componente (comenel nostro caso) assomigliamolto ad una comune sotto-procedura.Anche da un punto di vistaconcettuale lo sforzo è ridotto,quando si siano ben capite leequazioni Metodo=Procedurae Proprietà=Variabile.Degli Eventi, che non abbiamotoccato, e che probabilmente

ci complicheranno la vita, parleremoun'altra volta.Va infine detto che buona parte del la-voro si può far svolgere ai numerosiWizard, che, ad esempio, possonoaiutarci nella creazione delle varie Pro-prietà e dei vari Metodi.

Ed ora attiviamoInternetDopo aver visto come sia possibile,con VB5, sviluppare un controllo Acti-veX e come sia facile usarlo in un'ap-plicazione scritta con Visual Basicstesso oppure con Excel (anch'essoHost di ActiveX), passiamo a parlaredi Internet ovvero di come sia possi-bile sviluppare qualcosa, un compo-nente oppure un'intera applicazione,che renda attiva una comune paginaHTML.Per prima cosa realizziamo con VB unprogramma semplicissimo (lo vedia-mo in figura 12). Questo consiste inuna Form con una TextBox e' tre pul-santi. Il click sul primo riempie laTextBox con la scritta "Prova MC", ilclick sul secondo pulisce la Text e ilterzo fa terminare l'applicazione.Se si dichiara subito che si tratta di unActiveX Control si lavora direttamentesu una User Form. Si inseriscono og-getti, si scrivono routine, come in unprogramma normale.In questo caso non vogliamo definireProprietà, Metodi, Eventi, vogliamosolo far funzionare il codice sottostan-te i pulsanti.

x

x

Figura 11 - MS Visual Basic 5.0-L'applicazione che usa l'ActiveX.Il risultato dell'esecuzione di que-sto programma lo abbiamo vistoin figura 2. Poiché siamo in fasedi test vediamo, nell'ambienteIOE di VB5, ambedue i due pro-getti, quello che crea e quello chetesta il nuovo controllo OCx.Ouesta possibilità, anche questaè una novità del Visual Basic 5.0,è molto comoda proprio quandosi sviluppano componenti chevanno Via via provati. Notiamo an-che la semplicità del codice ne-cessario per usare il componenteed il fatto che lo stesso codicesia del tutto analogo a quelloscritto nella Macro Excel.

Figura 13 - MS FrontPage 97 - Creazione diuna pagina HTML checontiene il componentePR9.Per creare la paginaHTML "attiva' usiamol'Editor di MS Front Pa-ge, utile non fosse altroche per la funzionalitàche permette di inseri-re controlli ActiveX. No-tiamo anche come, unavolta inserito il nostrocontrollo, sia attivo il ta-sto destro del mouse,che apre il Ouick Menuche permette di vederele proprietà dell'ogget-to. Purtroppo non c'èuno strumento tipoObject Browser e l'e-ventuale programma-zione del controllo vafatta 'a manina'.

..:J

..:J

·!e1xl.d!;1lx' ..:J O~~

PR9 (PR9.vbp)

"""'_"il UC9(UC9.ctl)- ~ Projectl (Projectl)

d) Forms

~ ''''''''(fumI)

o~l15E<02 (E>02. vbp)

lJserCtw'ltrois"il 1",.J(E"'2.ctl)Property P"OM

i5 E"""" (!s02W.pao)8 ~ bOlp (Es02.v,,")

8 Forms~ Es02f (fuml.fnn)

TagiaCopioIncoIo

CI•••••• ..- Sa\oI ...f'looriot.pogilL ..

_Gf..IM.;

I ~ ij,glA/Ob1:.J-lP" (O f::)I§lJUJ;00..:1ri)~-....18lI~1l"il

Privat.e Sub Forra LoadOT1 • "d:\kkkk\dat.i97.md.b"T2 • ":!!lelect. • trom per:!!lone order

End SubPnvat.e Sub Cl_Cl1ck()

"yList..Ba~e • T1JlyLi~t..Daci • T2JlyL1sC.J.t.c1va

End. SubPrivaCe Sub C2_Cl1cJt()

tl1 • JlyLisC.ProçrrD2 • PlyLisC.llatr1colaD3 • "yL1~t. nom

End Sub tSçmllllllll ••• ~li' Obje"tR Parentdi Progr• Setfocus• ShowWhatsThls

rR Tablndex

Me Prova MS VB 5,0

Questo è un componente AetiveX

~ • ~. • • __ • _. _ ~ r/.

Pigiare itre pulsanti per provare

".-------- --------- ---.-- --- ------- - -------~

..:J

i~~~

JI1J ~CgDri)~-....18lI~

'f

xl!l fio I!l"*" Y""'" 1- ,_ ~- TfboIa'ileob' 1 .aaJ~D~"I a:il ~ 1b l't'J e l"" c-. 1~.jo I Il lI!Il ~ 1"1" .• [)o IWlltl I

IN"'""" 3liT•..••N ••• R"""" 3 A.-lfGI J 1~1~.'lIII=;;=~~1

Figura 12 - MS VisualBasic 5.0 - Costruzionedi un semplice compo-nente ActiveX. Nome:PR9.Ci trasferiamo armi e ba-gagli su Internet. Il no-stro obiettivo è quello direalizzare un 'applicazio-ne VB5, semplicissimache più semplice non sipuò, salvarla come com-ponente ActiveX, provar-la in un 'altra applicazio-ne VB (l'istantanea im-mortala questo momen-to) e poi utilizzarla all'in-terno di una normale pa-gina HTML. Un click sulpulsante Riempi riempiela TextBox con la frase'Prova Me, mentre unclick sul pulsante Svuotala ripulisce.

344 MCmicrocomputer n. 177 - ottobre 1997

_Iq'x'"

InCoIegamorIj

Ad esempio nel primo caso (PR9) ilpulsante che esegue la fine del pro-gramma (istruzione VB Unload Me)non funziona se usato in un ActiveX.Nel secondo caso perdiamo del tuttoil concetto di Resize, che esiste inuna Form VB, ma non esiste in unapagina HTML.In sostanza per sfruttare bene le enor-mi potenzialità di VB5 ed in particolarele sue interessanti sinergie con Inter-net bisogna conoscere molto benetutti e due i... mondi.

@Carca

.1

I·Q,'I.!HM:ii.;g;.I"'!ifio Modfioa ••••• l(htlt1><hrad>(tit1~>HC Prova "5 UB 5. D</title)

"'P'..,..••• ..,..."'"'MC;:-;;"P'..,..••• ..,..."'"'NC;:-;;"P,-••• -."'"'MC;:-;;"P,- •••-I</head)NC Prova Me ?fova MC P,ova Ne (bOdy bgcolor •..•IFFFFFF")PioveNe p,o'VaNe PtovaNC P'ov <p><Font size·"_"><S>t«: Prova MS UB 5.0Ne PIOva NC P,ova NC Prova Me </B></font></p>P'ova NC P,ova Ne P,ova MC P'OY <p>Questo ~ un cOllaponente ActiueX</p>NC P,ova NC P,ova MC P,ova MC <p><objectProva Me Prova NC Prova MC P,oy id."ProuaHC"~I~v:,:ca~I~v:f:ca~1~:'NCa~f~ classid-NC Prova NC Prova NC P'ova NC "clsid :D.93U243-F2CF-11DO-882.1f-44"S53S40000"

~

codebase·''http://actiuesru/proueasp/pr9 .ocx'·A" e.M..... I border-"O" width·"329" height·"2B6">

l8ITIPI ~ F'ne </object></p>-- <p>Pigiare i tre pulsanti per prouare</p>

(/body>(/ht~l>Pigiare i tre pu1sU'lti per provare

Me Prova MS VB S.O

Questo è un componente Ac1iveX

I!ll:lII/I!m::IiIL1lEl!llcm ••••••••••••• II:;:[WJ><fle Modfoca ~"""". Vii "'flom l

n ç, ~ o @ aJ @ I!J. ~ li!, ~. [1jIrdriz:zo I~tp:llactiveav/proveasplmcpfoval.h:m

Pnva~ Sub C2_Cl1ck(), "CIS: ScllleJIode • 3

. l • ScaleV1dth - 100: h - ScaleHe1Qht., i .•D: j .•o: x • l: y • 1~: st.: PSet. (1, j), RGB(O, 122" (x + 11,122" (y + l) I

Dolvent.sIt 1 > l Then x .• -1: Do[venuH j > h Then y • -1: Do[vent.sIt' 1 < o Then x • l: DoEvenuIt j < o Then y • 1: Dolvent.s

-: 1 • 1 + x: j • j + y-; GoTa st.:

: 5 End Sub

Figura 14 - MS Inter-net Explorer 3.0x - Uti-lizzo, in una paginaHTML, del componen-tePR9.Salvato il file MCPro-va.HTM lo possiamovedere con InternetExplorer. Possiamoanche utilizzare il con-trollo ActiveX agendosui due pulsanti che, inpratica, rendono attivala pagina. Il terzo pul-sante invece produceun errore. Contiene l'i-struzione UNLOADche funziona in un 'ap-plicazione VB, ma nonin una {Jagina HTML.

Figura 15 - MS VisualBasic 5.0 - Esaspera-zione del concetto diActive Document .Abbiamo realizzato unprogrammino con Vi-sual Basic, del qualepotete leggere il lista-to nella finestrella inmezzo alla videata, eche consis te in unaForm con tre Pulsan-ti. AI click sul secon-do dei tre, viene ese-guito il codice che ge-nera una linea cherimbalza sui quattrobordi della Form,cambiando via via co-lore. L'unità di misuradella Form è il Pixel(proprietà ScaleMo-de=3) e nel listato c'èl'istruzione DoEvents

che permette di intercettare il click sugli altri due pulsanti Pulisci e Stop. Lanciando il Wizard ActiveXDocument Migration viene generato. gratis, un documento attivo immediatamente utilizzabile all'inter-no di un contenitore di documenti attivi, come il Binder di Office o il Microsoft Explorer. Estremizzan-do, e tacendo alcune considerazioni che comunque dovremo fare, possiamo affermare che un'applica-zione VB è potenzialmente anche un 'applicazione Attiva per Internet.

fio Modfioa Y"- Vii "'§10m l

ç, ~ ..J DIrdiebo A ( ~ A(lgt')l'n8

-'-"'-'"Ogge.tti.eIezionati:l

articoli approfondiremo il problemadella distribuzione "sicura" del mate-riale.Per finire vi mostriamo come sia faci-le prendere un'applicazione Visual Ba-sic e trasformarla in un'applicazioneInternet (in figura 15 vediamo l'appli-cazione ed, in una piccola finestrella,il suo listato VB originario). Della tra-sformazione, in questo caso si parteda un programma VB e si ottiene unDocumento Attivo, se ne occupa unWizard.E' chiaro che non può essere tutto co-sì semplice.

lndrino jrlle:/le:\lib5O\docrinbf.vbd

CoIegamorIj @ Il megio delWeb @ o•••.•f' '.'';' /

Chiamiamo il progetto PR9.VBP e laForm, che costituisce il controllo, lachiamiamo UC9.CTL. Per provare ilfunzionamento del controllo ActiveXbasta chiudere l'User Form e creareun nuovo progetto, normale, nella cuiForm possiamo inserire il nostro Acti-veX in lavorazione, che è già disponi-bile nella Toolbox.Lanciando il secondo progetto si puòverificare il funzionamento del control-lo, il quale dispone comunque di unaserie di proprietà standard.E' molto importante, lo abbiamo giàdetto, il fatto che si possa lavorarecontemporaneamente sui due proget-ti e che VB permetta di salvarli ambe-due (con Form, Modules, ecc.) in ununico Project Group.Quando tutto funziona basta eseguireil comando File Make OCX per produr-re il file con il controllo.Ora dobbiamo usare il nostroPR9.0CX in un file HTML.Apriamo l'Editor di MS FrontPage·con il quale creiamo una semplice pa-ginetta in cui, sfruttando il comandoInserisci/Altri Componenti/ControlloActiveX, piazziamo il nostro controllo.Il nostro controllo non prevede Eventi,non subisce Metodi, non ha Proprietàparticolari, oltre a quelle standard.Se andiamo a curiosare tra le pro-prietà standard ne troviamo due moltointeressanti, che ritroveremo in segui-to: la IO che identifica il nostro com-ponente nell'applicazione che lo ospi-ta e la CodeBase che invece identifi-ca il file OCX (vediamo l'Editor diFrontPage in figura 13).Non ci resta da fare altro che provareil funzionamento dell'HTML generatodall"Editor di FP.In figura 14 vediamo MS Internet Ex-plorer con la nostra paginetta ed in unafinestrella vediamo l'HTML relativo.Tutto ruota attorno al Tag OBJECT,che contiene le specifiche IO e Code-Base, che servono per identificarel'oggetto, nel caso ad esempio attivas-se un evento, e per identificare da do-ve scaricare il componente, nel caso ilsistema Client non ne disponesse.E' chiaro che è proprio questo l'aspet-to più importante, in quanto riguardala distribuzione dell'OCX, la sicurezzadel Client, ecc. Per ora ci accontentia-mo del fatto che la nostra applicazio-ne funziona su Internet. In successivi

MCmicrocomputer n. 177 - ottobre 1997 345