Newsgroup: it.comp.lang.visual-basic
Titolo: ListBox, Label e soglia

Pensate ad una ListBox e ad una Label.
Questa ListBox contiene una serie di nomi asociati ad un intero.
La ListBox contiene esattamebnte Go.ListCount valori. Dove Go.ListCount è
stato calcolato in precedenza.
Selezionando un valore a caso, nella Label salta fuori il valore intero
corrispondente.
Selezionando un secondo valore a caso (nota: un valore, una volta
selezionato, resta selezionato), nella Label salta fuori la somma di questo
intero + quello precedente.......e così via, fino a quando non ho
selezionato tutti  i valori (cioè Go.ListCount).
Quello che non riesco a fare e che miservirebbe è questo:
Selezionando un primo valore a caso, vorrei poter selezionare i seguenti
valori, fin tanto che la Label (che mi dà la somma dei rispettivi interi)
non mi mostra un valore X prestabilito!
Cioè, X è la soglia che una volta raggunta mi deve bloccare la possibilità
di selezionare altri nomi.
Confido in un aiuto.
Grazie a tutti per l'attenzione.
Gregor.


Supponi:
	ListBox è il nome del controllo ListBox
	Label è il nome del controllo Label
	ListBox.ListIndex corrisponde al valore intero da aggiungere
	Soglia è visibile a livello di modulo ed è già dichiarata e
               inizializzata a Go.ListCount
Nell'evento ListBox_Click():
Private Sub ListBox_Click()
	dim lCheck    As Long
	On error goto lherror
	lCheck = Val(Label.Caption) + ListBox.ListIndex
        if Soglia > lCheck then
	   Label.Caption = Cstr(lCheck)
        else
	   ListBox.Selected(ListBox.ListIndex) = False
	end if
	exit sub
lherror:
	MsgBox "Error: " & Err.Number & VbCrLf & _
               "Description: " & Err.Description, "List Box Error"
end Sub
 
Provato, funziona.
HTH
Ciao
	Adriano

 end Sub
Scusa, forse mi sono spiegato male (abbi pazienza):
Io lancio il mio programma, ad un certo punto sono su di una Form.
Vedo la mia ListBox con dei nomi, per es.:
pippo
pluto
paperino
pippo vale per es. 10
pluto 12
paperino 42
e supponiamo che la soglia sia fissata a 50.
Adesso seleziono con il mouse pippo; in Label leggo 10
Poi seleziono paperino (a questo punto restano selezionati pippo e paperino)
e in Label leggo 10+42 = 52.
A questo punto, provando a selezionare pluto, non dovrei poterlo fare perchè
avevo già ottenuto 52 che è maggiore della soglia impostata a 50.
Se vuoi riporto il codice di questa sez, ma adesso il quadro dovrebbe essere
più completo.
Ricordo che il numero di "nomi" che leggo nella ListBox è Go.ListCount
(calcolato in una fase precedente).
Grazie mille!
Gregor.

 Gregor.
Sinceramente Gregor, il codice postato lo ho provato.
Preso un form, Form1, una ListBox, List1, una Label, Label1,
ho impostato solo queste property a design:
Form1.StartupPosition = 2 - Center Screen, Label1.Caption vuota,
List1.MultiSelect = 2 - Extended
Nel codice:
Dim Soglia As Long
Private Sub Form_Load()
	On Error Goto lherror
	Soglia = 50
	List1.Clear
	List1.AddItem "Pippo"
	List1.ItemData(List1.NewIndex) = 10
	List1.AddItem "Pluto"
	List1.ItemData(List1.NewIndex) = 12
	List1.AddItem "Paperino"
	List1.ItemData(List1.NewIndex) = 42
exit Sub
lherror:
	MsgBox "Error: " & Err.Number & VbCrLf & _
               "Description: " & Err.Description, "Form Load Error"
End Sub
Private Sub ListBox_Click()
	Dim lCheck    As Long
	Dim lIdx      As Integer
	On error goto lherror
	iIdx = List1.ListIndex
	lCheck = Val(Label.Caption) + List1.ItemData(iIndex)
        If lCheck < Soglia  Then
		Label1.Caption = Cstr(lCheck)
        Else
		List1.Selected(iIndex) = False
	End if
 Exit Sub
 lherror:
 MsgBox "Error: " & Err.Number & VbCrLf & _
                "Description: " & Err.Description, "List Box Error"
End Sub
È tutto. 
E funziona: se raggiungi, o superi, la soglia di 50 l'azione di
selection viene annullata, e la listbox permane allo stato
precedente.
Credo sia una approssimazione valida di quanto hai necessità di 
ottenere.
Prova a fare cut&paste su un nuovo progetto.
Forse non ho capito il tuo problema.
HTH
Ciao

 Ciao
Grazie per la pazienza.
Provo e ti faccio sapere.
Gregor.

 > Ciao
Ho fatto ciò che mi hai detto alla lettera su un progetto nuovo, ma ci sono
dei problemi:
appena seleziono un nome (indipendentemente da quale), la label riporta 10.
Alla seconda selezione, resta solo selezionata questa, e la label mostra 20,
e poi 30.......in pratica aggiunge sempre 10 e la list mi fa vedere sempre e
solo l'ultima voce selezionata.
Gregor.

 Gregor.
Per selezionare piů item da un controllo ListBox, 
con Proprietŕ MultiSelect = 2 - Extended, devi ad
ogni selezione successiva alla prima, tenere premuto
il tasto Ctrl: solo in tal modo mantiene selezionati
gli elementi precedenti.
Sinceramente, a me funziona, sia la multiselezione sia
l'incremento del valore nella label; prova a seguire 
in debug il flusso delle istruzioni.
Ed utilizza le 4 righe postate come spunto, non come 
soluzione definitiva.
HTH
Ciao

 Ciao
Ho risolto, grazie mille!
Gregor.