Imposta automaticamente nline per la casella di modifica del testo?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salve amici JMPer,
Con caselle di testo imposti i pixel di avvolgimento e larghezza e l'altezza della casella di testo viene impostata automaticamente abbastanza grande da contenere il testo.Per esempio:
mio_narr = "Bacon ipsum dolor amet controfiletto doner di polpettone di lombo corto, spalla petto di maiale pancetta maiale boudin alcatra garretto di prosciutto chuck hamburger carne in scatola. Braciola di maiale salsiccia landjaeger wurstel biltong doner lombo di maiale prosciutto pastrami controfiletto di grasso. Costolette di manzo in scatola al prosciutto di petto. Spalla di filetto mignon con punta sferica, carne in scatola di manzo alla landjaeger, stinco di vacca, cervo, braciola di maiale, pancetta, polpette, bresaola, leberkas. Tri-punta costolette coda di andouille prosciutto doner suino macinato polpettone pancetta boudin.
Pancetta di manzo al petto, costolette di manzo landjaeger filetto di alcatra costolette corte di cervo grasso capicola picanha maiale. Petto di salame doner bacchetta di maiale lonza di maiale stinco di pollo costolette di manzo in scatola mandrino polpetta t-bone. Andouille wurstel fesa bistecca di manzo landjaeger pancetta manzo prosciutto garretto hamburger fianco picanha. Petto corto lombo fianco hamburger pancetta di maiale salsiccia bresaola doner. Biltong prosciutto essiccato, costine porchetta picanha scamone di maiale suino lombo di maiale cupim. ;
nw = nuova finestra ( "Test" ,
tb = casella di testo ( mio_narr ) ,
) ;
tb << impostare avvolgere ( 600 ) << impostare la larghezza ( 600 ) ;
Ho alcuni testi lunghi che inserisco nelle caselle di modifica del testo, perché gli utenti vogliono copiare/incollare parti delle informazioni.Tuttavia, le caselle di modifica del testo devono impostare l'altezza utilizzando impostare nlinee .
nw = nuova finestra ( "Test" ,
teb = casella di modifica del testo ( mio_narr ) ,
) ;
teb << impostare avvolgere ( 600 ) << impostare la larghezza ( 600 ) << impostare nlinee ( 10 ) ;
C'è un modo semplice per calcolare il numero di righe dato un testo lungo?Ho trovato un modo per farlo, ma sembra goffo.Ho allegato il codice necessario per eseguire questo esempio.Ci sono due funzioni, ottieni_num_linee E my_parse .Ho dovuto scrivere il mio parser per gestire delimitatori arbitrariamente lunghi e due o più occorrenze di un delimitatore senza nulla in mezzo.
nw = nuova finestra ( "Test" ,
teb = casella di modifica del testo ( mio_narr ) ,
) ;
num_righe = get_num_line( mio_narr , 600 ) ;
teb << impostare avvolgere ( 600 ) << impostare la larghezza ( 600 ) << impostare nlinee ( num_righe ) ;
Ri: Impostare automaticamente le nline per la casella di modifica del testo?Grazie MS che mi ha portato sulla strada giusta.Grazie per una semplice soluzione intelligente!
Questa equazione sembra funzionare un po' meglio di height / (fontsize+1):
nlines = max ( 1 , pavimento ( .6264918 * altezza / dimensione del font - 1.567659 )) ;
Addendum:
Funziona meglio per un basso numero di caratteri:
nlines = max ( 1 , girare ( .5204443 * altezza / dimensione del font )) ;
Ri: Impostare automaticamente le nline per la casella di modifica del testo?Un'idea potrebbe essere quella di utilizzare la capacità di ridimensionamento automatico della casella di testo. Il numero di righe sembra essere uguale a questo rapporto: height_of_textbox / (fontsize+1).
mio_narr =
"Bacon ipsum dolor amet controfiletto doner di polpettone di lombo corto, spalla petto di maiale pancetta boudin di maiale alcatra garretto di prosciutto chuck hamburger carne in scatola. Braciola di maiale salsiccia landjaeger wurstel biltong doner lombo di maiale prosciutto pastrami controfiletto di grasso. Costolette di manzo in scatola al prosciutto di petto. Spalla di filetto mignon con punta sferica, carne in scatola di manzo alla landjaeger, stinco di vacca, cervo, braciola di maiale, pancetta, polpette, bresaola, leberkas. Tri-punta costolette coda di andouille prosciutto doner suino macinato polpettone pancetta boudin.
Pancetta di manzo al petto, costolette di manzo landjaeger filetto di alcatra costolette corte di cervo grasso capicola picanha maiale. Petto di salame doner bacchetta di maiale lonza di maiale stinco di pollo costolette di manzo in scatola mandrino polpetta t-bone. Andouille wurstel fesa bistecca di manzo landjaeger pancetta manzo prosciutto garretto hamburger fianco picanha. Petto corto lombo fianco hamburger pancetta di maiale salsiccia bresaola doner. Biltong prosciutto essiccato, costine porchetta picanha scamone di maiale suino lombo di maiale cupim. ;
w = 450 ; // Avvolgi e larghezza
tb = Casella di testo ( mio_narr , impostare avvolgere ( w ) , impostare la larghezza ( w ) , nascondere ( 1 )) ; // Casella di testo invisibile temporanea
nw = Nuova finestra ( "Test" , tb ) ;
// Ottieni informazioni sulle dimensioni
altezza = ( tb << prendi la taglia )[ 2 ] ;
dimensione del font = tb << ottenere la dimensione del carattere ;
nlines = altezza / ( dimensione del font + 1 ) ;
//nlines++; // Aggiungi +1 per ottenere un po' di riempimento; la selezione del contenuto di TextEditBox ne aumenta le dimensioni
tb << eliminare ;
//Aggiungi TextEditBox con le stesse dimensioni del TextBox
teb = Casella di modifica del testo ( mio_narr , impostare avvolgere ( w ) , impostare la larghezza ( w ) , impostare nlinee ( nlines )) ;
nw << aggiungere ( teb ) ;