Con la funzione MeasureMultilineTextHeight di StringUtils si può impostare l’altezza di una label in funzione del testo.
Io viceversa vorrei l’opposto, ossia stabilire la lunghezza del testo da visualizzare in funzione di una altezsa e laghezza fisse di una label. Questo allo scopo di visualizzare un “(segue)” oppure una serie 3 puntini “...” alla fine di un testo. Ovviamente al testo che riempirebbe completamente la label (di dimensioni fisse) sottrarrei 7 od 8 caratteri ed aggiungerei appunto il “(segue)” o il “ ...” in basso a destra.
Come potrei risolvere il problema visto che un Left(Testo,Lunghezza) produce risultati diversi a seconda dei testo stesso ?
Qualcosa come
Grazie per l’attenzione
P.S.: un ulteriore miglioramento sarebbe troncare il testo in corrispondenza di uno spazio o dopo un segno di interpunzione.
B4X:
Dim minHeight As Int
minHeight = su.MeasureMultilineTextHeight(lbl, Text)
lbl.Height = Max(50dip, minHeight)
Io viceversa vorrei l’opposto, ossia stabilire la lunghezza del testo da visualizzare in funzione di una altezsa e laghezza fisse di una label. Questo allo scopo di visualizzare un “(segue)” oppure una serie 3 puntini “...” alla fine di un testo. Ovviamente al testo che riempirebbe completamente la label (di dimensioni fisse) sottrarrei 7 od 8 caratteri ed aggiungerei appunto il “(segue)” o il “ ...” in basso a destra.
Come potrei risolvere il problema visto che un Left(Testo,Lunghezza) produce risultati diversi a seconda dei testo stesso ?
Qualcosa come
B4X:
Testo=TagliaInFunzioneDelleDimensioniDellaLabel(Testo,lbl.width,lbl.height)
P.S.: un ulteriore miglioramento sarebbe troncare il testo in corrispondenza di uno spazio o dopo un segno di interpunzione.