Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/05/2009, 13:01
Marcelote
 
Fecha de Ingreso: mayo-2009
Mensajes: 31
Antigüedad: 16 años
Puntos: 0
Respuesta: controlar lineas de un textbox multi linea

A ver si vale esto:
Pones en un módulo el código que te propongo.

Después la llamada sería algo así:

Private Sub Command1_Click()
Textbox2.Text = Replace(Textbox2.Text, GetLine(Textbox2, 5), GetLine(Textbox1, 5))
End Sub

Con esto cambia la línea 5 de Texbox2 por la línea 5 del Texbox1 ¿querías algo así?

Y si pones Textbox2.Text = Replace(Textbox1.Text, Getline(Textbox1, 5), "Hola, Mundo")
Te pone en Texbox2 el contenido de Texbox1 pero con la líneaa 5 cambiada a "Hola Mundo"

Un saludo.

Código:
Option Explicit

Private Const EM_LINEFROMCHAR = &HC9
Private Const EM_GETLINE = &HC4

Private Declare Function SendMessage Lib "user32" _
                                         Alias "SendMessageA" _
                                         (ByVal hwnd As Long, _
                                         ByVal wMsg As Long, _
                                         ByVal wParam As Long, _
                                         ByVal lParam As String) _
                                         As Long
'

Public Function GetLine(txtTextBox As TextBox, Optional Linea As Long) As String
    Dim LineaActual As String * 255
    Dim LineaNumero As Long
    Dim Longitud As Long
    If Linea = 0 Then 'No se pasó línea
        'La que está en la posición del cursor:
        LineaNumero = SendMessage(txtTextBox.hwnd, EM_LINEFROMCHAR, txtTextBox.SelStart, 0&)
    Else
        LineaNumero = Linea - 1 '(Base 0)
    End If
    LineaActual = String(255, Chr(255))

    Call SendMessage(txtTextBox.hwnd, EM_GETLINE, LineaNumero, LineaActual)
    Longitud = InStr(LineaActual, Chr(255))
    If Longitud > 0 Then
        GetLine = Left(LineaActual, Longitud - 1)
    Else
        GetLine = LineaActual
    End If
End Function

Última edición por Marcelote; 07/05/2009 a las 13:15