Newsgroup: it.comp.lang.visual-basic
Titolo: Mi controllate questo ciclo...

Salve,
per favore mi buttae un occhio a questo ciclo...
 
    For i = 0
To UBound(mioArray)
        With lsvMp3
            .ListItems.Add().Text
= mioArray(i).Titolo
            .ListItems.Add().SubItems(1) =
mioArray(i).Autore
            .ListItems.Add().SubItems(2) =
mioArray(i).Album
        End With
    Next i
 
mioArray č un array che
riempo da un altra parte, qui mi arriva bene, dentro c'č quello che deve
esserci. Il porblema č che i dati si caricano nella listview, solo che si
caricano a scaletta, e non
vedo perchč deve fare cosě! Se io ogni volta
che giro dentro il ciclo, il primo valore dell' array,
quindi tutti i
titoli, li attacco alla listview come .text, e gli altri gli come subitems,
dandogli un indice
fisso, perchč non va? Adesso me li carica cosě:
titolo     autore   album
---------------------------
pippo
pluto     
                        paperino
 
Perchč?
 
Saluti...
---------------------------------------------------
Inviato da: 212.29.130.175, via 
http://usenet.iol.it

 ha scritto nel messaggio
news:212Z29Z130Z175Y...@usenet.iol.it...

il comportamento del tuo programma č perfettamente normale....
prova a riflettere su quanto segue:
che cosa succede quando chiami il metodo Add() di ListItems?
quante volte lo chiami tale metodo per ogni elemento dell'array?
meditate gente, meditate...
ciao

> il comportamento del tuo programma č perfettamente normale....
 
Meno male, allora ho scritto una cosa giusta :))
 
spiegami perchč cosě funziona:
 
    For i = 0 To UBound(mioArray)
        Set lvItem = lsvMp3.ListItems.Add()
        lvItem.Text = mioArray(i).Titolo
        lvItem.SubItems(1) = mioArray(i).Autore
        lvItem.SubItems(2) = mioArray(i).Album
    Next i
 
mentre cosě va a scaletta:
 
    For i = 0 To UBound(mioArray)
        With lsvMp3
            .ListItems.Add().Text = mioArray(1).Titolo
            .ListItems.Add().SubItems(1) = mioArray(1).Autore
            .ListItems.Add().SubItems(2) = mioArray(1).Album
        End With
    Next i
 
Bhč, che dire in questi casi...non capisco ma mi adeguo :))



Non capisci perche non ti sei fermato nemmeno trenta secondi a pensarci e ti
adegui perche' non hai voglia di capire. Se ci mettessi meta' dell'impegno
usato per scrivere questo post capiresti.
Con queste premesse temo che non andrai molto lontano... Spero di
sbagliarmi.
Ciaotutti,
Alessandro

 ha scritto nel messaggio
news:212Z29Z130Z175Y...@usenet.iol.it...

.....Rivedi quanto suggerito da Hellboy: " quante volte lo chiami tale
metodo ( .Add ) per ogni elemento dell'array?"
Ciao

 metodo ( .Add ) per ogni elemento dell'array?"
 
lo richiamo 3 volte...ma...scrivere
 
         Set lvItem = lsvMp3.ListItems.Add()
         lvItem.Text = mioArray(i).Titolo
 
non è la stessa cosa che scrivere
 
         lsvMp3.ListItems.Add().Text = mioArray(i).Titolo
 
???


 ???
si, ma scrivere
          Set lvItem = lsvMp3.ListItems.Add()
          lvItem.Text = "pippo"
          lvItem.Subitems(1) = "pluto"
          lvItem.Subitems(2) = "paperino"
          lvItem.Subitems(3) = "minnie"
non è lo stesso
          lsvMp3.ListItems.Add().Text = "pippo"
          lsvMp3.ListItems.Add().Subitems(1) = "pluto"
          lsvMp3.ListItems.Add().Subitems(2) = "paperino"
          lsvMp3.ListItems.Add().Subitems(3) = "minnie"
riflettici su...
ciao

           lsvMp3.ListItems.Add().Subitems(3) = "minnie"
 
Haò, io non capisco dove è l' errore...allora, se io scrivo
 
    pippo = ciao_mondo
 
e poi scrivo
 
    pippo buon natale!
 
non è lo stesso che scrivere
 
    ciao_mondo buon natale!
 
Ma perchè se quella roba la metto detto una variabile va bene, se invece la riscrivo non va più bene
...sono limitato è finita la mia bereve carriera da programmatore...ciao mondo voglio morire hehehe
ma perchè non è uguale!!! Ok, non ci arrivo, mi dite per cortesia cosa è che mi stà sfuggendo??



Tu chiami quattro volte Add, quindi aggiungi quattro elementi. Per ciascuno
di essi definisci un suolo subitem, quindi e' evidente che li vedrai come se
fossero a scaletta.
Ciaotutti,
Alessandro


allora... ogni volta che richiami il metodo ADD viene aggiunta una nuova
riga alla tua listview
quindi con il codice
           lsvMp3.ListItems.Add().Text = "pippo"
           lsvMp3.ListItems.Add().Subitems(1) = "pluto"
           lsvMp3.ListItems.Add().Subitems(2) = "paperino"
           lsvMp3.ListItems.Add().Subitems(3) = "minnie"
tu aggiungi 4 righe nelle quali
la prima contiene pippo
la seconda contiene pluto nel 1° subitem
la terza contiene pluto nel 2° subitem
la quarta contiene pluto nel 4° subitem
invece con il codice
          Set lvItem = lsvMp3.ListItems.Add()
          lvItem.Text = "pippo"
          lvItem.Subitems(1) = "pluto"
          lvItem.Subitems(2) = "paperino"
          lvItem.Subitems(3) = "minnie"
tu richiami 1 sola volta il metodo Add, che ti ritorna un oggetto, al quale
poi vai ad impostare
il contenuto dei vari subitems...
la particolarità che forse ti era sfuggita è che il metodo ADD è (in quanto
metodo) un azione,
che quindi FA QUALCOSA (nello specifico, aggiungere una riga alla tua
listview)
e, siccome è "stupido" :) lo fa ogni volta che lo richiami!!
ma adesso ti faccio io una domanda...
se avevi trovato il sistema per cui funzionava... perche' volevi per forza
cambiarlo??? :))
ciao
Enrico

 volevi per forza cambiarlo??? :))
 
Perchè così è come fa vedere anche la guida, ma secondo me poteva andare bene anche quello che
avevp scritto io, così cercavo di capire dove è che la mia "versione" :) è sbaglaiata...ma a questo
punto, lo prendo per buono così eh...quando sarò grande forse capirò :))
 
Grazie, saluti!



Add aggiunge UNO E UN SOLO ELEMENTO, dopodiche' ne ritorna *la reference*.
Da quel momento tu lavori ***su quell'unico oggetto***. Come se scrivessi
set cnn=new connection
cnn.open strConn
set rs=cnn.Execute (strSQL)
while not rs.eof
    '...
    rs.moveNext
wend
e poi utilizzassi rs...
Il tuo codice invece e' questo:
set cnn=new connection
cnn.open strConn
while not cnn.Execute (strSQL)
    '...
    cnn.Execute (strSQL).moveNext
wend
E' chiaro che c'e' una certa differenza... Pensa se il strSQL fosse una
INSERT... Ecco, ora hai un'iodea di quanto succede :)
Non so se conosci il C ma quello di cui stai parlando tu e' come dire
    #define lvItem  lsvMp3.ListItems.Add()
Mentre quello che avviene in realta' e'
    lvItem  = lsvMp3.ListItems.Add()
Ovvero, tu scrivi (e quindi pensi) come se lvItem significasse "esegui
lsvMp3.ListItems.Add(), quindi utilizza la reference ritornata per farci
qualcosa", mentre in realta' significa "utilizza la reference ritornata dal
primo lsvMp3.ListItems.Add() per farci qualcosa"...
Questo e' il codice della guida:
a=2
x=Sin(a)
a=a+2
x=x+1
Questo e' il tuo codice
a=2
x=Sin(a)
a=a+2
x=Sin(a)+1
Ti e' piu' chiaro ora? Spero di si' altrimenti hai un grosso problema :)
Ciaotutti,
Alessandro

 Spero di si' altrimenti hai un grosso problema :)
 
Fai poco lo spirituso eh...tzč, maleducato!! :)


            lvItem.Text = "pippo"
Ora invece hai capito?
Nel primo caso si esegue due volte il metodo .add.
Nel secondo caso si esegue:
 1 -  il metodo add e si inizializza lvltem in modo che "punti" all'oggetto
appena creato
 2 -  si utilizza il riferimento con il metodo/proprietà text per
assegnargli il valore "pippo"
se seguo anche
             lsltem.Subitems(1) = "pluto"
  utilizzo il riferimento con il metodo/proprietà subitems per assegnargli
il valore "pluto"
Visto che add lo si esegue una volta solo?


Ce l' abbiamo fatta!! :)) Alla fine ho capito, c' è voluta una giornata ma...ce l' ho fatta!!! Però se mi spiegavate subito, per una cosa così...diciamo quasi banale, non postavamo 1600 messaggi :)
Un altro successo del ng...vi amo tutti!! Mi viene quasi da piangere :°) Grazie, grazie a tutti :°°))



sai come si dice: se un povero ha fame e gli dai un pesce il giorno dopo
avrà fame di nuovo; se invece gli dai una canna da pesca non avrà più fame;
il discorso sulle listview/listitem lo avevamo affrontato già un bel po' di
tempo fa, e a suo tempo ti postai un codice praticamente completo; ho quindi
pensato di aver fatto male ad averti fornito la pappa pronta, anche perchè
di tutta la faccenda (nonostante tutti i "fiumi di inchiosto" spesi) avevi
capito ben poco;
ora che ti ho costretto (anzi, ti abbiamo costretto...) a sbatterci la testa
e a pensarci sopra per un po' sei riuscito ad imparare qualcosa (spero...);
ciao

 ora che ti ho costretto (anzi, ti abbiamo costretto...) a sbatterci la
testa
di qui il nick: SKUNNNNK !!!
:)



Spiritoso si, ma solo entro certi limiti :)
Se fosse stato un tuo punto cieco avresti davvero avuto un grosso
problema...
Ciaotutti,
Alessandro

 sopra per un po' sei riuscito ad imparare qualcosa (spero...);
 
Bhè, più che sbatterci la testa sopra...ora che qualcuno mi ha detto...
 
"Wè bello, premesso che non capisci un ca**o di inglese (la mia guida è in inglese) non hai capito
niente di quello che hai letto..."
 
E mi ha spiegato come stavano veramente le cose.
Non voglio fare polemica, ma ci tengo a chiarire come è andata la faccenda.
