Newsgroup: it.comp.lang.visual-basic
Titolo: Come spostarsi da un textbox all'altro senza il tasto TAB?

Salve, il mio problema č il seguente:
Ho 10 TextBox con Maxlengh=1
Io vorrei spostare lo stato attivo da un TextBox all'altro dopo
l'inserimento dei dati.
Praticamente non voglio utilizzare nč il mouse ne il tasto tab, voglio che
il cursore si sposti automaticamente.
Ho provato cosě:
Private Sub Caselle_Change(Index As Integer)
For I = 0 To 9
Caselle(I).SetFocus
Next I
End Sub
Ma in questo modo lo stato attivo passa dal primo textbox all'ultimo.
Io vorrei che il cursore passasse dal primo al secondo al terzo... e cosě
via, ovviamente dopo aver inserito una lettera.
Grazie per la collaborazione, ciao a tutti.
Salvatore

 l'inserimento dei dati.
Gestendo l'evento su ogni singola text box
Ciao Gab

 via, ovviamente dopo aver inserito una lettera.
Il For va da 0 a 9, quindi l'ultimo (dopo tutti gli altri) che prende il
fuoco è il 9.
Fai Caselle(3).SetFocus e vedrai che il fuoco lo prende il Caselle(3)...

 ha scritto nel messaggio
news:b9tc8t$5uq$1...@lacerta.tiscalinet.it...

Se la tua textbox si chiama t_Testo
Private Sub t_Testo_Change()
   If Len(t_Testo) = 1 Then
       SendKeys "{tab}", True
   End If
End Sub

 End Sub

 > End Sub
Io preferisco la soluzione del sendkeys in quanto funziona anche con
l'ultima
casella senza conoscere il nome del controllo successivo che deve avere il
focus e funziona anche quando le caselle non sono indexate. Nel caso delle
textbox 'indexate':
Private Sub t_Testo_Change(Index as Integer)
    If Len(t_Testo(Index)) = 1 Then
        SendKeys "{tab}", True
    End If
End Sub
Ma naturalmente è solo un'opinione.

 focus e funziona anche quando le caselle non sono indexate.
Certamente! Anch'io la uso per intercettare il tasto Invio/Return emulando
il Tab (visto che M$ dopo avercelo imposto per lusti, se non per decenni,
l'ha cambiato in Tab... no, vecchia discussione, letta e riletta: non cambio
idea! Il Tab è, ancora oggi, più piccolo rispetto all'altro), ma nel caso
specifico (tenuto conto anche della palese carenza ... logica nel codice
pubblicato)?

> End Sub
Private Sub Caselle_Change(Index As Integer)
    If Len(Caselle(Index)) = 1 Then
        If Index < Caselle.UBound Then
            Caselle(Index+1).SetFocus
        Else
            Caselle(0).SetFocus
        End If
    End If
End Sub
Happy Coding =)
Lokar
--
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
UGIdotNET - 
http://www.ugidotnet.org

         If Index < 10 Then

>         If Index < Caselle.UBound Then
Ritiro tutto (anche la coda, fra le gambe).
Giuro che stavo scrivendo "quella sintassi mi sembra molto strana", ma ho
voluto provarla.
Ora, senza remora alcuna: Bravo e Grazie!

 pubblicato)?
hehehe, come per altri tuoi post
(vedere "[?] Printer.Width..." del 07/05/03) rispondo:
"Come al solito mi associo;-)"

 Ora, senza remora alcuna: Bravo e Grazie!
Prego ma non e' il caso di esagerare. :)


 standard per qualunque tipo di lista in .NET).
ehm... non per fare il bastian contrario, vorrei segnalare un piccolo
problema, anche se non ha diretta attinenza con il quesito posto dall' OP:
le matrici di controlli non sono matrici.
Nel nostro caso, a parte la diversa sintassi dell'ubound, ci deve
preoccupare il fatto che non è assolutamente garantito che gli indici siano
in successione numerica.
Tradotto, vuol dire che ci possono essere dei buchi nella numerazione,
quindi non è detto che il controllo index + 1 esista.
Come ovviare al problema? Vado a ripassare, e poi vediamo ;-)
Salutoni
Sergio

 Prego ma non e' il caso di esagerare. :)
No, non esageravo, infatti.
E' stato un bel regalo.
Appuntato, col tuo nick a fianco.

l'inserimento dei dati.
Ho fatto la prova con 6 (numero) textbox (quindi adatta tu a 10):
Metti 6 (numero) textbox sulla form e copia il codice:
----------------------------
Private Sub Text1_Change(Index As Integer)
     i = Index
     For i = 0 To i + 1
      If i < 6 Then
        Text1(i).Enabled = True
        Text1(i).SetFocus
      Else
        MsgBox "Fine Caselle!"
        Exit Sub
      End If
     Next i
End Sub
---------------------------
Se i textbox sono in ordine di Tab, digitando una lettera si passa da
una text box all'altra.
Pשע andare?
Andrea.

 e poi vediamo ;-)
Ho aperto un nuovo thread a riguardo, ci vediamo di la'! ;)
