Visualizzazione dei risultati da 1 a 6 su 6

Discussione: righe e TextField

  1. #1

    righe e TextField

    DOMANDA UNO:
    ho una variabile presa da un txt caricata in un campo di testo dinamico. visto che il campo è multiriga c'è un modo, magari sfruttando le proprietà dell'oggetto TextField, di ritornare il numero di righe occupate dal testo?

    DOMANDA DUE:
    come posso sapere quanti caratteri o meglio la lunghezza (TextField.textWidth) della stringa di un precisa riga nel medesimo campo di testo?

    grazie
    Moderatore di me stesso
    LAVORICREATIVI.COM - ANNUNCI PER CREATIVI e AGENZIE
    SNOWTURA.COM - UNDER CONSTRUCTION

  2. #2
    up!
    Moderatore di me stesso
    LAVORICREATIVI.COM - ANNUNCI PER CREATIVI e AGENZIE
    SNOWTURA.COM - UNDER CONSTRUCTION

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    rispondo alla prima:

    per verificare il numero di righe presenti in un campo di testo c'è "TextField.maxscroll", per verificare invece il numero di caratteri c'è "TextField.length"

    sparo a caso la seconda:
    per sapere quanti caratteri ci possono stare in una riga potresti fare
    codice:
    TextField.length/TextField.maxscroll
    che ovviamente non è affidabile al 100% perchè se l'ultima riga contiene meno caratteri delle altre, ti sfalsa il calcolo... a proposito, nella proprietà length sono considerati caratteri anche gli spazi e i tab

  4. #4
    Originariamente inviato da and80
    rispondo alla prima:

    per verificare il numero di righe presenti in un campo di testo c'è "TextField.maxscroll", per verificare invece il numero di caratteri c'è "TextField.length"
    ma se l'ultima riga non è popolata? cioè se il la casella di testo è da 3 righe e il testo invece è da 2? funge lo stesso?

    sparo a caso la seconda:
    per sapere quanti caratteri ci possono stare in una riga potresti fare
    codice:
    TextField.length/TextField.maxscroll
    che ovviamente non è affidabile al 100% perchè se l'ultima riga contiene meno caratteri delle altre, ti sfalsa il calcolo... a proposito, nella proprietà length sono considerati caratteri anche gli spazi e i tab
    mi ero spiegato male, in effetti non mi serve la lunghezza in caratteri, ma in pixel, quella che si ricava usando "TextField.textWidth" xò non di tutto quanto, ma di una singola e ben precisa riga di testo.

    cmq grazie

    ciauz,
    Ale
    Moderatore di me stesso
    LAVORICREATIVI.COM - ANNUNCI PER CREATIVI e AGENZIE
    SNOWTURA.COM - UNDER CONSTRUCTION

  5. #5
    ok, visto ke x qualche motivo il TextField.maxscroll non ne vuol sapere di fungere, mi sono fatto questa piccola funzione:
    codice:
    line = 0;
    for(i=0; i<track.length; i++) {
    	if(track.charAt(i)=='\r')
    		line++;
    }
    line++;
    Per la seconda parte si dovrebbe, secondo me, creare dinamicamente un campo di testo e copiarci dentro la selezione (usando l'oggetto Selection) di ogni riga, una per volta, in modo da poter poi calcolare la lunghezza in pixel di ognuna con TextField.textWidth .
    Il problema è capire come farlo...
    Moderatore di me stesso
    LAVORICREATIVI.COM - ANNUNCI PER CREATIVI e AGENZIE
    SNOWTURA.COM - UNDER CONSTRUCTION

  6. #6
    Bon, problema risolto. Sarà che ieri il mal di testa ha accentuato la mia disperazione ma non era poi così difficile arrivarci.

    codice:
    track = eval("track" + par);
    line = 0;
    singleLineLength = new Array(3);
    
    for(i=0; i<track.length; i++) {
    	if(track.charAt(i)=='\r') {
    		singleLineLength[line] = i;
    		line++;
    	}
    }
    
    inizio = 0;
    for(j=0; j<line; j++) {
    	selbox = track.substring(inizio, singleLineLength[j]);
    	lung = selezione.textWidth;
    	mask = eval("mask" + j);
    	mask._width = lung;
    	lung = 0;
    	inizio = singleLineLength[j]+1;
    }
    Commento:
    nel primo for si cicla fino alla fine del testo, aumentando la variabile "line" ogni volta che si trova il carattere di a capo e si immagazzina il numero di caratteri nell'array "singleLineLength".
    nel secondo for si cicla per tante volte quante sono le righe contate in precedenza, estraendo il substring da "inizio" fino al valore immagazzinato nella rispettiva casella dell'array "singleLineLength". Si passa questa sottostringa ad una casella di testo dinamica dalla quale si recupera poi la lunghezza della stringa con "Selection.textWidth".
    Per poi passarne il valore al mio rettangolino.

    ciauz,
    Ale
    Moderatore di me stesso
    LAVORICREATIVI.COM - ANNUNCI PER CREATIVI e AGENZIE
    SNOWTURA.COM - UNDER CONSTRUCTION

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.