Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - ricerca valore
Forum - Visual Basic 6 - ricerca valore

Avatar
mash_mash (Normal User)
Expert


Messaggi: 230
Iscritto: 25/07/2007

Segnala al moderatore
Postato alle 11:50
Giovedì, 12/11/2009
Ciao a tutti , vi sottopongo un problema che mi attanaglia da ieri :
ho una list box 1 textbox e 1 label
nella listbox ho caricato questi elementi numerici :
700,800,900,1100,1400,1300,1500,1800,2200

nella text1 chiedo all'utente di inserire un numero ,
se il numero inserito è presente nella listbox , allora
label.caption = val(text1)
se invece il valore inserito non è presente nella lista , ma e' minore dell'ultimo
elemento allora nella caption della label deve comparirmi il 1^ valore trovato superiore a quello
digitato nella text1 , se invece il valore digitato è maggiore rispetto all'ultimo
elemento della lista allora messaggio con scritto "il valore massimo inserito è 2200".

esempio 1 : digito 1200
label.caption = 1300 (il valore successivo a quello digitato)

esempio 2 : figito 2250
label.caption = 2200 (ultimo elemento della lista) + messaggio ""il valore massimo inserito è 2200"

Pensavo inanzitutto di confrontare il valore inserito con l'ultimo della lista (per vedere se era compreso nel range della stessa lista)
dopodichè creare un array con i valori della lista , confrontarli con il valore della text1 , se ne trovo uno uguale allora
mi fermo , invece se non trovo 1 valore uguale li passo uno per uno fino a fermarmi al primo valore superiore a quello
digitato.
Voi che ne dite , potrebbe funzionare ? Mi dareste una mano a buttare giù qualcosa ?
Si può eventualmente semplificare ?
Grazie

PM Quote
Avatar
Iohoilpotere (Ex-Member)
Pro


Messaggi: 80
Iscritto: 13/09/2009

Segnala al moderatore
Postato alle 14:05
Giovedì, 12/11/2009
io di vb mi ricordo davvero poco ._. te lo scrivo in uno pseudoVB sperando possa aiutarti :)
Codice sorgente - presumibilmente C#

  1. Dim var1 as integer
  2. var1 = textbox.text 'numerizzata, ma non ricordo il comando per la conversione
  3. I = 1
  4. Do
  5.    Select case Var1
  6.        case is = listbox.item(I) 'c'è la proprietà item in vb? ._.
  7.            label.caption = var1
  8.            break 'non mi ricordo se c'è il break in vb, nel caso usa un goto xD
  9.        case is < listbox.item(I)
  10.            label.caption = listbox.item(I)
  11.            break 'come sopra ;_;
  12.         case is > listbox.item(I)
  13.             I=I+1
  14. loop until I = 'il valore massimo di una listbox, che non mi ricordo da che proprietà si vede...
  15. if label.caption = "" then
  16.    label.caption = listbox.item(I)
  17. end if



Ultima modifica effettuata da Iohoilpotere il 12/11/2009 alle 14:07
PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 15:13
Giovedì, 12/11/2009
Se nella listbox introduci i valori in ordine di grandezza (dal più piccolo al più grande)
con la proprietà Sorted=False

Private Sub Text1_Validate(Cancel As Boolean)

' guarda che non sia più piccolo del primo della lista
If Val(Text1.Text) < Val(List1.List(0)) Then
    Text1.Text = List1.List(0)
    Exit Sub
End If
' guarda che non sia più grande dell'ultimo della lista
If Val(Text1.Text) > Val(List1.List(List1.ListCount - 1)) Then
    Text1.Text=List1.List(List1.ListCount - 1)
    MsgBox "Troppo grande"
    Exit Sub
End If

Dim i As Integer
For i = 0 To List1.ListCount - 1
    If Val(Text1.Text) <= Val(List1.List(i)) Then
        Text1.Text = List1.List(i)
        Exit For
    End If
Next

End Sub

PM Quote