PDA

Ver la Versión Completa : Saber la posición del mouse al interior de un canvas....


DarkMedel
09-04-2004, 05:40:19
Hola a tod@s:
Estoy haciendo un componente que deciende de TImage y me gustaria agregarle un metodo donde pudiera recuperar la posicion donde esta el mouse sobre el componente. ya que quiero colocar la posicion en que se encuentra el mouse sobre el canvas. Parecido a lo que hace el Paint. Pero lo quiero hacer con el origen en la esquina inferior izquierda.. pero no encuentro como conocer la posicion del mouse... si alguien pudiese ayudar se le agradeceria muchiso...:D y los incluieria en mis oraciones :o

Nadie
09-04-2004, 05:59:23
para saber la posicion del mouse seria asi

var
pos: tpoint;
begin
getcursorpos(pos);
end;

donde pos.x es el eje x y pos.y es el eje y

DarkMedel
09-04-2004, 06:14:36
Lo que pasa es que ese me entraga la posicion del mouse dentro de la pantalla yo quiero obtenerlo solo para el Timage como lo hace por el metodo onmousemove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

pero por forma interna... en el fondo no se... por inventar algo...

imagen.getmousepos(pos);
x:=pos.x;
y:=pos.Y;

pero las posiciones asociadas al canvas del Timage no de la posicion de la pantalla

DarkMedel
09-04-2004, 06:25:35
onmousemove(Sender: TObject; Shift: TShiftState; X, Y: Integer);En el fondo como puedo conocer el contenido de las variables X e Y del objeto Timage asociado a este metodo

Nadie
09-04-2004, 06:51:29
con getcursorpos como dijiste tenes la posicion del cursor en pantalla pero si le restas la posicion del formulario y la del componente tenes la posicion del mouse en relacion a la del componente, osea x es igual a pos.x-(left+componente.left) y lo mismo para el eje x, pero con onmousemove podes guardar en una variable global el valor de x e y de ese procedimiento y eso es mas sencillo, pero es mejor el otro metodo, por lo menos para mi

saludos
Ariel

roman
09-04-2004, 11:26:51
Para convertir las coordenadas de pantalla a coordenadas relativas a un control (TImage en este caso), Delphi ya cuenta con un método: ClientToScreen.

// Saludos

mg1821
24-08-2015, 21:29:31
Como escriben por ahí picando al componente, en este caso el image1, por ejemplo, luego al procedimiento onmousemove y ahí en los parametros ves el X e Y. conviertes con inttostr(X) para pasarlo a por ejm un label y listo.

Label1.Caption := inttostr(X);

qP:-)