Ciao a tutti,
cerco di essere il più chiaro possibile.
Ho creato un progetto exe/ActiveX in cui ho un modulo e ovviamente la classe.
Nella classe ho creato una property alla quale ho associato un evento onChange a cui ci si può registrare previa definizione dell'oggetto.
Nel modulo ho tutte le funzioni necessarie alla corretta funzione dell'activeX e la classe non fa altro che richiamare tali funzioni.
Classe: "classe.cls"
codice:
Option Explicit
Public cStatus As Long
Public Event OnStatusChange(value As Long)
Public Property Get Status() As Long
Status = cStatus
End Property
Public Property Let Status(value As Long)
cStatus = value
Call Change(value)
End Property
Private Sub Change(ByVal value As Long)
RaiseEvent OnStatusChange(value)
End Sub
....... e le funzioni della classe!
Modulo: "Modulo.bas"
codice:
..... lista di subrutine, funzioni, ecc...
Ho incluso l'activeX creato in un progetto e se abilito l'evento sulla property e ne modifico il valore l'evento viene intercettato correttamente.
codice:
Public WithEvents objActiveX As New Classe
Private Sub Form_Load()
Set objActiveX = New Classe
End Sub
Private Sub objActiveX_OnStatusChange(ByVal value As long)
Call MsgBox("Changed to: " & value)
End Sub
Private Sub Command1_Click()
objActiveX.Status = Text1.Text
End Sub
In questo modo se clikko sul command1 visualizzo la mgBox correttamente.
La mia necessità è quella di poter settare la property all'interno del "modulo dell'activeX" in modo statico!Così facendo si dovrebbe scatenare l'evento onChange della property. Ovvero dal modulo poter fare o Classe.Status = valore oppure objActiveX.Status = valore.
La classe dell'activeX al momento è settata come Multiuse! Se la setto come GlobalMultiUse posso accedere allo Status facendo objActiveX.Status in fase di progettazione ma ricevo l'errore di compilazione: "impossibile trovare il metodo o il membro dei dati" se cerco di creare l'eseguibile.
ho necessità di eseguire tali operazioni in quanto la stessa ActiveX può modificare il proprio stato a runTime in base ad eventi esterni (per esempio se cade la comunicazione!) e sarebbe utile che tale cambiamento venisse comunicato con l'evento al programma utilizzatore della ActiveX.
è possibile?
Scusate il casino ma nn è facilissimo da spiegare..
Mirko