Newsgroup: it.comp.lang.visual-basic
Titolo: Elenco For Each

Salve in VB6 vorrei capire quale è l'ordine con cui vengono riportati i 
controlli nel seguente ciclo e
se vi è un modo per cambiarne l'ordine:
Dim Ctrl As Control
For Each Ctrl In Me
    Debug.Print Ctrl.Name
Next
perchè avrei bisogno di analizzarne alcuni prima di altri.
Grazie e saluti.
Paolo 

 ha scritto nel messaggio 
news:445db80e$0$29105$5fc...@news.tiscali.it...

Credo sia l'ordine dato dallo ZOrder, ma non dovresti mai fidarti 
dell'ordine degli elementi di una collezione se non è specificato nella 
documentazione.
(A proposito, è specificato nella documentazione? ;) )
Ciao

 ha scritto nel messaggio 
news:445dc409$0$36927$4faf...@reader3.news.tin.it...

Se ti riferisci alla documentazione ufficiale la ZOrder serve solo per 
indicare quale degli oggetti sta in primo piano e quale dietro. Non mi pare 
che possa indicare l'ordine nella collezione.
Speravo che fosse la TabIndex invece no!.
Ciao
Paolo. 

 Speravo che fosse la TabIndex invece no!.
Mi pareva ovvio che mi riferivo alla documentazione della collection in 
questione.
Ciao 


Non hai alcuna garanzia dell'ordine con cui l'enumeratore
della collection, ottenuto tramite For Each,  ti fornisce 
il riferimento agli elementi.
-- 
ciao, hal


Non è del tutto vero...
Per le Collection standard l'ordine dovrebbe corrispondere all'ordine degli
elementi nella collection.
Cioè
    For Each Item In Collection
        ...
    Next
equivale a
    For i=1 To Collection.Count
        Item = Collection(i)
        ...
    Next i
Per la collection Controls, facendo qualche prova si scopre facilmente che
l'ordine con cui vengono enumerati i controlli corrisponde a quello dei vari
blocchi "Begin" nel file frm.
Questo normalmente equivale all'ordine cronologico di inserimento dei
controlli in fase di design, da quello inserito per ultimo a quello inserito
per primo. Non solo, si vede anche che se i controlli sono racchiusi in un
container, questo viene prima dei corrispondenti controlli contenuti.
Infine, comunque i controlli "windowed" (text, picture, checkbox etc.)
vengono sempre prima di quelli "windowless" (label, image, shape etc...).
Per fare un esempio, se in un form a design time aggiungiamo, nell'ordine:
Label1
Text1
Frame1 che contiene
    Label2
    Text2
Il For Each restituisce:
Frame1
Text2
Label2
Text1
Label1
My 2 cents
Raf

 blocchi "Begin" nel file frm.
Allora è come dicevo: dipende dallo ZOrder:
http://groups.google.it/group/it.comp.lang.visual-basic/browse_frm/thread/ba83f0f8f2b494e7/2e45df8cc100ebff?q=zanna+zorder&rnum=3#2e45df8cc100ebff
Ciao


Direi dallo ZOrder nell'ambito dello stesso container. Solo che finché 2
controlli non si sovrappongono non ce ne si rende conto.
Bye
Raf

 controlli non si sovrappongono non ce ne si rende conto.
Ma questo non cambia le cose ;)
Comunque io non mi fiderei di quest'ordine: nessuno sa com'è implementato 
l'enumeratore di Controls.
Ciao 

 Per le Collection standard l'ordine dovrebbe 
e` quel *dovrebbe* che dimostra che le specifiche di For Each
non garantiscono nulla circa l'ordine di apparizione.
io non fonderei la stabilita` del mio software su funzionamenti
per puro caso ;-)
-- 
ciao, hal

 per puro caso ;-)
Infatti è quello che dicevo anche qui:
http://groups.google.it/group/microsoft.public.it.dotnet.csharp/browse_frm/thread/cd15c4c89410dcd/3946da1916660228?q=fabio+foreach&rnum=1#3946da1916660228
Ciao 

 implementato l'enumeratore di Controls.
Nemmeno io!
Ciao


In realtà il mio *dovrebbe* intendeva che la documentazione non lo dice
chiaramente, ma l'esperienza (e la logicità che dovrebbe ;-) stare dietro
l'implementazione dell'oggetto Collection) indicano che sia quello il
comportamento reale di For Each.
McKinney scriveva questo
http://www.vb.mvps.org/hardcore/html/collections101datastorage.htm
http://www.vb.mvps.org/hardcore/html/collections201indexing.htm
Ciao
Raf

 ha scritto nel messaggio 
news:445db80e$0$29105$5fc...@news.tiscali.it...

Per tornare sul pratico, pensavo di creare una collezione con i controlli e 
sortarla per TabIndex o per un qualche riferimento che possa conoscere a 
priori e poi scorrere quella collezione per ricavare le proprietà dei vari 
controlli. Funzionerebbe?.
Paolo