Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    20

    piccolo motore di ricerca per testo

    Salve a tutti...

    ho creato un semplicissimo motore di ricerca testuale che agisce(o almeno cosi dovrebbe essere)su di un campo di testo dinamico evidenziando la prima occorrenza trovata...

    ma tutto ciò non accade...mi controllate il codice che ho allegato e mi dite cosa c'è che non va?

    grazie a tutti

    codice:
    cerca.onRelease = function() {
    	
    	
    	risultato = inputfield.text.indexOf(findfield.text);
    	if (findfield.text != "" && risultato >=0 ) {
    		selection.setFocus("_root.inputfield");
    		selection.setSelection(risultato,risultato + findfield.text.length);
    	} else {
    		stato.text = "nessuna riga trovata";
    	}
    	
    };

  2. #2
    Ho provato il codice e funziona.

    Se usi MX 2004 e pubblichi per Flash Player 7 devi scrivere Selection con l'iniziale in maiuscolo.
    [Il mio sito V2]
    ___________________
    I.m.The.Magic.Man

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    20
    grazie mille l_lennynero_l...il problema era proprio quello...

    secondo te posso far si che vengano evidenziate tutte le occorrenze che rispondono alla ricerca?

    grazie ancora

    p.s.=complimenti per il tuo sito

  4. #4
    potresti fare in modo che ad ogni click la selezione si sposti sul risultato successivo:
    codice:
    risultato = -1;
    trovato = false;
    findfield.onChanged = function() {
    	risultato = -1;
    	trovato = false;
    };
    cerca.onRelease = function() {
    	stato.text = "";
    	offset = (risultato != -1) ? findfield.text.length : 0;
    	risultato = inputfield.text.indexOf(findfield.text, risultato+offset);
    	if (findfield.text != "" && risultato>=0) {
    		Selection.setFocus("_root.inputfield");
    		Selection.setSelection(risultato, risultato+findfield.text.length);
    		trovato = true;
    	} else {
    		if (trovato) {
    			stato.text = "raggiunta la fine del testo, ricomincia dall' inizio";
    		} else {
    			stato.text = "nessuna riga trovata";
    		}
    		risultato = -1;
    	}
    };


    oppure potresti evidenziare tutti i risultati con:

    codice:
    normalTextFormat = inputfield.getTextFormat();
    highlightTextFormat = new TextFormat();
    highlightTextFormat.underline = true; //sottolineato
    highlightTextFormat.color = 0xFF0000; //rosso
    findfield.onSetFocus = function() {
    	inputfield.setTextFormat(normalTextFormat);
    };
    cerca.onRelease = function() {
    	risultato = -2;
    	while (risultato != -1) {
    		offset = (risultato == -2) ? 0 : findfield.text.length;
    		risultato = inputfield.text.indexOf(findfield.text, risultato+offset);
    		if (findfield.text != "" && risultato>=0) {
    			inputfield.setTextFormat(risultato, risultato+findfield.text.length, highlightTextFormat);
    		} else {
    			risultato = -1;
    		}
    	}
    };
    [Il mio sito V2]
    ___________________
    I.m.The.Magic.Man

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    20
    grazie ancora...

    lo vado a provare subito

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    20
    l_lennynero_l ho provato il tuo codice e non mi funziona sicuramente per una cattiva organizzazione delle righe di comando

    se te lo posto mi dai uno sguardo e mi correggi gli errori?...grazie mille


    il codice è quello che dovrebbe selezionare tutte le occorrenze trovate nel file di testo e che corrispondono alla ricerca


    codice:
    normalTextFormat = inputfield.getTextFormat();
    highlightTextFormat = new TextFormat();
    highlightTextFormat.underline = true;//sottolineato
    highlightTextFormat.color = 0xFF0000;//rosso
    
    /*carica testo*/
    dati = new LoadVars();
    dati.onLoad = function(verifica) {
    	if (verifica) {
    		testo.html = true;
    		inputfield.text = this.variabile;
    	} else {
    		inputfield.text = "errore di caricamento dati";
    	}
    };
    dati.load("testo.txt");
    inputfield.vScrollPolicy = "auto";
    findfield.onSetFocus = function() {
    	inputfield.setTextFormat(normalTextFormat);
    };
    /*ricerca*/
    cerca.onRelease = function() {
    	risultato = -2;
    	while (risultato != -1) {
    		offset = (risultato == -2) ? 0 : findfield.text.length;
    		risultato = inputfield.text.indexOf(findfield.text, risultato+offset);
    		if (findfield.text != "" && risultato>=0) {
    			inputfield.setTextFormat(risultato, risultato+findfield.text.length, highlightTextFormat);
    		} else {
    			risultato = -1;
    		}
    	}
    };
    ancora mille grazie

  7. #7
    il codice non funziona perché è applicato ad un componente TextArea e non ad un oggetto TextField.
    [Il mio sito V2]
    ___________________
    I.m.The.Magic.Man

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    20
    hai ragione...ho appena finito di testarlo su di un textField e...funzionaaaaaaaaaaaaaaaaaaaaaaa....


    grazie mille

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    20
    altro problemino....

    ho formattato il TextField con uno style sheetn(quello che gia conosci) e non mi funziona piu la ricerca che mi hai postato (quella che trova tutte le occorrenze nel file di testo), che però funziona se disabilito lo style...

    da cosa dipende?

    codice:
    normalTextFormat = inputfield.getTextFormat();
    highlightTextFormat = new TextFormat();
    highlightTextFormat.underline = true;//sottolineato
    highlightTextFormat.color = 0xFF0000;//rosso
    style=new TextField.StyleSheet();//css
    
    
    /*style*/
    style.load("style.css");
    style.onLoad=function (successo){
    	if(successo){
    		dati.load("testo.txt");
    		inputfield.styleSheet=style;       
    		}
    	}
    
    
    /*carica testo*/
    dati = new LoadVars();
    dati.onLoad = function(verifica) {
    	if (verifica) {
    		inputfield.vScrollPolicy = "auto";
    		inputfield.html = true;
    		inputfield.text = this.variabile;
    		
    	} else {
    		inputfield.text = "errore di caricamento dati";
    	}
    };
    
    /*ricerca l_lennynero_l*/
    cerca.onRelease = function() {
    	risultato = -2;
    	while (risultato != -1) {
    		offset = (risultato == -2) ? 0 : findfield.text.length;
    		risultato = inputfield.text.indexOf(findfield.text, risultato+offset);
    		if (findfield.text != "" && risultato>=0) {
    			inputfield.setTextFormat(risultato, risultato+findfield.text.length, highlightTextFormat);
    		} else { 
    			risultato = -1;
    		}
    	}
    };
    grazie mille

  10. #10
    Il codice che ho scritto funziona solo per testo non HTML e quindi non puoi usare i css.

    Se vuoi usare i tag html bisognerebbe cambiare il codice facendo in modo, per esempio, che vengano inseriti dei nuovi tag per evidenziare le parole cercate. Il problema è che non saprei come modificare il testo senza correre il rischio di modificare i tag che usi.

    esempio:



    questo è il testo</p>

    se cerchi "testo" potrebbe diventere:



    questo è il <u>testo</u></p>

    ma se cerchi "p"

    diventerebbe:

    <<u>p</u>>questo è il testo</<u>p</u>>
    [Il mio sito V2]
    ___________________
    I.m.The.Magic.Man

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.