Autore Topic: [Risolto] Textedit: trovare testo selezionato  (Letto 1111 volte)

Offline Marmar

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
[Risolto] Textedit: trovare testo selezionato
« il: 17 Luglio 2011, 21:58:03 »
aririciao a tutti... mentre aspetto qualche consiglio su l'altra discussione, propongo un altro dubbio.
Ho una form con un bel textedit interno e tanti bottoni classici come "grassetto", "corsivo", ma non riesco minimamente a capire come aggiungere un tag tipo <b></b> all'interno della textedit, vorrei che al click del bottone "grassetto" mi trovi la parola selezionata e ci aggiunga il tag di apertura e di chiusura. Come al solito ho provato a cercare nel forum e nel wiki di gambas e con google, ma l'unica cosa che si avvicina è questa:

http://www.gambas-it.org/smf/index.php?topic=614.0

ovviamente ho visto l'esempio di base, ma nell'esempio si edita un file html caricato precedentemente, mentre a me servirebbe modificare una parola selezionata che potrebbe essere contenuta in un eventuale textedit1.Text. Ho comunque cercato di riportare i codici dell'esempio al mio caso, ma l'unico effetto che ottengo è che mi aggiungono i tag <p> e </p> rispettivamente prima e dopo tutto il testo contenuto nella textedit.
Ovviamente se mi è sfuggito qualche altra discussione nel forum ringrazio chiunque me lo faccia notare  :ok:
« Ultima modifica: 19 Luglio 2011, 12:28:41 da Marmar »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Textedit: trovare testo selezionato
« Risposta #1 il: 18 Luglio 2011, 10:18:10 »
Se cerchi tra gli esempi di gambas troverai del codice che fa esattamente ciò che vuoi.

Offline Marmar

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
Re: Textedit: trovare testo selezionato
« Risposta #2 il: 18 Luglio 2011, 15:11:20 »
ho cercato tra gli esempi, ma non c'è nulla che fa ciò che vorrei. L'unico esempio utile è quello TextEdit, ma ho riprodotto l'esatto codice adattandolo ai miei campi ma non fa assolutamente  nulla, il codice è questo (muttracam = TextEdit1 & pinguius = btnBold):

Codice: [Seleziona]
PUBLIC SUB Form_Open()
    muttracam.SetFocus
    muttracam_Cursor
END

PUBLIC SUB muttracam_Cursor()                                                'che nell'esempio è TextEdit1_Cursor()
  Object.Lock(pinguius)
  pinguius.Value = muttracam.Format.Font.Bold
  Object.UnLock(pinguius)
END

PUBLIC SUB pinguius_Click()                                                       'bottone corrispondente a btnBold_Click()
  muttracam.Format.Font.Bold = LAST.Value
END

se clicco non fa assolutamente nulla.

Offline Marmar

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
Re: Textedit: trovare testo selezionato
« Risposta #3 il: 18 Luglio 2011, 16:17:54 »
Dunque... l'esempio TextEdit per ora è totalmente inutile, infatti ho trovato una prima soluzione da solo, sperimentando. Per chi ne avesse bisogno posto l'attuale codice-soluzione, ma ancora devo migliorare:

Codice: [Seleziona]
PUBLIC SUB Bold_Click()
    DIM p AS Integer                                                  'Integer che conterrà l'inizio della stringa selezionata
    DIM l AS Integer                                                   'Integer che conterrà la lunghezza della stringa selezionata
    DIM f AS Integer                                                   'Somma dei due precedenti
    DIM scriptaA AS String                                        'Stringa che accoglie il testo PRIMA della selezione
    DIM scriptaB AS String                                        'Stringa che accoglie il testo DOPO  la selezione

    'controllo che ci sia una parte selezionata nella TextArea
    IF TextArea1.Selected = TRUE THEN
        p = TextArea1.Selection.Start          'Setto il punto iniziale della selezione
        l = TextArea1.Selection.Length        'Setto la lunghezza della selezione
        f = p + l + 1                                     'Somma dei due precedenti + 1 per trovare il primo carattere DOPO la selezione
        scriptaA = Mid$(TextArea1.Text, 1, p)            'Setto la stringa che contiene tutto il testo dall'inizio al punto p
        scriptaB = Mid$(TextArea1.Text, f)                 'Setto la stringa che contiene tutto il testo dal carattere dopo la selezione fino alla fine

        'Aggiungo i tag <b> e </b> prima e dopo la selezione
        TextArea1.Text = scriptaA & "<b>" & TextArea1.Selection.Text & "</b>" & scriptaB
    ENDIF
END

l'unico inconveniente è che poi c'è bisogno di una TextEdit per vedere il risultato... ma è già qualcosa. Ho provato a usare lo stesso codice con la TextEdit ma i punti 'p' ed 'f' risultano sfalsati per via del codice html contenuto dentro, credo basti aggiungere al punto 'p' il numero dei caratteri html preimpostati, ora fuggo, stasera proverò.

Offline Marmar

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
Re: Textedit: trovare testo selezionato
« Risposta #4 il: 19 Luglio 2011, 12:28:26 »
Continuo con il monologo... giusto per chi magari non ha ancora risolto la questione: ha ragione Ceskho, guardatevi l'esempio TextEdit (a differenza di quello che scrissi prima) e occhio alle proprietà del toolButton! A me non faceva nulla perché non avevo impostato una proprietà del toolbutton.
Grazie Ceskho

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Textedit: trovare testo selezionato
« Risposta #5 il: 22 Luglio 2011, 18:16:29 »
Continuo con il monologo... giusto per chi magari non ha ancora risolto la questione: ha ragione Ceskho, guardatevi l'esempio TextEdit (a differenza di quello che scrissi prima) e occhio alle proprietà del toolButton! A me non faceva nulla perché non avevo impostato una proprietà del toolbutton.
Grazie Ceskho

Scusa il ritardo. Bene. Sono contento che tu abbia risolto da solo. È un buon allenamento per la mente e l'attenzione.... ;)