Newsgroup: it.comp.lang.visual-basic
Titolo: [RichText] Inserire indentazione su Selezionato

Forse mi stò perdendo in una sciocchezza, ma mi sfugge qualcosa..!
Oggetto:
  Ho realizzato un applicativo che uso per formattare il codice formato
testo inserito nella Richtext per inserirlo nel WEB.
Faccio un doppio passaggio, prima applico la formattazione RTF al fine
di mostrare il risultato, quindi prendo il contenuto della propretà
TEXT della RICHTEXT ed applico una formattazione HTML.
Premesso che funziona, vorrei velocizzare l'indentazione, in pratica
ora per indentare
faccio una cosa simile:
rtbCode---> Controllo RichText
Me.rtbCode.SelText = Space(4)
Avrei voluto poter applicare lo Space(4) su tutte le righe di testo
Selezionate, ovviamente
come primo carattere per velocizzare la cosa....
Purtroppo faccio acqua...ma l'unico metodo che mi viene in mente è
quento:
    Dim varArr  As Variant
    Dim ItemArr As Variant
    Dim sArr   As String
    Dim x       As Integer
    varArr = Split(rtbCode.SelText, vbNewLine)
    For Each ItemArr In varArr
        sArr = sArr & Space(4) & ItemArr & vbNewLine
    Next
    sArr = Mid$(sArr, 1, InStrRev(sArr, vbNewLine))
    rtbCode.SelText = sArr
Funzionicchia.... ma al 2° passaggio mi inserisce sempre una NewLine
non voluta..!
Mancherebbe il pezzetto che mi elimina tutti i NewLine alla fine che
proprio non mi riesce...!!!
Secondo voi è un buon sistema o c'è qualcosa di più comodo...?
Grazie
@Alex


Se in MS Word vuoi indentare un paragrafo, cosa fai? Inserisci spazi e/o tab
davanti ad ogni linea o cambi il rientro sinistro?
Con il RTB è (quasi) la stessa cosa: la proprietà SelIndent.
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 Raf
Grande, non l'avevo vista...!
Grazie
@Alex

Alessandro Baraldi ha scritto:

Cantato vittoria troppo presto...!
L'indentazione non viene vista nella trasformazione da RTF ad HTML
poichè passo per
la parte TXT, quindi con la tecnica che ho scritto sopra gli Space(x)
vengono interpretati
come "&nbsp" ma l'indent ovviamente viene perso...!
La complessità di passare da RTF ad HTML mi ha spinto a passare per il
Testo, altrimenti
forse varrebbe la pena far lavorare la ClipBoard....?
@Alex

Alessandro Baraldi ha scritto:
Ho per ora risolto così:
    Dim varArr  As Variant
    Dim ItemArr As Variant
    Dim FinalArr()    As String
    Dim n       As Integer
    varArr = Split(rtbCode.SelText, vbNewLine)
    For Each ItemArr In varArr
        ReDim Preserve FinalArr(n)
        FinalArr(n) = Space(4) & ItemArr
        n = n + 1
    Next
    rtbCode.SelText = Join(FinalArr(), vbNewLine)
Ciao
@Alex

 @Alex
Giusto, non avevo tenuto presente che dovevi passare ad HTML.
Googlando ho trovato questo, magari per il futuro funziona meglio:
http://www.developerfusion.co.uk/show/180/


 Raf
Ciao Raf.
Quella Routine la usavo già per formattare in HTML il contenuto di un
RTF per inviarla in mail con Winsock, ma nel mio caso mi complica molto
la vita.
Il codice che devo formattare HTML è inserito in un contesto governato
da foglio di stile, quindi i colori previsti sono Classi.
A questo punto ho preferito parsare la proprietà TEXT della RichText e
determinare se la
parola è CODICE, COMMENTO, ALTRO, per farlo ho salvato in un TextFile
tutte le parole
che dovranno essere BLU(Codice) quindi il confronto è veloce, a quel
punto applico
"<Font Color=#cBlu>" & MioTesto.....
La cosa funziona bene, c'è qualche inghippo sulla rimozione
dell'Indentazione...!
Quando la inserisco Inserisco Space(n) e quando la vorrei rimuovere
ovviamente devo selezionare la riga, ed ho tentato il
Replace(myString,Space(n),vbNullstring).
Qual'è l'inghippo che se ho dato una doppia Indentazione(2 volte
Indent) con Replace
me la toglie tutta....!
Es:Supponiamo Indent=Space(4)
' Singola Indentazione
MiaParola=Indent & ParolaOriginale
' Ripeto l'INDENTAZIONE
MiaParola=Indent & MiaParola
Ora la situazione sarebbe questa:
MiaParola=Space(4) + Space(4) + ParolaOriginale    oppure
MiaParola=Space(8) + ParolaOriginale
Se volessi togliere uno step ho provato a fare:
MiaParola=Replace(MiaParola, Space(4), vbNullstring)
mi aspetterei di ottenere:
MiaParola=Space(4) + ParolaOriginale
Invece mi trovo:
MiaParola=ParolaOriginale
Ha eliminato anche il 2° Step....!
Ciao, buon WeekEnd
@Alex

 @Alex
Anche a te, grazie
Ciao
Raf

 Raf
Ciao
@Alex