grazie 1000
A.
Dim Oggetto as Object
Set Oggetto = CreateObject("MiaDLL.MiaClasse")
Oggetto.MostraForm
...
set Oggetto = Nothing
Bye by SixaM 8-]
Le DLL ActiveX non possono esporre direttamente funzioni, ma solo
oggetti.. quindi, come ha già detto SixaM, devi impacchettare le tue
funzioni almeno dentro una classe pubblica.
Ci sarebbe un monte di cose da dire sulla faccenda, per le quali ti
rimando alla guida di VB, aggiungo solo un paio di appunti veloci:
Ipotizziamo tu crei la classe A con metodo Esegui che mostra una form.
Public Sub Esegui
Form1.Show
End Sub
il metodo qui sopra apparentemente funziona, ma in realtà è
scorretto... una determinata istanza di Form può essere aperta solo e
soltanto una volta; dato che questa viene invocata da un oggetto, e
dato che di questo oggetto ne possono esistere più istanze, il codice
qui sopra potrebbe dare errore se invocato da punti diversi. Hai
bisogno di caricare in maniere distinta le diverse istanze della
medesima form.
Quindi, quando piloti le finestre attraverso classi pubbliche, usa
SEMPRE questa sintassi, per toglierti da ogni problema:
Public Sub Esegui
Dim f As Form1
'una istanza di form distinta per ogni chiamata
Set f= New Form1
f.Show
'ecc...
End Sub
voglio contribuire anch'io! :-)
in un'istanza di vb crei un gruppo di 2 progetti, una dll activex e un
exe standard rispettivamente di default (Progetto1) e (Progetto2):
nella dll metti un form (Form1) e un modulo di classe (Class1)
nel exe standard metti un form e un commandbutton (Command1)
copia:
--nel modulo di classe Class1 della dll ---
private frmdll As form1
public sub showformdll()
set frmdll = new form1
frmdll.show
end sub
-------------------------------------------
------nel form del exe standard:-----------
private sub command1_click()
Dim fdll As object
set fdll = createobject("Progetto1.Class1")
fdll.showformdll
end sub
----------------------------------------
ricorda di mettere tra i riferimenti dell'exe standard il progetto della
dll (Progetto1) e come progetto di avvio sempre l'exe.
finito, puoi compilare!