Newsgroup: it.comp.lang.visual-basic
Titolo: [?] RTF Control: Determinare carattere in pos. specifica

Salve a tutti;
ho la necessità di determinare il carattere che si trova in una determinata posizione dell' RTF Control e, ancora
meglio, determinare se un determinato carattere (scusate il gioco di parole) è il primo della riga.
Mi spiego meglio: Con il metodo Find, ad esempio, posso determinare la posizione (assoluta, rispetto l'intero testo) di
un carattere; ora voglio sapere se tale carattere è il primo carattere di una riga qualsiasi oppure, in caso negativo,
che carattere c'è prima e dopo del carattere ritornato.
E' possibile? Se sì, come?
Ringrazio anticipatamente per le risposte.
Ciao,
Moreno
#sirri#@
morenosoft.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.morenosoft.com/MSVBSite/
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------

 Ringrazio anticipatamente per le risposte.
forse ti servono a qc le sub seguenti. sono vecchie e non le ho piu'
riguardate, ma usandole mi sembra +- vadano. fammi sapere. hth, pal
--
andrea palazzi
pal at cedoc dot mo dot it [attach here]
xday at libero dot it [no attach]
http://members.xoom.it/xday/_html/
free sw - 
http://www.comune.modena.it/cittadini/apal/html/
p.f. nei messaggi usare solo testo normale, non html !
please use just plain text, not html, in your msgs !
Private Sub SayCharLine()
    Dim CharLine, CharPos
    CharPos = RTF.SelStart
    CharLine = RTF.GetLineFromChar(CharPos) + 1
    frmMain.Status.Panels(4) = "LIN: " & CharLine & " - CAR: " & CharPos + 1
End Sub
Private Sub SayLen()
    frmMain.Status.Panels(2) = "CORR: " & _
        IIf(LenTxt > 0, Format(LenTxt, "###,###,###,###"), "0") & " car."
    frmMain.Status.Panels(3) = IIf(chkChanged.Value = 0, "SALV", "MODIF")
End Sub
Public Sub TrovaSuccessivo()
    If LoadedForms < 1 Then Exit Sub
    If frmMain.ActiveForm.RTF.Text = "" Then Exit Sub
    If frmFind.txtSearch = "" Then Exit Sub
    Dim FoundPos As Long
    'object.Find(string, start, end, options)
    With frmMain.ActiveForm.RTF
        If .SelStart = 0 Then
            If .SelLength = 0 Then
                FoundPos = .Find(frmFind.txtSearch)
            Else
                FoundPos = .Find(frmFind.txtSearch, .SelStart + 1)
            End If
        Else
            FoundPos = .Find(frmFind.txtSearch, .SelStart + 1)
        End If
        If FoundPos = -1 Then
            MsgBox "Ricerca terminata"
            .SelStart = 0
        End If
    End With
End Sub

riguardate, ma usandole mi sembra +- vadano. fammi sapere. hth, pal
ti ringrazio ma purtroppo il problema non era così semplice.... comunque ho risolto.
Grazie e a presto,


 ti ringrazio ma purtroppo il problema non era cosě semplice.... comunque
ho risolto.

magari giova alla specie e non solo all'esemplare... :)
Per trovare il carattere ad inizio linea ho utilizzato l'esempio inverso a quello presente nella guida in linea della
funzione Span, ovvero selezionando fino al precedente Chr(13); poi ho selezionato il carattere successivo, ottenendo
così il primo della linea. 
Es:
FoundPos = RichTextBox1.Find("pippo")
FoundPos contiene la posizione del primo carattere della stringa;
RichTextBox1.Span Chr(13), False, True
Seleziono tutto il testo dalla "p" di "pippo" all'ultimo carattere (fine riga) della riga precedente
InizioRiga=RichTextBox1.SelStart
In InizioRiga memorizzo la posizione del primo carattere della riga;
RichTextBox1.SelLength = 1
Imposto ad 1 carattere la lunghezza della selezione
Msgbox RichTextBox1.SelText
ed ottengo così il primo carattere della riga.
Più o meno stesso discorso per il carattere precedente.
Spero di esser stato chiaro e di aver soddisfatto la tua curiosità (magari sarà servito anche a qualcun altro...).
Grazie ancora e a presto,
Moreno
