![]() |
Posición del mouse en la pantalla
Cómo puedo obtener la posición del mouse en la pantalla en el momento en que hago un doble click???
Saludos Federico |
A lo mejor te puede servir el truco 92 de Trucomanía: "Detectar la posición del ratón en tu form en una zona no cliente".
Ir a trucomanía Ir al truco Confío en mis compañeros foreros que me corrijan si me equivoco |
No aclaré bien mi problema. Lo que necesito es detectar en que posición "dentro de mi ventana de aplicación Delphi" se hizo un doble clik. El código que me indicaste es válido, pero no hay una manera mas sencilla de tomar la ubicación?
|
Ya suponía que no era en tu aplicación. No he examinado el código a fondo, pero creí que te sería útil. Sobre si hay alguna manera más sencilla, yo no puedo ayudarte en eso. Yo no se mucho sobre programación, soy el más principiante dentro de los principiantes, no se si me explico :p
|
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); var s:tpoint; begin s := Mouse.CursorPos; Label1.caption := ('X:'+INTTOSTR(S.X)+' Y:'+INTTOSTR(S.Y)); end; Haber si te sirve Saludos |
Una cosa que me deje de decirte, por supesto este código lo pones dentro del evento que quieras.Yo lo puse en el onmousemove del form, pero lo pones en el doble click de un boton o de donde quieras.
Más Saludos |
Aunque en realidad no hace falta en MouseMMove ya que este evento incluye las coordenadas.
Para complementar lo dicho por Descendents apunto que Mouse.CursorPos da las coordenadas respecto de la pantalla y no del formulario. Si se desean las coordenadas relativas al formulario puede usarse ScreenToClient para convertirlas. // Saludos |
Hola Roman:
Me podrías ayudar un poco a utilizar ésta función (ScreenToClient) ;) . Gracias. Aarón. |
Como yo llego primero, pues yo mismo :p
ScreenToClient y su homologo ClientToScreen vienen con cualquier objeto derivado de la clase Tcontrol, por tanto lo podemos usar en formularios y otros especimenes ;). Descripción: ScreenToClient Segun una coordenada pasada por parametro, la interpreta como que pertenece a la pantalla, y te devuelve la coordenada según el control que se llame, Ejemplo: Punto está en coordenadas de la pantalla. PuntoCliente es esa misma coordenada pero dentro del Formulario Form1. Aclaraciones: La pantalla empieza en 0,0 en la esquina superior izquierda. Un Form, tiene la coordenada 0,0 igualmente en su esquina superior izquierda. Si la ventana no tiene bordes, ni titulo, y está maximizada, las coordenadas Punto y PuntoCliente coinciden. Dicho en plan "Lepero" :D: Coge un rotulador y pinta en tu Monitor un punto, digamos el 100,40 (100 pixels a la derecha, 40 pixels hacia abajo de la pantalla), Ahora PuntoCliente, te dice ese punto rotulado, qué coordenada es esa, respecto a Form1. OJO, puede dar coordenadas negativas, recuerda que el origen ahora, es la esquina superior izquierda de Form1 !!! Ejecutas el programa: Maximizas el programa y pulsas sobre el boton, El boton se mueve a las nuevas coordenas. Si la ventana Form1 no está maximizada, el boton desaparece, ya que toma coordenadas negativas. ClientToScreen: En este caso, depende de donde tengas la ventana, para que ese punto se traduzca a coordenadas de la pantalla. Un saludo y espero se entienda. |
Hola Lepe:
Gracias, lo explicaste bastante claro. He implementado algo así: Pero de ésta manera me queda bajo el botón, la idea que quiero es que me quede justo sobre el botón :D . Saludos y gracias nuevamente. Aarón. |
¿Por qué le sumas 17 ? :confused:
Supongo que estabas haciendo pruebas y al final se ha quedado ahí ;) Un saludo |
Hola:
Claro, estaba haciendo algunas pruebas y sumandole 17 logré que se posicioné justo debajo del botón, pero mi idea es todo lo contrario, me gustaría que se posicione justo sobre el botón y no por debajo de éste... Saludos. ;) |
Sobre el botón.... es decir, arriba del botón !! jeje, yo contaba que quedara la esquina izquierda del menú, justo con la esquina izquierda del botón, por eso no te entendía.
El menú no tiene opción de Height, por tanto, tendrás que contar cuantos elementos tienes en el menú, despues multiplicarlo por una constante, y así saber cuanto le tienes que restar a Boton_Cory. Es tarea compleja, ya que el usuario puede tener activa las "fuentes grandes" de windows, y por tanto esa constante tiene 2 posibles valores. En este mensaje tienes más o menos el alto de un menú. Para saber si tiene las fuentes grandes, busca por el foro, creo que se ha tratado.... más bien me extrañaría que no se hubiese tratado ;). Un saludo. |
Cita:
// Saludos |
Hola Foristas:
Logré lo que quería:
a la coordenada Y le reste - 48 y quedo justito como quería, gracias por las nuevas idea expuestas. Saludos. Aaron. |
Roman, nunca dejarás de sorprenderme ;)
Como siempre, haciendo facil lo dificil. Un saludo |
Cita:
// Saludos |
La franja horaria es GMT +2. Ahora son las 04:15:10. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi