Newsgroup: it.comp.lang.visual-basic
Titolo: Librerie di routine

Scusate l'ignoranza ma come si fa in VB6 a crearsi delle librerie di routine
ritulizzabili in piů progetti. In QB era possibile creare i file QBL e in
VB6?
Ho comprato un libro ma tra ACTIVEX EXE, DLL, ecc.. faccio veramente fatica
a capire.
Io vorrei creare una libreria con solo routine matematiche, senza controlli,
form, ecc.. richiamabile da altri programmi VB, č possibile?
Ciao e grazie 1000 a tutti
Manuela


si e no, nel senso che in realtà utilizzando VB puoi costruire librerie
(siano esse ActiveX EXE, ActiveX DLL o OCX, che poi ai fini pratici sono
quasi la stessa cosa) che esportano oggetti;
tuttavia è possibile creare oggetti di tipo GlobalMutiuse (Instancing = 6)
che si comportano in maniera simile alle vecchie librerie QLB;
prova a fare quanto segue:
1) creati un nuovo progetto ActiveX DLL
2) creati un classe (es. MiaClasse) e impostala come GlobalMutiuse
3) scrivi all'interno di questa classe tutta una serie di funzioni o sub;
ricordati di metterle PUBLIC (dovrebbero essere public di default, ma non fa
mai male specificarlo)
4) compila la tua DLL
5) crea un nuovo progetto EXE standard
6) referenzia la tua DLL (menù progetti | riferimenti)
7) usa le funzioni scritte all'interno della tua libreria
8) al max, se ci sono problemi di omonimia, invece di chiamare MiaFunzione()
puoi scrivere MiaLIbreria.MiaFunzione()
ciao

 form, ecc.. richiamabile da altri programmi VB, è possibile?
E' possibile, e i riferimenti del tuo libro a ActiveX DLL sono quello che
cerchi.
L'esempio piu' elementare e' creare un nuovo progetto del tipo suddetto,
aggiungere una classe e definire al suo interno tutte le tue funzioni, con
l'accortezza di dichiarare pubbliche:
'esempio: classe Functions
Public Sub Procedura1()
...
End Sub
Public Function Funzione1() As Long
...
End Function
A questo punto puoi compilare la DLL, e in un secondo progetto aggiungere un
riferimento alla stessa (nota che la trovi elencata nella finestra dei
riferimenti con il nome *interno* assegnato al progetto, non il nome del
file quindi ma quello che vedi nella finestra delle proprieta'... supponiamo
sia stato impostato a 'MyLibrary')
Ora non ti resta che creare un istanza della classe per poter utilizzare le
tue funzioni:
Dim MyLib As MyLibrary.Functions
Set MyLib = New MyLibrary.Functions
MyLib.Procedura1
x = MyLib.Funzione1
e cosi' via.
Volendo puoi anche rendere implicito parte di questo meccanismo, cosa che si
adatta in particolar modo all'uso che vuoi fare delle classi, facendo in
modo che le funzioni vengano "importate" senza dover necessariamente creare
il riferimento all'oggetto appena visto; per fare questo devi solo
modificare la proprieta' Instancing della classe Functions a
'GlobalMultiUse' (vedi guida per i vari significati) e rimpiazzare il codice
qui sopra con
'NB: ovviamente devi sempre avere il riferimento alla libreria nei tuoi
progetti
Procedura1
x = Funzione1
Questo giusto per un'infarinatura... per il resto guarda cosa dice il tuo
libro a proposito ma soprattutto fai riferimento a questi tre capitoli
dell'MSDN
"Programming with Objects"
per l'utilizzo generale di classi e oggetti
"Programming with Components"
per l'accesso agli elementi suddetti forniti da applicazioni e librerie
esterne
e quindi
"Creating ActiveX Components"
per creare i propri componenti
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 form, ecc.. richiamabile da altri programmi VB, č possibile?
[...]
File > Nuovo progetto > EXE standard
File > Aggiungi progetto > DLL ActiveX
Rinomina il progetto DLL: "MyFirstDLL"
Rinomina il progetto EXE: "TestMyFirstDLL"
(o come preferisci)
In "MyFirstDLL" dovresti avere un modulo di classe. Rinominalo "MyMath" (o
come preferisci). Scrivi in questo modulo di classe:
Option Explicit
Public Function SommaDiDueNumeri( _
  ByVal Numero1 As Double _
, ByVal Numero2 As Double _
) As Double
  SommaDiDueNumeri = Numero1 + Numero2
End Function
Passa al progetto "TestMyFirstDLL" e aggiungi ai riferimenti "MyFirstDLL".
Disponi sul form di "TestMyFirstDLL" tre TextBox ed un CommandButton. Scrivi
nel modulo di questo form:
Option Explicit
Private Sub Command1_Click()
  Dim o As MyFirstDLL.MyMath
  Set o = New MyFirstDLL.MyMath
  Text3.Text = o.SommaDiDueNumeri(Text1.Text, Text2.Text)
  Set o = Nothing
End Sub
Accertati che il progetto "TestMyFirstDLL" sia il "progetto di avvio" quindi
salva ed esegui.
Poi, con l'aiuto della guida, esamina a fondo le proprieta' del progetto
DLL.
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 ha scritto nel messaggio
news:acd200$o5400$1...@ID-52090.news.dfncis.de...
