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"
Modulo: "Modulo.bas"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!
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:..... lista di subrutine, funzioni, ecc...
In questo modo se clikko sul command1 visualizzo la mgBox 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
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

Rispondi quotando