Detectar posición del cursor de texto

Iniciado por aaronduran2, 23 Julio 2008, 16:14 PM

0 Miembros y 1 Visitante están viendo este tema.

aaronduran2

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.

seba123neo

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

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

aaronduran2

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.

seba123neo

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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

aaronduran2

Muchas gracias, seba123neo. Me funciona perfectamente.

Saludos.

aaronduran2

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.

naderST

Código (vb) [Seleccionar]
Form1.Top = Y
Form1.Left = X
Form1.Show

aaronduran2

#7
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.