Définir automatiquement nlines pour la zone d'édition de texte ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour amis JMPers,
Avec zones de texte vous définissez les pixels d'habillage et de largeur et la hauteur de la zone de texte est automatiquement définie suffisamment grande pour accueillir le texte.Par exemple:
mon_narr = "Bacon ipsum dolor amet surlonge short longe meatloaf doner, épaule porc poitrine bacon cochon boudin alcatra jambon jarret chuck hamburger corned beef. Côtelette de porc saucisse landjaeger saucisse de Francfort biltong doner longe de porc jambon pastrami surlonge grasse. Côtes courtes de corned-beef au prosciutto. Épaule de filet mignon en pointe de boule, landjaeger corned beef fatback jarret de vache venaison côtelette de porc bacon boulette de viande bresaola leberkas. Tri-tip short ribs andouille tail prosciutto döner porc haché ronde meatloaf pancetta boudin.
Poitrine de boeuf bacon, côtes de boeuf landjaeger filet alcatra t-bone côtes courtes venaison graisse capicola cochon picanha. Poitrine de salami doner pilon longe de porc jarret de poulet corned-beef côtes courtes mandrin boulette de viande t-bone. Andouille frankfurter rumsteak landjaeger bacon boeuf jambon jarret hamburger flanc picanha. Poitrine courte de flanc de flanc de porc hamburger saucisse de poitrine de porc bresaola doner. Biltong prosciutto jerky, côtes levées porchetta picanha croupe de porc porc longe de porc cupim." ;
nouveau = nouvelle fenetre ( "Test" ,
tuberculose = zone de texte ( mon_narr ) ,
) ;
tuberculose << enveloppement ( 600 ) << définir la largeur ( 600 ) ;
J'ai de longs textes que je mets dans des zones d'édition de texte, car les utilisateurs veulent copier/coller des parties de l'information.Cependant, les zones d'édition de texte doivent définir la hauteur à l'aide de définir nlignes .
nouveau = nouvelle fenetre ( "Test" ,
teb = zone d'édition de texte ( mon_narr ) ,
) ;
teb << enveloppement ( 600 ) << définir la largeur ( 600 ) << définir nlignes ( dix ) ;
Existe-t-il un moyen astucieux de calculer le nombre de lignes d'un long texte ?J'ai trouvé un moyen de le faire, mais cela semble maladroit.J'ai joint le code nécessaire pour exécuter cet exemple.Il y a deux fonctions, get_num_lines et mon_analyse .J'ai dû écrire mon propre analyseur pour gérer des délimiteurs arbitrairement longs et deux occurrences ou plus d'un délimiteur sans rien entre les deux.
nouveau = nouvelle fenetre ( "Test" ,
teb = zone d'édition de texte ( mon_narr ) ,
) ;
num_lines = get_num_lines( mon_narr , 600 ) ;
teb << enveloppement ( 600 ) << définir la largeur ( 600 ) << définir nlignes ( num_lines ) ;
Re : Définir automatiquement nlines pour la zone d'édition de texte ?Merci MS qui m'a mis sur la bonne voie.Merci pour une solution simple et astucieuse !
Cette équation semble fonctionner un peu mieux que hauteur / (taille de police + 1):
nlignes = maximum ( 1 , sol ( .6264918 * hauteur / taille de police - 1.567659 )) ;
Addenda:
Cela fonctionne mieux pour un faible nombre de caractères :
nlignes = maximum ( 1 , rond ( .5204443 * hauteur / taille de police )) ;
Re : Définir automatiquement nlines pour la zone d'édition de texte ?Une idée serait d'utiliser la capacité de dimensionnement automatique de la zone de texte. Le nombre de lignes semble égal à ce rapport : height_of_textbox / (fontsize+1).
mon_narr =
"Bacon ipsum dolor amet surlonge short longe meatloaf doner, épaule porc poitrine bacon cochon boudin alcatra jambon jarret chuck hamburger corned beef. Côtelette de porc saucisse landjaeger saucisse de Francfort biltong doner longe de porc jambon pastrami surlonge grasse. Côtes courtes de corned-beef au prosciutto. Épaule de filet mignon en pointe de boule, landjaeger corned beef fatback jarret de vache venaison côtelette de porc bacon boulette de viande bresaola leberkas. Tri-tip short ribs andouille tail prosciutto döner porc haché ronde meatloaf pancetta boudin.
Poitrine de boeuf bacon, côtes de boeuf landjaeger filet alcatra t-bone côtes courtes venaison graisse capicola cochon picanha. Poitrine de salami doner pilon longe de porc jarret de poulet corned-beef côtes courtes mandrin boulette de viande t-bone. Andouille frankfurter rumsteak landjaeger bacon boeuf jambon jarret hamburger flanc picanha. Poitrine courte de flanc de flanc de porc hamburger saucisse de poitrine de porc bresaola doner. Biltong prosciutto jerky, côtes levées porchetta picanha croupe de porc porc longe de porc cupim." ;
w = 450 ; // Enveloppe et largeur
tuberculose = Zone de texte ( mon_narr , enveloppement ( w ) , définir la largeur ( w ) , cacher ( 1 )) ; // Zone de texte invisible temporaire
nouveau = Nouvelle fenetre ( "Test" , tuberculose ) ;
// Obtenir des informations sur la taille
hauteur = ( tuberculose << obtenir la taille )[ 2 ] ;
taille de police = tuberculose << obtenir la taille de la police ;
nlignes = hauteur / ( taille de police + 1 ) ;
//nlignes++; // Ajoutez +1 pour obtenir du rembourrage ; la sélection du contenu TextEditBox augmente sa taille
tuberculose << supprimer ;
//Ajouter TextEditBox avec la même taille que TextBox
teb = Zone d'édition de texte ( mon_narr , enveloppement ( w ) , définir la largeur ( w ) , définir nlignes ( nlignes )) ;
nouveau << ajouter ( teb ) ;