Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: aaronduran2 en 23 Julio 2008, 16:14 PM

Título: Detectar posición del cursor de texto
Publicado por: aaronduran2 en 23 Julio 2008, 16:14 PM
Hola. En mi aplicación necesito saber la posición del cursor del texto para poder hacer aparecer una ventana al final de una letra, justo al lado. Al estilo de VB. ¿Alguien sabe cómo?

Gracias de antemano.
Título: Re: Detectar posición del cursor de texto
Publicado por: seba123neo en 23 Julio 2008, 19:02 PM
Hola,probate este ejemplo,usa la api SendMessageLong y las constantes EM_LINEFROMCHAR,EM_GETLINECOUNT...y algunas mas para saber la posicion en el textbox...

posicion cursor textbox (http://www.vb-helper.com/HowTo/howto_find_textbox_cursor_pos.zip)

saludos.
Título: Re: Detectar posición del cursor de texto
Publicado por: aaronduran2 en 23 Julio 2008, 23:26 PM
Perdón por el malentendido, pero yo me refiero a las coordenadas en la pantalla. En el IDE de VB, cuando introduces algo que reconoce, como por ejemplo "App.", se despliega una lista con las posibles opciones. Lo que yo necesito son las coordenadas del texto para desplegar una lista en esa posición.

Saludos.
Título: Re: Detectar posición del cursor de texto
Publicado por: seba123neo en 23 Julio 2008, 23:42 PM
si ahora entiendo,proba con GetCaretPos....te tira la cordenada dentro del textbox...

Código (vb) [Seleccionar]
Option Explicit
Private Declare Function GetCaretPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
    X As Long
    Y As Long
End Type

Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim XPos As Long
Dim YPos As Long
XPos = GetTCursX
YPos = GetTCursY
Me.Caption = "X: " & XPos & " Y: " & YPos
End Sub

Public Function GetTCursX() As Long
    Dim pt As POINTAPI
    GetCaretPos pt
    GetTCursX = pt.X
End Function

Public Function GetTCursY() As Long
    Dim pt As POINTAPI
    GetCaretPos pt
    GetTCursY = pt.Y
End Function


saludos.
Título: Re: Detectar posición del cursor de texto
Publicado por: aaronduran2 en 23 Julio 2008, 23:44 PM
Muchas gracias, seba123neo. Me funciona perfectamente.

Saludos.
Título: Re: Detectar posición del cursor de texto
Publicado por: aaronduran2 en 24 Julio 2008, 15:32 PM
Una cosa, ¿cómo hago para hacer aparecer una ventana en esas coordenadas? Porque me devuelve X = 148 Y = 0, pero el formulario me aparece en otro sitio.

Saludos.
Título: Re: Detectar posición del cursor de texto
Publicado por: naderST en 24 Julio 2008, 19:49 PM
Código (vb) [Seleccionar]
Form1.Top = Y
Form1.Left = X
Form1.Show
Título: Re: Detectar posición del cursor de texto
Publicado por: aaronduran2 en 24 Julio 2008, 20:26 PM
Hola. Eso ya lo sabía, pero al ponerlo así se mostraba arriba a la izquierda. Pero ya lo solucioné. Como quiero que aparezca al lado del texto escrito, sumo el Left de la caja de texto a la X y el Top de la misma a la Y y ya se coloca correctamente.

Saludos y gracias.