¿Configurar automáticamente nlines para el cuadro de edición de texto?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola compañeros JMPers,
Con cajas de texto establece los píxeles de ajuste y ancho y la altura del cuadro de texto se establece automáticamente lo suficientemente grande como para acomodar el texto.Por ejemplo:
mi_narr = "Bacon ipsum dolor amet solomillo lomo corto pastel de carne doner, lomo cerdo pechuga tocino cerdo boudin alcatra jamón corvejón chuck hamburguesa corned beef. Chuleta de cerdo salchicha landjaeger frankfurter biltong doner lomo de cerdo jamón pastrami solomillo gordo. Brisket prosciutto corned beef short ribs. Paleta de filet mignon con punta de bola, ternera en conserva landjaeger, pierna de vaca, chuleta de cerdo, albóndigas con tocino, bresaola leberkas. Costillas cortas de tres puntas andouille cola prosciutto doner porcino pastel de carne redondo molido pancetta boudin.
Pechuga de ternera, tocino, costillas de ternera landjaeger, lomo, alcatra, chuletón, costillas, lomo de venado, capicola, picanha, cerdo. Pechuga de salami doner muslo de cerdo pierna de lomo pollo carne en conserva costillas cortas chuck albóndiga t-bone. Andouille frankfurter filete de lomo landjaeger tocino ternera jamón codillo hamburguesa flanco picanha. Hamburguesa de falda de lomo corto falda de cerdo salchicha de panceta bresaola doner. Biltong prosciutto jerky, costillas de cerdo porchetta picanha lomo de cerdo lomo de cerdo cupim". ;
noroeste = nueva ventana ( "Prueba" ,
tuberculosis = caja de texto ( mi_narr ) ,
) ;
tuberculosis << conjunto de envoltura ( 600 ) << establecer ancho ( 600 ) ;
Tengo algunos textos largos que coloco en cuadros de edición de texto, porque los usuarios quieren copiar y pegar partes de la información.Sin embargo, los cuadros de edición de texto deben establecer la altura usando establecer nlines .
noroeste = nueva ventana ( "Prueba" ,
Teb = cuadro de edición de texto ( mi_narr ) ,
) ;
Teb << conjunto de envoltura ( 600 ) << establecer ancho ( 600 ) << establecer nlines ( 10 ) ;
¿Hay alguna forma ingeniosa de calcular el número de líneas de un texto extenso?Se me ocurrió una manera de hacerlo, pero parece torpe.He adjuntado el código necesario para ejecutar este ejemplo.Hay dos funciones, get_num_lines y mi_análisis .Tuve que escribir mi propio analizador para manejar delimitadores arbitrariamente largos y dos o más ocurrencias de un delimitador sin nada en el medio.
noroeste = nueva ventana ( "Prueba" ,
Teb = cuadro de edición de texto ( mi_narr ) ,
) ;
núm_líneas = get_num_lines( mi_narr , 600 ) ;
Teb << conjunto de envoltura ( 600 ) << establecer ancho ( 600 ) << establecer nlines ( núm_líneas ) ;
Re: ¿Configurar automáticamente nlines para el cuadro de edición de texto?Gracias MS que me puso en el camino correcto.¡Gracias por una solución simple y elegante!
Esta ecuación parece funcionar un poco mejor que altura/(tamaño de fuente+1):
líneas = máximo ( 1 , piso ( .6264918 * altura / tamaño de fuente - 1.567659 )) ;
Apéndice:
Esto funciona mejor para un número bajo de caracteres:
líneas = máximo ( 1 , redondo ( .5204443 * altura / tamaño de fuente )) ;
Re: ¿Configurar automáticamente nlines para el cuadro de edición de texto?Una idea sería utilizar la capacidad de cambio de tamaño automático del cuadro de texto. El número de líneas parece ser igual a esta proporción: height_of_textbox / (fontsize+1).
mi_narr =
"Bacon ipsum dolor amet solomillo lomo corto pastel de carne doner, lomo cerdo pechuga tocino cerdo boudin alcatra jamón corvejón chuck hamburguesa corned beef. Chuleta de cerdo salchicha landjaeger frankfurter biltong doner lomo de cerdo jamón pastrami solomillo gordo. Brisket prosciutto corned beef short ribs. Paleta de filet mignon con punta de bola, ternera en conserva landjaeger, pierna de vaca, chuleta de cerdo, albóndigas con tocino, bresaola leberkas. Costillas cortas de tres puntas andouille cola prosciutto doner porcino pastel de carne redondo molido pancetta boudin.
Pechuga de ternera, tocino, costillas de ternera landjaeger, lomo, alcatra, chuletón, costillas, lomo de venado, capicola, picanha, cerdo. Pechuga de salami doner muslo de cerdo pierna de lomo pollo carne en conserva costillas cortas chuck albóndiga t-bone. Andouille frankfurter filete de lomo landjaeger tocino ternera jamón codillo hamburguesa flanco picanha. Hamburguesa de falda de lomo corto falda de cerdo salchicha de panceta bresaola doner. Biltong prosciutto jerky, costillas de cerdo porchetta picanha lomo de cerdo lomo de cerdo cupim". ;
w = 450 ; // Envolver y ancho
tuberculosis = Caja de texto ( mi_narr , conjunto de envoltura ( w ) , establecer ancho ( w ) , esconder ( 1 )) ; // cuadro de texto invisible temporal
noroeste = Nueva ventana ( "Prueba" , tuberculosis ) ;
// Obtener información de tamaño
altura = ( tuberculosis << obtener tamaño )[ 2 ] ;
tamaño de fuente = tuberculosis << obtener tamaño de fuente ;
líneas = altura / ( tamaño de fuente + 1 ) ;
//líneas++; // Agrega +1 para obtener algo de relleno; la selección de contenido de TextEditBox aumenta su tamaño
tuberculosis << borrar ;
//Anexar TextEditBox con el mismo tamaño que el TextBox
Teb = Cuadro de edición de texto ( mi_narr , conjunto de envoltura ( w ) , establecer ancho ( w ) , establecer nlines ( líneas )) ;
noroeste << adjuntar ( Teb ) ;