Italian Ordine del Tab

Vasmar

Member
Licensed User
Buonasera a tutti,
non riesco a fare una cosa semplice: nella videata ho 4 campi digitabili e vorrei che il Tab seguisse un certo ordine passando al successivo, invece segue un ordine suo, sembra che vada da sinistra a destra, indipendentemente dall'altezza (.top) del campo. Ho provato a cancellare i campi, salvare ed uscire, poi reinserirli, definirli nel codice e inizializzarli nell'ordine voluto. Nulla da fare.
Nelle proprietà non trovo il parametro che in VB6 era TabIndex, cioè l'ordine di passaggio del focus saltando con il Tab.
Ho speranze?
Grazie.
 

LucaMs

Expert
Licensed User
Longtime User
Ho speranze?
Si sa, è l'ultima a morire (aggiungerei "purtroppo" ma poi dovrei spiegare, quindi non lo scrivo 🤣)

E' molto semplice, nella "Views Tree" (sulla sinistra), puoi spostare i "4 campi digitabili" (*) in alto/basso; l'ordine in cui li vedi in quell'albero sarà quello di tabulazione (il più in alto sarà quello che avrà il "TabIndex" (virtuale) minore, il più in basso sarà l'ultimo nella tabulazione.

(*)
Qui, nel forum italiano, sarebbe meglio che tu specificassi se la tua domanda riguardi B4A, B4J, B4i (o perfino B4R). A volte si intuisce dalla domanda, altre no.
I "campi digitabili" principali, in B4A sono EditText, in B4J TextField, in B4i... non ne ho idea, non lo ho. Anche, ma di certo non soprattutto, per quest'ultimo motivo, è meglio creare delle B4XFloatTextField per i campi di immissione (digitabili), che esistono per tutti e 3, sono custom view (i "controlli" personalizzati di VB6) cross-platform.
 
Last edited:

Vasmar

Member
Licensed User
Si sa, è l'ultima a morire (aggiungerei "purtroppo" ma poi dovrei spiegare, quindi non lo scrivo 🤣)
😆

Hai ragione, scusami.
Siamo in B4A, I campi digitabili sono EditText. Nell'albero però sono anche lì nell'ordine giusto. Ho due EditText in alto , uno molto a sinistra e uno molto a destra (1 e 2), poi più in basso ho due EditText vicini e centrali (3 e 4). Il tab me li sposta nell'ordine 1, 3, 4, 2, come se tenesse conto solo del .left 🤷‍♀️
Nelle opzioni del Designer non trovo B4XFloatTextField 🤔
 

Sagenut

Expert
Licensed User
Longtime User
Puoi postare una immagine della Views Tree del Designer (che trovi a sinistra)?
 

Sagenut

Expert
Licensed User
Longtime User
Nelle opzioni del Designer non trovo B4XFloatTextField 🤔
Devi selezionare la libreria XuiViews e poi nel Designer troverai nuove voci sotto Custom views.
 

LucaMs

Expert
Licensed User
Longtime User
😆

Hai ragione, scusami.
Siamo in B4A, I campi digitabili sono EditText. Nell'albero però sono anche lì nell'ordine giusto. Ho due EditText in alto , uno molto a sinistra e uno molto a destra (1 e 2), poi più in basso ho due EditText vicini e centrali (3 e 4). Il tab me li sposta nell'ordine 1, 3, 4, 2, come se tenesse conto solo del .left 🤷‍♀️
Nelle opzioni del Designer non trovo B4XFloatTextField 🤔

1753877667224.png
 

Vasmar

Member
Licensed User
Ecco qua,
i campi "incriminati" sono Gio1, Gio2, TempoMin e TempoSec. Mi passa da Gio1 a TempoMin, TempoSec e poi a Gio2
 

Attachments

  • Immagine 2025-07-30 153646.jpg
    Immagine 2025-07-30 153646.jpg
    146.7 KB · Views: 96

Vasmar

Member
Licensed User
Nel Layout non c'è nulla, ho due Sub per i casi di modalità Landscape o Portrait
Questo è il codice del Portrait
private Sub Portra
Var.MyImage.Initialize(File.DirAssets, "TitoloP.png")
Titolo.Left = 2%x
Titolo.Top = 2%y
Titolo.Width = 96%x
Titolo.Height = 18%y

LabG1.Left = Titolo.Left
LabG1.Top = Titolo.top + Titolo.Height + 12%y
LabG1.Width = 47%x
LabG1.Height = 5%y
LabG2.Left = (Sfondo.Width / 2) + 2%x
LabG2.Top = LabG1.Top
LabG2.Width = LabG1.Width
LabG2.Height = LabG1.Height

Gio1.Left = LabG1.Left
Gio1.Top = LabG1.top + LabG1.Height
Gio1.Width = LabG1.Width
Gio1.Height = 6%y
Gio2.Left = LabG2.Left
Gio2.Top = Gio1.Top
Gio2.Width = Gio1.Width
Gio2.Height = Gio1.Height

LabTempo.Width = 35%x
LabTempo.Left = (Sfondo.Width / 2) - (LabTempo.Width / 2)
LabTempo.Height = 6%y
LabTempo.Top = Gio1.Top + Gio1.Height + 9%y
TempoMin.Width = 12%x
TempoMin.Left = (Sfondo.Width / 2) - (TempoMin.Width + 1%x)
TempoMin.Height = Gio1.Height
TempoMin.Top = LabTempo.Top + LabTempo.Height + 1%y
TempoSec.Width = TempoMin.Width
TempoSec.Left = (Sfondo.Width / 2) + 2%x
TempoSec.Height = Gio1.Height
TempoSec.Top = TempoMin.Top
LbMin.Left = TempoMin.Left
LbMin.Width = TempoMin.Width
LbMin.Top = TempoMin.Top + TempoMin.Height - 2%y
LbMin.Height = 35dip
LbSec.Left = TempoSec.Left
LbSec.Width = TempoSec.Width
LbSec.Top = LbMin.Top
LbSec.Height = LbMin.Height

Go.Width = LabTempo.Width
Go.Left = LabTempo.Left
Go.Height = Gio1.Height
Go.Top = Sfondo.Height -Go.Height - 2%y
Usci.Left = 1%x
Usci.Top = Sfondo.Height - Usci.Height
Usci.TextColor = Colors.White
Usci.Height = 25dip
Usci.Width = Usci.Height
EBot.Height = 10dip
EBot.Top = Sfondo.Height - EBot.Height
EBot.Width = Usci.Height
EBot.Left = Sfondo.Width - 1%x

Gio1.RequestFocus
End Sub
 

Sagenut

Expert
Licensed User
Longtime User
Probabilmente è ininfluente, però mi pare di vedere del codice anche nello Script del Designer.
 

Vasmar

Member
Licensed User
Ho provato con l'albero ma non cambia nulla, tranne che se metto qualcosa prima dello Sfondo, il qualcosa diventa invisibile, Immagino perché lo metta in secondo piano.
Ho provato a togliere le Sub relative a TextChanged e FocusChanged ma non cambia
 

LucaMs

Expert
Licensed User
Longtime User
Prova quello allegato qui
SENZA quel tuo codice nel progetto:
Nel Layout non c'è nulla, ho due Sub per i casi di modalità Landscape o Portrait
Questo è il codice del Portrait
private Sub Portra
Var.MyImage.Initialize(File.DirAssets, "TitoloP.png")
Titolo.Left = 2%x
Titolo.Top = 2%y
Titolo.Width = 96%x
Titolo.Height = 18%y

LabG1.Left = Titolo.Left
LabG1.Top = Titolo.top + Titolo.Height + 12%y
LabG1.Width = 47%x
LabG1.Height = 5%y
LabG2.Left = (Sfondo.Width / 2) + 2%x
LabG2.Top = LabG1.Top
LabG2.Width = LabG1.Width
LabG2.Height = LabG1.Height

Gio1.Left = LabG1.Left
Gio1.Top = LabG1.top + LabG1.Height
Gio1.Width = LabG1.Width
Gio1.Height = 6%y
Gio2.Left = LabG2.Left
Gio2.Top = Gio1.Top
Gio2.Width = Gio1.Width
Gio2.Height = Gio1.Height

LabTempo.Width = 35%x
LabTempo.Left = (Sfondo.Width / 2) - (LabTempo.Width / 2)
LabTempo.Height = 6%y
LabTempo.Top = Gio1.Top + Gio1.Height + 9%y
TempoMin.Width = 12%x
TempoMin.Left = (Sfondo.Width / 2) - (TempoMin.Width + 1%x)
TempoMin.Height = Gio1.Height
TempoMin.Top = LabTempo.Top + LabTempo.Height + 1%y
TempoSec.Width = TempoMin.Width
TempoSec.Left = (Sfondo.Width / 2) + 2%x
TempoSec.Height = Gio1.Height
TempoSec.Top = TempoMin.Top
LbMin.Left = TempoMin.Left
LbMin.Width = TempoMin.Width
LbMin.Top = TempoMin.Top + TempoMin.Height - 2%y
LbMin.Height = 35dip
LbSec.Left = TempoSec.Left
LbSec.Width = TempoSec.Width
LbSec.Top = LbMin.Top
LbSec.Height = LbMin.Height

Go.Width = LabTempo.Width
Go.Left = LabTempo.Left
Go.Height = Gio1.Height
Go.Top = Sfondo.Height -Go.Height - 2%y
Usci.Left = 1%x
Usci.Top = Sfondo.Height - Usci.Height
Usci.TextColor = Colors.White
Usci.Height = 25dip
Usci.Width = Usci.Height
EBot.Height = 10dip
EBot.Top = Sfondo.Height - EBot.Height
EBot.Width = Usci.Height
EBot.Left = Sfondo.Width - 1%x

Gio1.RequestFocus
End Sub
 

Vasmar

Member
Licensed User
Ho provato, togliendo dal mio programma i riferimenti a .left e .widht degli EditText sui quali sei intervenuto, non ho capito bene cosa hai fatto, ma qualcosa è cambiato. Adesso la sequenza dei posizionamenti è Gio1, TempoMin, Gio2, TempoSec anziché Gio1, TempoMin, TempoSec, Gio2.
 

Vasmar

Member
Licensed User
Ho letto solo dopo il tuo ultimo post. Ho tolto completamente il mio codice e il risultato è stato: Gio1, Gio2, TempoSec. Per TempoMin non ci passa proprio.
Però la Label LabTempo diventa molto grande e copre TempoMin e Il Bottone Go si posiziona al centro sia orizzontale che verticale, sopra la label LabTempo.
Non so se sono stato chiaro, allego uno screenshot.
Ho inserito i numeri da 1 a 4, il 2 non si vede perché la label del giocatore 2 copre il testo, ma è lì. Il 4 è andato nel campo-tappo in fondo EBot
 

Attachments

  • 2025-07-30 ore 18.03.21_9c2fc304.jpg
    2025-07-30 ore 18.03.21_9c2fc304.jpg
    58 KB · Views: 82
Top