Newsgroup: it.comp.lang.visual-basic
Titolo: Passare un array di controlli ad una Sub

Ciao,
scusate se la domanda è un po' banale, ma ho la seguente necessità:
in un form ho un array di controlli Winsock (winsock()) che devo
passare ad una classe:
Public Sub SetSocket(sktObj() as As MSWinsockLib.Winsock)
End Sub
Come posso fare visto che un array di controlli non è un semplice
array?
Si potrebbe dichiararlo As Controls?
Tnx.
Daniele.

Barzo@Google ha scritto:

As Control membro della collection Controls
Eventualmente puoi provare a passarlo come Object
@Alex

 Si potrebbe dichiararlo As Controls?
Qual è il problema con la tua dichiarazione?
Ciao 

 Qual è il problema con la tua dichiarazione?
Bè, la cosa che vorrei fare è un po' contorta...
Ho la necessità di gestire il socket da una classe, ma chiaramente non
posso creare una nuova istanza di un oggetto MSWinsock (con New per
intenderci) quindi dovrei inserire nel form un array di controlli che
poi andrò a passare alla classe...che me li gestisce.
Il problema della dichiarazione è che nella classe ho un array del
tipo:
mSocket() as Winsock
e quando vado a fare mSocket = Value nella Sub mi ritorna giustamente
un tipo non compatibile...
Sicuramente è l'approccio sbagliato...per adesso ho ovviato
utilizzando una DLL che fa da wrapper al controllo....

 utilizzando una DLL che fa da wrapper al controllo....
Boh, se ti funziona :)
Non ho ben chiaro come puoi gestire la cosa senza fare dei new: una volta 
che la connessione cade il winsock è da buttare...
Ciao 

 che la connessione cade il winsock è da buttare...
No no, intendevo che non è possibile creare un controllo winsock con
New, ma solamente aggiungendolo ad un array di controlli inserito a
design....o mi puoi smentire?!?
Ciao!
Daniele.

 design....o mi puoi smentire?!?
Sě.
Winsok č uno dei pochi controlli creabili a runtime.
Comunque il concetto non cambia: quando un winsok perde la connessione lo 
devi buttare e sostituire con uno nuovo se vuoi poter accettare una 
connessione nuova.
Ciao 

 connessione nuova.
Bè, certo:
Dim Index = Winsock.Count
Load Winsock(Index)
Winsock(Index).Accept RequestId
ma non puoi fare una cosa del tipo:
dim skt As Winsock
Set skt = New Winsock
Mi ero spiegato male!!
Bye!
Daniele.

 Mi ero spiegato male!!
No, hai ragione.
Ciao 

 Non era un array che dovevi passare? :)
Si, ma di controlli (winsock)!!!! ;-)
non vorrei dire una baggianata....ma un 'array' di controlli non sarà
una Collection?
Ciao!


Ni, un control array (che non è un (safe)array di controlli) è abbastanza simile
ad una collection. Ma in realtà non è nemmeno quella.
http://vb.mvps.org/hardcore/html/usingstack.htm
AFAIK il modo corretto di passarne il riferimento ad una Sub è definire il
relativo parametro As Variant o As Object (come già detto in un post
precedente). Poi naturalmente si va per forza di late-binding...
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 precedente). Poi naturalmente si va per forza di late-binding...
Ah, adesso ho capito :)
Beh, io per array di controlli (control array) intendevo:
Dim wsk() as Windowsk
Quello che intendete voi sì, l'unico modo di passarlo è dichiarando il 
parametro As Object.
Che poi è il tipo usato da Form.Controls.
Ciao