Italian [B4X] B4XFloatTextField come InlineEditing dentro una B4XTable

Elric

Well-Known Member
Licensed User
Stavo studiando l'esempio della B4XTable con l'InlineEditing (https://www.b4x.com/android/forum/t...b4xtable-with-inline-editing-features.112686/).

Ho implementato varie Views e fatto qualche modifica (per alcune colonne, con il tasto sinistro del mouse si attiva una view, con il tasto destro una view alternativa).

Già che c'ero, ho voluto inserire la modifica di valori string con un B4XFloatTextField (si attiva nella colonna "String" con tasto sinistro del mouse) invece che con TextField (si attiva nella colonna "String" con tasto destro del mouse).

Problema: al primo click appare il B4XFloatTextField ma non "entra" nel field. Al secondo click non seleziona tutto il testo come vorrei.

Perché?

Allego progetto in B4J.

Grazie in anticipo!
 

Attachments

  • B4XTable B4XPages-InlineEditing_240223.zip
    13.2 KB · Views: 26
  • glbB4XTableInlineEditing.bas
    3.9 KB · Views: 24
Last edited:

Elric

Well-Known Member
Licensed User
Upvote 0

LucaMs

Expert
Licensed User
Longtime User
Vediamo se riesco, rileggendo, a capire bene il problema. Magari dopo un buon caffè!
Intanto vedo un problema ulteriore, oltre ai due che hai descritto e che ancora non ho controllato.

Usi quella variabile, ClickTypeOld, nell'evento B4XTie_EnterEditMode, in modo da poter distinguere quale "metodo" sia stato usato per modificare UNA cella.
Il problema è che usi quest'unica variabile globale per tutte le celle modificate.
Voglio dire che se hai usato il tasto destro (in B4J, in B4A sarebbe il "long press") per la colonna "String", poi te la ritrovi con valore 2 nella B4XTie_GetUpdatedValue per qualunque cella, anche quelle per cui usi il tasto sinistro.
Non so se ho spiegato bene (per te dovrebbe essere chiaro, per chi legga molto meno).
 
Upvote 0

LucaMs

Expert
Licensed User
Longtime User
Vedo che hai creato un tipo FocusedCell2.

Il tutto è alquanto complesso. Molto probabilmente potresti, invece, modificare l'originale custom type FocusedCell di Erel, aggiungendo un "campo" che conservi il modo in cui hai selezionato la cella, quei ClickType.

Dovrei provare, riscrivere "tutto", ma... chi mi paga per così "tanto" lavoro? 😄 (Già il tempo per analizzare 'sta cosa non è stato poco).
Credo che la "dritta" preDecente, modificare il tipo FocusedCell originale, in quel modo e senza dover complicare le cose con un secondo tipo, dovrebbe bastarti per fare delle prove.

Comunque, provo anche a guardare la faccenda "focus" e "select text", col tuo progetto NON modificato da me.
 
Upvote 0

Star-Dust

Expert
Licensed User
Longtime User
video5-gif.75761


Questo perchè non si usano le librerie giuste
 
Upvote 0

LucaMs

Expert
Licensed User
Longtime User
Problema: al primo click appare il B4XFloatTextField ma non "entra" nel field
B4X:
Private Sub SetB4XFloatTextField
    B4XFloatTextField1.mBase.SetColorAndBorder(xui.Color_Transparent, 0, 0, 0)
    Dim tf As B4XFloatTextField = B4XFloatTextField1
    Sleep(0)
    tf.TextField.RequestFocus ' <-- Aggiunta
    tf.TextField.SelectionStart = 0
    tf.TextField.SelectAll
End Sub
 
Upvote 0

Elric

Well-Known Member
Licensed User
B4X:
Private Sub SetB4XFloatTextField
    B4XFloatTextField1.mBase.SetColorAndBorder(xui.Color_Transparent, 0, 0, 0)
    Dim tf As B4XFloatTextField = B4XFloatTextField1
    Sleep(0)
    tf.TextField.RequestFocus ' <-- Aggiunta
    tf.TextField.SelectionStart = 0
    tf.TextField.SelectAll
End Sub
Ecco, vedi? Bastava "tf.TextField.RequestFocus"... ☕

video5-gif.75761


Questo perchè non si usano le librerie giuste
Questa mi piace molto e la devo ancora testare.

Nel frattempo mi dedicavo allo studio e alle prove!
 
Upvote 0
Top