Newsgroup: it.comp.lang.visual-basic
Titolo: ActiveX control - Scambio dati fra componenti

Scusate se il messaggio è lungo ma la complessita dell'argomento (e una mia
parziale incampacità nell'esprimerlo) lo richiede.
Allora il mio problema è il seguente.
In un progetto (VB5) di un controllo ActiveX ho inserito diversi form.
Quello che lo user control fà è visualizzare questi form trammite i metodi
del controllo, fare si che l'utente esegua svariate operazioni sul form, e
in fine distruggere il form.
Fino a quà niente di strano. Ora il problema è lo scambio di dati fra i vari
form (e anche i moduli) del progetto e lo user control. Mentre non ci sono
problemi a effettuare chiamate di ogni genere dallo user control agli altri
componenti del progetto (moduli e form) non sembra essere il contrario.
Ovvero come faccio da un form a chiamare una qualsiasi funzione residente
nell'user control. Con quale parola chiave o altro termine di riferimento
posso fare una chiamata del tipo UserControl.MiaFunzione da un altro modulo
o form del progetto ?
Spiego anche il perchè mi necessita fare una cosa del genere così magari mi
trovate qualche altro escamotage. Ho la necessità che ha un evento qualsiasi
su uno dei form del progetto corrisponda il "raise" di un evento del
controllo stesso.
Spero di essermi spiegato...
Ho cercato su help e SDK (anche se non in modo approfonditissimo) vi sarei
grato se qualcuno mi risparmiasse ore e ore di spulciamenti...
:)

...


Set uc=Me
Ach ! Mi pareva di averlo fatto come prima cosa ma evidentemente ero in
fallo.. hoibň... :)
Dove si dimostra che l'esperienza nulla vale contro il caldo... :)
GRAZIE MOLTE !

Paolo Cioeta
Bene... Mi sono ricordato come mai non lo avevo fatto....
In effetti la soluzione da te suggerita era stata fra le prime
sperimentate... Il guaio è che la cosa funziona perfettamente in ambiente di
sviluppo peccato che una volta compilato l'ocx la funzionalità di cui sopra
si perda nel nulla.
Mi spiego...
Poniamo un progetto semplice semplice... Uno UserControl e un Form1 con un
pulsante...
Sull'inizialize del UC (user control) punto la globale come da te suggerito
Set UC = Me
inoltre poniamo esista nell'UC un Public Event Pippo (byval Param1)  e una
Sub AlzaPippo del tipo
Sub ALZAPIPPO (byval param1 as variant)
    RaiseEvent Pippo
    msgbox "Evento alzato"
end sub
Ora nel mio bel Form1 piazzo un pulsante alla pressione del quale invio il
seguente codice:
Dim TB as TextBox
Set TB = Text1
msgbox "Tento di alzare un evento e passargli una textbox"
UC.ALZAPIPPO (TB)
Ok... lancio un vbgroup in ambiente di sviluppo... chiamo il metodo dell'ocx
che mostra Form1, premo il pulsante, risultato:
-messaggio "Tento di alzare...."
-Sul progetto che ospita l'OCX si genera l'evento Pippo che mi passa pure la
textbox (che mi posso a quel punto gestire come voglio), terminato l'evento
Pippo l'azione ritorna all'OCX che genera...
-messaggio "Evento alzato"
Tutto esattamente come dovrebbe essere... Ma compilato l'ocx ed utilizzato
ecco quanto succede...
-messaggio "Tento di alzare...."
-Nessun evento viene alzato...
-messaggio "Evento alzato"
MI FA IMPAZZIRE... vuoi vedere che è un buco del VB5.
Mi fareste un piacere enorme se tu o qualche anima pia provasse a fare una
cosa simile e a verificarne il risultato. I programmatori che conosco io
(tutti
professionisti...:() mi sanno dire tutto sul C, il C++ il Visual C++ ecc.
ecc. e anche molto sul Visual Basic 5 in generale... ma ce ne fosse uno che
si è messo a fare gli activeX control come il sottoscritto.
Scusate per il disturbo ma l'OCX in questione è di natura commerciale e
visto
che ho speso diverso tempo a realizzarlo ora mi è difficile giustificare il
suo non funzionamento con il mio datore di lavoro... HELP ! :)

...
