Come creare applicazioni che possono
fornire servizi ad altre applicazioni tramite le OLE, creando estensioni in
formato DLL di Danilo Priore
In VB 4.0 è
disponibile nel menù file una voce con la quale è possibile creare DLL. Le DLL
create con VB 4.0 non sono delle consuete DLL che poi si possono utilizzare con
le normali dichiarazioni all'interno di un modulo, sono in realtà delle DLL
Server-OLE. Un Server-OLE non è altro che una applicazione che mette a
disposizione ad altri applicativi degli oggetti con relativi metodi e proprietà,
in pratica delle vere e proprie estensioni per più applicativi. In questo
articolo si potrà vedere come realizzare una semplicissima applicazione
Server-OLE che visualizzerà un form di informazioni, con lo stesso procedimento
è possibile creare applicazioni più complesse. In una qualsiasi applicazione VB
il componente di avvio è solitamente un Form, in un Server-OLE invece si deve
necessariamente partire da una procedura di nome Main. Questa procedura deve
risiedere in un modulo standard e non è necessario che sia presente del codice.
La procedura Main deve comunque esistere e deve essere del tipo Sub, quindi si
dovrà inserire nel progetto un modulo standard tramite il menù Inserisci e
creare una procedura Main.
Sub
Main() End Sub
Visto che
l'OLE-Server che si intende creare dovrà visualizzare sul desktop una finestra
di informazioni si procederà ad inserire nel progetto un form. Alla proprietà
Name del form si assegnerà il nome frmInfo, si imposterà BorderStyle a 3 - Fixed
Dialog e si darà un titolo al form attraverso la proprietà Caption, in questo
caso Informazioni. Una volta messo a punto l'aspetto ed il comportamento del
form, si dovrà inserire dentro di esso una Label ed un CommandButton. Alla label
si assegnerà il nome lblInfo, sempre tramite la proprietà Name, e al
commandbutton il nome cmdOk. All'interno dell'evento Click del commandbutton si
dovrà inserire l'istruzione per scaricare il form stesso. Il codice potrebbe
essere :
Private Sub
cmdOk_Click Unload Me End Sub
Una volta impostato il form si dovrà utilizzare un
nuovo tipo di modulo, il modulo di classe, inserendolo nel progetto tramite il
menù Inserisci. Quello che apparirà a prima vista sembrerà un qualsiasi modulo
standard, ma vi sono significative differenze. Se si guarda la lista delle
proprietà, che si può richiamare tramite il tasto F4, si potrà vedere oltre alla
proprietà Name anche la proprietà Istancing e Public. Se si scorre la listbox
Object, quella presente sulla sinistra del modulo stesso, si potrà notare che
contiene un oggetto di nome Class e che questo oggetto possiede due eventi:
Initialize e Terminate. C'è anche da sottolineare che il modulo di classe è
gestibile come un oggetto all'interno, o all'esterno, dell'applicazione. Per
procedere si dovrà assegnare alla proprietà Name un valore che corrisponderà al
nome del modulo di classe, in questo caso Informazioni. Poi alla proprietà
Istancing si dovrà impostare il valore 2 - Creatable MultiUse e si dovrà fare in
modo che la proprietà Public sia impostata a True. La proprietà Istancing serve
a stabilire se si possono o meno creare nuove istanze dell'oggetto, e se
l'oggetto può essere condiviso da più d'una applicazione. La proprietà Public
serve ad esporre la classe, a renderla disponibile alle altre applicazioni. Una
classe non pubblica, proprietà Public impostata su False, potrebbe essere
utilizzata solo all'interno dell'applicazione dove risiede. Gli eventi
Initialize e Terminate si verificano quando viene creata una istanza d'oggetto o
quando viene distrutta. Per completare l'OLE-Server accorre creare almeno una
proprietà ed un metodo all'interno del modulo di classe. La proprietà ci servirà
per inviare dall'applicazione client del testo al server. Il metodo per far
comparire il form. Quindi si inserirà una procedura di tipo Public Property con
nome Caption, attraverso il menù Inserisci. Questa operazione crea due
proprietà, una di tipo Let e una di tipo Get. La prima serve per scrivere il
valore della proprietà, la seconda per leggerlo. Si dovrà cancellare la
proprietà di tipo Get, in questo modo sarà a sola scrittura. All'interno della
procedura si dovrà inserire l'istruzione per assegnare il valore impostato alla
proprietà nella label contenuta nel form. Il codice dovrà apparire in questo
modo:
Public Property Let
(vNewValue as String) frmInfo.lblInfo.Caption =
vNewValue End Sub
Una volta
completata la proprietà si potrà accertare la sua presenza attraverso il
Visualizzatore oggetti del menù Visualizza. Procedendo si dovrà aggiungere un
metodo, e per farlo si inserirà una Sub di nome Show. All'interno della
procedura si dovrà scrivere l'istruzione per visualizzare il form. Il codice
dovrà apparire in questo modo:
Public Sub Show frmInfo.Show End
Sub
In questo modo la classe
controllerà alcune caratteristiche del form. Dato che il form non può essere
visto e gestito dall'esterno come un oggetto ed invece la classe permette di
essere visibile, verrà creato un nuovo oggetto gestibile dall'esterno che
controlla un form. E da notare che ogni proprietà e metodo sono di tipo Public.
Se tali metodi o proprietà non fossero di tipo Public sarebbero visibili
esclusivamente all'interno del modulo di classe.
Per proseguire si
dovranno modificare alcuni attributi del progetto chiamando dal menù Strumenti
il comando Opzioni, spostandosi poi sulla pagina Progetto presente nella
finestra visualizzata. In Form di avvio si dovrà impostare il valore Sub Main,
in Nome progetto si dovrà impostare un nome idoneo, in questo caso MyOleSvr. In
una applicazione standard questo attributo non ha alcuna importanza, in una
applicazione OLE-Server è assolutamente fondamentale per poter richiamare il
server da un'altra applicazione. L'attributo Modalità avvio non ha alcuna
rilevanza una volta creata la DLL, è invece importante se si vuole testare il
server durante lo sviluppo. Poiché in VB 4.0 è possibile lanciare più istanze
dell'ambiente di sviluppo, è possibile provare un'applicazione OLE-Server senza
averne creato la DLL. In questo caso bisognerà scegliere l'opzione Server OLE.
L'attributo Descrizione applicazione, aggiunge una frase di descrizione al
server. Questo attributo non ha nessuna reale incidenza sul funzionamento, ma
serve per comunicare agli utilizzatori del componente il nome e la versione del
server. Dopo questi ultimi ritocchi si potrà compilare il
progetto. L'OLE-Server per essere richiamato da altri applicativi deve essere
registrato nel sistema. Quando si crea la DLL il VB procederà automaticamente a
registrare l'OLE nel sistema, oppure si potrà utilizzare l'applicazione
REGSVR32.EXE presente nei TOOLS aggiuntivi del VB, distribuiti assieme al VB
stesso. Per verificare che l'OLE-Server sia stato registrato correttamente nel
sistema, basterà lanciare REGEDIT (l'applicazione che permette di editare il
database di registrazione del sistema) e cercare con un Find l'OLE creata,
ovvero la stringa MyOLESvr.
Per usare l'OLE-Server, si dovrà creare un
nuovo progetto VB. Si dovrà anche verificare che nella lista dei riferimenti,
che è possibili richiamare attraverso il menù Strumenti alla voce Riferimenti,
compaia l'OLE-Server creato e che sia abilitato. Nel form del nuovo progetto si
dovrà inserire un pulsante. Si dovranno assegnare le proprietà essenziali sia al
form che al pulsante. Nell'evento Click di quest'ultimo si procederà alla
scrittura delle istruzioni per utilizzare l'OLE-Server. E' possibile procedere
in due modi:
Dim MyInfo As New
MyOLESvr.Informazioni MyInfo.Caption =
"Hello!" MyInfo.Show
oppure
Dim MyInfo As
Object Set MyInfo = CreateObject("MyOLESvr.Informazioni") MyInfo.Caption =
"Hello!" MyInfo.Show
Quest'ultima si differenzia dal fatto che se l'OLE-Server non è
stato registrato correttamente, l'istruzione CreateObject genererà un errore
intercettabile con un On Error ..., a differenza della prima che non genera
errori fintanto che non si utilizzerà un metodo o una proprietà
dell'OLE-Server.
Ci sono però delle limitazioni durante la programmazione
di OLE-Server. Queste informazioni possono essere lette attraverso l'Help del
VB.