Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[vb6] dll activeX

17 views
Skip to first unread message

Andromeda

unread,
Dec 14, 2009, 9:17:36 AM12/14/09
to
Salve a tutti,
mi sapreste fare un esempio di come creare una dll activex che semplicemente
visualizza un form e che sia caricabile da un progetto con la createobject?
io da vero ignorante in materia, ho creato una dll activex con una sub
Esegui che fa semplicemente form1.show ma la createobject non me la carica
:( devo forse creare qualche function o altro per farla caricare?

grazie 1000
A.


SixaM

unread,
Dec 14, 2009, 12:57:36 PM12/14/09
to
Nella dll ActiveX (MiaDLL) devi aggiungere una classe (es. MiaClasse)
con un metodo pubblico che richiama la tua form (es MostraForm).
Dall'esterno, usi un codice del tipo

Dim Oggetto as Object
Set Oggetto = CreateObject("MiaDLL.MiaClasse")
Oggetto.MostraForm
...
set Oggetto = Nothing

Bye by SixaM 8-]

Luca D

unread,
Dec 15, 2009, 6:32:44 AM12/15/09
to

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

~Incoming

unread,
Dec 16, 2009, 1:43:05 AM12/16/09
to
luned� 14 dicembre 2009, Andromeda ha scritto:
<news:4b26490a$1...@news.x-privat.org>

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!

0 new messages