Newsgroup: it.comp.lang.visual-basic
Titolo: ocx

Ciao a tutti! Vorrei delle spiegazioni sugli OCX: 
sto creando un modulo ocx appunto... esso ha delle funzioni ad
esempio:
public function ciao()
dim MIO as string
MIO = "buongiorno"
compilo l'ocx e tutto va ok
Poi creo un nuovo progetto e gli metto il mio bell'ocx in un form. In
esso al click di un command button voglio che la variabile MIO che č
nell'ocx venga scritta in una textbox.
Io pensavo che bastava chiamare la funzione dell'ocx tipo 
call ciao ma giustamente mi dice che non c'č la funzione
allora faccio call MioOcx.ciao ma non succede niente...
Grazie!

 nell'ocx venga scritta in una textbox.
Dipende se il textbox è nell'ocx o nel form.
Nel primo caso, basta che dentro a 'ciao' tu metta TextBox1.Text=MIO
Altrimenti, devi andare a interagire col container dell'Ocx, che nel tuo
caso è una form (ma non è detto).
Qualcosa del tipo:
UserControl.Container.Controls.Item("Textbox1").Text=mio
potrebbe funzionare (adesso non ricordo esattamente se ci vuole .Container o
.Parent), altrimenti addirittura ci vuole l'Extender (vedi guida).
Considera comunque che 'è male' che un Ocx interagisca con un determinato
controllo del container, perchè tale controllo potrebbe non esserci, e
soprattutto nessuno ti garantisce che l'object model del container sia
esattamente come te lo aspetti.
Ciao
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mie canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti...

Lelio (
noone...@qualcosa.com
) ha scritto, tanto per cambiare ...

Grazie. L'ocx č un oggetto ... come pretendi che un command button
possa capire che esiste un metodo ciao se č relativo all'ocx e non
al command button stesso?
Al massimo puoi fare text1.text = tuoocx.ciao, ma a questo punto
non vedo cosa ti serva un ocx.
Gli ocx sono degli oggetti, con una vita propria, che ti servono per fare
dei task piů o meno complessi in un loro mondo (thread a parte) da
inglobare nel thread della tua applicazione per evitarti un copia e incolla
di n righe di codice.
Per una cosa tipo quella che hai bisogno ti basta e ti avanza una sub
pubblica dentro un modulo del tuo progetto. Se ti vuoi allargare fai
una dll, ma perchč spreacare memoria per cosě poco?
--
Saluti
Andrea Moro

una dll, ma perchè spreacare memoria per così poco?
Si lo so... era solo per fare un esempio... In pratica sto maledetto
ocx contiene funzioni piuttosto complesse...
Il problema mio era appunto il fatto che non sapevo "gestire"  e
chiamare queste funzioni... 
Ora mi sono fatto un'idea! Grazie mille per le risposte, devo dire,
immediate! Grandi! :)

non vedo cosa ti serva un ocx.
Ops... non funziona...

Lelio (
noone...@qualcosa.com
) ha scritto, tanto per cambiare ...

Te l'ho buttata li ... devi vedere cosa poi fa il tuo ocx ... cioč
se č una function che restituisce qualche valore deve funzionare
se č una sub, devi interagire cosě come ti ha detto Albe ...
il che č alquanto pessimo come approccio.
--
Saluti
Andrea Moro


Rileggendo il mio post: forse ho interpretato al contrario il quesito. Io
pensavo che Lelio volesse scrivere nel textbox dall'interno dell'Ocx.
Se invece č il form che deve 'prelevare' un valore dall'Ocx per metterlo nel
textbox, basta che la function Ciao restituisca una stringa, oppure, molto
molto meglio, fare una public property che restituisca una stringa.
Ciao
Alberto
--
E non so se avrň gli amici a farmi il coro,
o se avrň soltanto volti sconosciuti,
canterň le mie canzoni a tutti loro
e alla fine della strada
potrň dire che i miei giorni li ho vissuti...

Alberto
Ciao! e GRAZIE!!