Zeilen für Textbearbeitungsfeld automatisch festlegen?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo liebe JMPler,
Mit Textfelder Sie legen die Umbruch- und Breitenpixel fest und die Höhe des Textfelds wird automatisch groß genug eingestellt, um den Text aufzunehmen.Zum Beispiel:
mein_narr = „Bacon ipsum dolor amet Lendenstück kurze Lende Hackbraten Döner, Schulter Schweinebrust Speck Schwein Boudin Alcatra Schinken Hock Chuck Hamburger Corned Beef. Schweinekotelett Landjägerwurst Frankfurter Biltong Döner Schweinelende Schinken Pastrami Fatback Lendenstück. Kurze Rippchen mit Rinderschinken und Corned Beef. Filet-Mignon-Schulter mit Kugelspitze, Landjaeger-Corned-Beef, Fatback-Kuhhaxe, Wildbret, Schweinekotelett, Speck, Fleischbällchen, Bresaola-Leberkas. Tri-Tip Short Ribs Andouille Tail Prosciutto Döner vom Schwein gemahlener runder Hackbraten Pancetta Boudin.
Rinderbrustspeck, Landjaeger-Rinderrippen, Filet, Alcatra-T-Bone, kurze Rippen, Wildbret, Capicola-Picanha-Schwein. Salami, Rinderbrust, Döner, Trommelkeule, Schweinelende, Hähnchen, Corned Beef, kurze Rippen, Futter, Fleischbällchen, T-Bone. Andouille, Frankfurter Rumpsteak, Landjäger, Speck, Rindfleisch, Schinken, Haxen, Hamburger, Flank, Picanha. Bruststück, kurze Lendenflanke, Hamburger, Schweinebauchwurst, Bresaola-Döner. Biltong Prosciutto Dörrfleisch, Spareribs Porchetta Picanha Rump Schweinefleisch Schweinelende Cupim. ;
jetzt = neues Fenster ( "Prüfen" ,
tb = Textfeld ( mein_narr ) ,
) ;
tb << Wrap festlegen ( 600 ) << Breite einstellen ( 600 ) ;
Ich habe einige lange Texte, die ich in Textbearbeitungsfelder einfüge, weil Benutzer Teile der Informationen kopieren/einfügen möchten.Allerdings muss bei Textbearbeitungsfeldern die Höhe mithilfe von festgelegt werden nZeilen setzen .
jetzt = neues Fenster ( "Prüfen" ,
teb = Textbearbeitungsfeld ( mein_narr ) ,
) ;
teb << Wrap festlegen ( 600 ) << Breite einstellen ( 600 ) << nZeilen setzen ( 10 ) ;
Gibt es eine einfache Möglichkeit, die Anzahl der Zeilen bei einem langen Text zu berechnen?Ich habe einen Weg gefunden, es zu machen, aber es scheint umständlich zu sein.Ich habe den Code angehängt, der zum Ausführen dieses Beispiels erforderlich ist.Es gibt zwei Funktionen: get_num_lines Und my_parse .Ich musste meinen eigenen Parser schreiben, um beliebig lange Trennzeichen und zwei oder mehr Vorkommen eines Trennzeichens ohne Zwischenzeichen zu verarbeiten.
jetzt = neues Fenster ( "Prüfen" ,
teb = Textbearbeitungsfeld ( mein_narr ) ,
) ;
Anzahl_Zeilen = get_num_lines( mein_narr , 600 ) ;
teb << Wrap festlegen ( 600 ) << Breite einstellen ( 600 ) << nZeilen setzen ( Anzahl_Zeilen ) ;
Betreff: Zeilen für Textbearbeitungsfeld automatisch festlegen?Danke MS, das hat mich auf den richtigen Weg gebracht.Vielen Dank für eine einfache, raffinierte Lösung!
Diese Gleichung scheint etwas besser zu funktionieren als height / (fontsize+1):
nlines = max ( 1 , Boden ( .6264918 * Höhe / Schriftgröße - 1.567659 )) ;
Nachtrag:
Dies funktioniert besser bei einer geringen Anzahl von Zeichen:
nlines = max ( 1 , runden ( .5204443 * Höhe / Schriftgröße )) ;
Betreff: Zeilen für Textbearbeitungsfeld automatisch festlegen?Eine Idee wäre, die automatische Größenanpassung des Textfelds zu nutzen. Die Anzahl der Zeilen scheint diesem Verhältnis zu entsprechen: height_of_textbox / (fontsize+1).
mein_narr =
„Bacon ipsum dolor amet Lendenstück kurze Lende Hackbraten Döner, Schulter Schweinebrust Speck Schwein Boudin Alcatra Schinken Hock Chuck Hamburger Corned Beef. Schweinekotelett Landjägerwurst Frankfurter Biltong Döner Schweinelende Schinken Pastrami Fatback Lendenstück. Kurze Rippchen mit Rinderschinken und Corned Beef. Filet-Mignon-Schulter mit Kugelspitze, Landjaeger-Corned-Beef, Fatback-Kuhhaxe, Wildbret, Schweinekotelett, Speck, Fleischbällchen, Bresaola-Leberkas. Tri-Tip Short Ribs Andouille Tail Prosciutto Döner vom Schwein gemahlener runder Hackbraten Pancetta Boudin.
Rinderbrustspeck, Landjaeger-Rinderrippen, Filet, Alcatra-T-Bone, kurze Rippen, Wildbret, Capicola-Picanha-Schwein. Salami, Rinderbrust, Döner, Trommelkeule, Schweinelende, Hähnchen, Corned Beef, kurze Rippen, Futter, Fleischbällchen, T-Bone. Andouille, Frankfurter Rumpsteak, Landjäger, Speck, Rindfleisch, Schinken, Haxen, Hamburger, Flank, Picanha. Bruststück, kurze Lendenflanke, Hamburger, Schweinebauchwurst, Bresaola-Döner. Biltong Prosciutto Dörrfleisch, Spareribs Porchetta Picanha Rump Schweinefleisch Schweinelende Cupim. ;
w = 450 ; // Wrap und Breite
tb = Textfeld ( mein_narr , Wrap festlegen ( w ) , Breite einstellen ( w ) , verstecken ( 1 )) ; // Temporär unsichtbares Textfeld
jetzt = Neues Fenster ( "Prüfen" , tb ) ;
// Größeninformationen abrufen
Höhe = ( tb << Größe bekommen )[ 2 ] ;
Schriftgröße = tb << Schriftgröße ermitteln ;
nlines = Höhe / ( Schriftgröße + 1 ) ;
//nlines++; // +1 hinzufügen, um etwas Auffüllung zu erhalten; Die Auswahl des TextEditBox-Inhalts erhöht dessen Größe
tb << löschen ;
//TextEditBox mit der gleichen Größe wie die TextBox anhängen
teb = Textbearbeitungsfeld ( mein_narr , Wrap festlegen ( w ) , Breite einstellen ( w ) , nZeilen setzen ( nlines )) ;
jetzt << anhängen ( teb ) ;