Buenas, Zeroql.
Lo que quieres es extraer una línea concreta del RichTextBox.
Como supongo debes saber, con el RichTextBox puedes lidiar con dos tipos de texto: sin formato o texto enriquecido.
En esta respuesta supongo que te interesa tratar el texto sin formato. Si no es así, se puede adaptar fácilmente la solución para texto con formato enriquecido.
Dicho esto, te he programado dos funciones para tratar con líneas individuales en un RichTextBox.
La primera, GetLinesText, es un procedimiento que toma una matriz Lines() de Strings pasada por referencia y un objeto RTB de tipo RichTextBox también por referencia.
Una vez hecha la llamada al procedimiento, la matriz de Strings Lines() estará cargada con las líneas de texto del RichTextBox.
Esta es la función:
Ejemplo de uso:
Esto carga en la matriz Lineas() todas las líneas del RichTextBox1.
La otra, es una función llamada GetNLineText, que toma un parámetro RTB de tipo RichTextBox y un parámetro NLine que contiene el número de línea a devolver.
Si el número de línea no existe o no tiene sentido, la función devuelve una cadena nula.
Si el número de línea se corresponde con una línea del texto, la función devuelve la línea número correspondiente, contando desde arriba a partir de 1.
Esta es la función:
Ejemplo de uso:
Esto muestra en el fondo de ventana la línea segunda.
Espero que estas funciones te sean de ayuda y se correspondan con la solución de tu problema.
El Kraken
Lo que quieres es extraer una línea concreta del RichTextBox.
Como supongo debes saber, con el RichTextBox puedes lidiar con dos tipos de texto: sin formato o texto enriquecido.
En esta respuesta supongo que te interesa tratar el texto sin formato. Si no es así, se puede adaptar fácilmente la solución para texto con formato enriquecido.
Dicho esto, te he programado dos funciones para tratar con líneas individuales en un RichTextBox.
La primera, GetLinesText, es un procedimiento que toma una matriz Lines() de Strings pasada por referencia y un objeto RTB de tipo RichTextBox también por referencia.
Una vez hecha la llamada al procedimiento, la matriz de Strings Lines() estará cargada con las líneas de texto del RichTextBox.
Esta es la función:
Código [Seleccionar]
Public Sub GetLinesText(ByRef Lines() As String, ByRef RTB As RichTextBox)
Dim cnt As Long, p1 As Long, p2 As Long
p1 = 1
Do
p2 = InStr(p1 + 1, RTB.Text, vbCrLf)
p1 = IIf(p1 = 1, 1, p1 + 2)
ReDim Preserve Lines(cnt)
Lines(cnt) = Mid(RTB.Text, p1, IIf(p2 = 0, Len(RTB.Text) + 1, p2) - p1)
cnt = cnt + 1
If p2 = 0 Then Exit Do
p1 = p2
Loop
End Sub
Ejemplo de uso:
Código [Seleccionar]
Dim Lineas() As String, i As Long
GetLinesText Lineas(), RichTextBox1
Me.Autoredraw=True
For i = 0 To UBound(Lineas)
Me.Print Lineas(i)
Next i
Esto carga en la matriz Lineas() todas las líneas del RichTextBox1.
La otra, es una función llamada GetNLineText, que toma un parámetro RTB de tipo RichTextBox y un parámetro NLine que contiene el número de línea a devolver.
Si el número de línea no existe o no tiene sentido, la función devuelve una cadena nula.
Si el número de línea se corresponde con una línea del texto, la función devuelve la línea número correspondiente, contando desde arriba a partir de 1.
Esta es la función:
Código [Seleccionar]
Public Function GetNLineText(ByRef RTB As RichTextBox, ByVal NLine As Long) As String
Dim cnt As Long, p1 As Long, p2 As Long
p1 = 1
Do
p2 = InStr(p1 + 1, RTB.Text, vbCrLf)
If cnt + 1 = NLine Then
p1 = IIf(p1 = 1, 1, p1 + 2)
GetNLineText = Mid(RTB.Text, p1, IIf(p2 = 0, Len(RTB.Text) + 1, p2) - p1)
Exit Function
End If
cnt = cnt + 1
If p2 = 0 Then Exit Do
p1 = p2
Loop
End Function
Ejemplo de uso:
Código [Seleccionar]
Me.Print GetNLineText(RichTextBox1, 2)
Esto muestra en el fondo de ventana la línea segunda.
Espero que estas funciones te sean de ayuda y se correspondan con la solución de tu problema.
El Kraken