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.
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.
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.
si ahora entiendo,proba con GetCaretPos....te tira la cordenada dentro del textbox...
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.
Muchas gracias, seba123neo. Me funciona perfectamente.
Saludos.
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.
Form1.Top = Y
Form1.Left = X
Form1.Show
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.