Foro de elhacker.net

Programación => 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
  1. Option Explicit
  2. Private Declare Function GetCaretPos Lib "user32" (lpPoint As POINTAPI) As Long
  3. Private Type POINTAPI
  4.    X As Long
  5.    Y As Long
  6. End Type
  7.  
  8. Private Sub Text1_KeyPress(KeyAscii As Integer)
  9. Dim XPos As Long
  10. Dim YPos As Long
  11. XPos = GetTCursX
  12. YPos = GetTCursY
  13. Me.Caption = "X: " & XPos & " Y: " & YPos
  14. End Sub
  15.  
  16. Public Function GetTCursX() As Long
  17.    Dim pt As POINTAPI
  18.    GetCaretPos pt
  19.    GetTCursX = pt.X
  20. End Function
  21.  
  22. Public Function GetTCursY() As Long
  23.    Dim pt As POINTAPI
  24.    GetCaretPos pt
  25.    GetTCursY = pt.Y
  26. End Function
  27.  

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
  1. Form1.Top = Y
  2. Form1.Left = X
  3. 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.