Italian CustomListView ReplaceAt

Fulvio75

Well-Known Member
Licensed User
Ho un problema con:

clw.ReplaceAt(CLWTextPositionId, clw.GetPanel(CLWTextPositionId), strUtil.MeasureMultilineTextHeight(CLWlbl,CLWlbl.Text)*1.3, Text)

CLWTextPositionId contiene la riga esatta dove ho scritto il testo

ovvero devo riscrivere del testo nella posizione esatta dove era stato scritto precedentemente, quando lo scrive la prima volta si vede, mentre quando faccio quanto scritto sopra viene visualizzato uno spazio grigio vuoto e non scrive nulla, credo sia dovuto a clw.GetPanel(CLWTextPositionId)
 

Sagenut

Expert
Licensed User
Longtime User
Per modificare del testo in un item della CLV non è necessario rimpiazzare l'elemento.
Puoi agire direttamente sulla Label o quel che è.
Ma se alleghi un minimo progetto di esempio è più facile, così lavoriamo sul tuo layout.
 

Fulvio75

Well-Known Member
Licensed User
Per modificare del testo in un item della CLV non è necessario rimpiazzare l'elemento.
Puoi agire direttamente sulla Label o quel che è.
Ma se alleghi un minimo progetto di esempio è più facile, così lavoriamo sul tuo layout.
Ho diversi item che vengono scritti nella clw e ovviamente ognuno ha una posizione rowid chiamiamola così... Metti che il rowid 5 contiene il testo prova, voglio che il rowid 5 diventi test.
Ho provato con clw.GetPanel(CLWTextPositionId) come secondo argomento di replaceat ma lo sfondo di quel row, item... Diventa grigio e non scrive nulla.
 

Fulvio75

Well-Known Member
Licensed User
Se hai caricato la CustomListView con AddTextItem:

clvw.GetPanel(IndiceDellItemDaModificare).GetView(0).Text = "Nuovo testo"
Grazie azzeccato come sempre... Provo e ti dico.
Quindi getview sono tutte le viste del pannello contenuto nel row della clw? In questo caso solo la label?
 

Fulvio75

Well-Known Member
Licensed User
Se hai caricato la CustomListView con AddTextItem:

clvw.GetPanel(IndiceDellItemDaModificare).GetView(0).Text = "Nuovo testo"

Funziona...

va anche questo che ho testato:

Dim itm As CLVItem

itm = clw.GetRawListItem(5)

For Each v As B4XView In itm.Panel.GetAllViewsRecursive
If v Is Label Then
v.Text = "questo"
End If
Next
 

Sagenut

Expert
Licensed User
Longtime User
Funziona...

va anche questo che ho testato:

Dim itm As CLVItem

itm = clw.GetRawListItem(5)

For Each v As B4XView In itm.Panel.GetAllViewsRecursive
If v Is Label Then
v.Text = "questo"
End If
Next
Ma perchè dovresti mettere in gioco nuove variabili, nuovi oggetti e un ciclo che fà solo un giro per fare qualcosa che puoi fare con una sola riga? :)
 
Top