Ver Mensaje Individual
  #9 (permalink)  
Antiguo 12/09/2009, 16:10
Avatar de culd
culd
 
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Respuesta: RichTextBox: Leer texto de cierta linea...

Cita:
Iniciado por seba123neo Ver Mensaje
Hola, culd, aca te dejo una funcion con SendMessage, es la mejor forma creo, aparte es rapidisimo cuando tenes miles de lineas.

Código vb:
Ver original
  1. Option Explicit
  2.  
  3. Private Const EM_LINEINDEX = &HBB
  4. Private Const EM_LINELENGTH = &HC1
  5. Private Const EM_GETLINE = &HC4
  6.  
  7. Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lPara As Long) As Long
  8. Private Declare Function SendMessageString Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lPara As String) As Long
  9.  
  10. Private Sub Command1_Click()
  11.    MsgBox TextoLineaRichTextBox(Richtextbox1, 58)
  12. End Sub
  13.  
  14. Private Sub Form_Load()
  15.    Dim i As Long
  16.    For i = 0 To 100
  17.       Richtextbox1.Text = Richtextbox1.Text & "Linea " & i & vbCrLf
  18.    Next
  19. End Sub
  20.  
  21. Private Function TextoLineaRichTextBox(ByVal pControl As RichTextBox, ByVal pLinea As Long) As String
  22.    Dim vLongitudLinea As Long, vNumeroLinea As Long
  23.    Dim vTemporal As String
  24.    
  25.    TextoLineaRichTextBox = ""
  26.    
  27.    vNumeroLinea = SendMessageLong(pControl.hwnd, EM_LINEINDEX, pLinea, 0&)
  28.    vLongitudLinea = SendMessageLong(pControl.hwnd, EM_LINELENGTH, vNumeroLinea, 0&) + 1
  29.    vTemporal = String$((vLongitudLinea + 2), 0)
  30.    
  31.    Mid$(vTemporal, 1, 1) = Chr$(vLongitudLinea And &HFF)
  32.    Mid$(vTemporal, 2, 1) = Chr$(vLongitudLinea \ &H100)
  33.    
  34.    vLongitudLinea = SendMessageString(pControl.hwnd, EM_GETLINE, pLinea, vTemporal)
  35.    
  36.    If (vLongitudLinea > 0) Then
  37.       TextoLineaRichTextBox = Left$(vTemporal, vLongitudLinea)
  38.    End If
  39. End Function

saludos.
Gracias por el dato...

Igualmente es un post del 2006