Newsgroup: it.comp.lang.visual-basic
Titolo: errore listbox...

Ciao a tutti,
come da oggetto ho un problema nella gestione delle listbox, in apparenza
piccolo ma che mi sta dando un sacco di grane.
Poiché quando ho chiesto aiuto su questo newsgroup mi è stata rimproverata
la poca chiarezza, procederò così: subito vi dico il problema e dopo, per
chi voglia comprendere l'ambito nel quale questo ha luogo, descrivo il
tutto.
Problema: se clicco velocemente su etichette consecutive, a volte capita che
tali etichette non risultino selezionate; apparentemente pare sia un
problema di velocità nel senso che se eseguo la selezione lentamente tale
errore non si produce; purtroppo però quando la lista contiene un grosso
numero di etichette risulta naturale velocizzare la procedura di selezione
con il mouse causando così, in qualche caso, l'errore.
100:     Come posso risolvere il problema?
Descrizione: In pratica all'interno di un form di un programma che sto
rivedendo sono presenti alcune listbox che mostrano un elenco di etichette
(nel mio caso trattasi di superfici) a cui devo assegnare delle
caratteristiche (nel mio caso caratteristiche acustiche).
Poiché tale procedura può essere fatta in step differenti le listbox sono 3
(chiamiamole A, B, C): nella prima sono presenti tutte le superfici, la
seconda è una lista di appoggio, la terza indica le superfici a cui, volta
per volta, ho già assegnato le caratteristiche.
Quando seleziono con il mouse le superfici nella lista A le etichette
relative compaiono nella lista B e nella lista C (con le classiche
istruzioni removeitem additem etc. verificando volta per volta se le
superfici sono già presenti o meno) assegno le caratteristiche tramite
inputbox e poi cliccando su un pushbutton le superfici selezionate
scompaiono dalla liste A e B (mentre rimangono nella lista C che ha memoria
delle varie assegnazioni già effettuate), tali superfici vengono scritte in
1 file di testo e la procedura può ricominciare.
Purtroppo xò quando la selezione avviene rapidamente alcune delle superfici
selezionate in A non compaiono in B e C e quindi, se non ci si accorge della
mancanza, l'assegnazione delle superfici in questione viene saltata.
GoTo   100
Ciao e grazie,
Ntonjfi

 mancanza, l'assegnazione delle superfici in questione viene saltata.
Io sono del parere che se l'utente fa click a casaccio e poi mancano i pezzi
non può essere colpa del programma.
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 Ciao
Ciao e grazie ancora,
Ntonjfi

 superfici sono già presenti o meno)
Credo che si tratti di un approccio errato al problema: Il sistema fa il
possibile per star dietro agli eventi, se questi sono parecchi e le
elaborazioni conseguenti pesanti, l'adeguamento degli oggetti può esserfe
tardivo, quindi, per esempio, l'operatore può cliccare su un elemento che è
visibile, ma che un istante dopo gli viene tolto da sotto, col rischio che
l'evento finisca su quello che ne prende il posto.
Dato per scontato, dalla cronaca che fai, che il tutto dipende da
un'eccessiva velocità dell'operatore rispetto alle elaborazioni da eseguire,
io adotterei due possibilità, d'ufficio:
Ad ogni evento scatenante (per esempio il click di un elemento), renderei
invisibile (più che disabilitato per non generare equivoci) il tutto, farei
quel che devo e poi rendo nuovamente visibile gli oggetti.
Oppure prevederei un bottone di esecuzione, togliendo dal click ogni
istruzione.
In entrambi i casi l'operatore non può che aspettare e, anche volendo, non
potrà fare "troppe cose insieme".

 esatto!! (a volte succedono anche altre cose ma hai centrato il problema)
Ti dico io qual è il problema: il primo click funziona correttamente, il
secondo se troppo rapido viene interpretato dalla lista come un doppio click
e non ha effetto.
Per risolvere il problema puoi fare:
1) esegui lo spostamento su doppio click, come fanno tutti i programmi.
2) metti
    Sub List1_DblClick()
        Call List1_Click()
    End Sub
   ma spero che questo non porti ad altri effetti collaterali.
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net
                +-- 
http://www.neodatatype.net/iclvb/AxBalloon.zip
                +-- 
http://www.neodatatype.net/iclvb/vb_project.zip