PDA

Ver la Versión Completa : ¿Para que sirve MouseDownSpot?


Jan_polero
30-11-2004, 22:35:05
Hola amigos. Pues resulta que implementé una función que encontré por internet y ahora quiero cambiarla un poco.Necesito saber para qué sirve MouseDownSpot.X y MouseDownSpot.Y
Gracias de antemano y un saludo.

roman
30-11-2004, 22:43:16
Estee...

¿Y cómo vamos a saber lo que hace una función que encontraste por ahí si no vemos el código?

Lo único que puedo pensar es que MouseDownSpot es una variable de tipo TPoint. Más no puedo adivinar :( .

// Saludos

Jan_polero
30-11-2004, 23:09:23
Vaya,lo siento...jeje.Pues el código va en 3 eventos:

Lo que hace esto es permitir mover Imagenes por el form.Pero hay algunas cosas que no sé que son,como por ejemplo MouseDownSpot o ReleaseCapture(que aunque resulta obvio que suelta la captura desconozco qué es).

//CODIGO DELPHI//

Capturing : boolean;

procedure TFInventario.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Capturing := true;
MouseDownSpot.X := x;//TImage(Sender).Left -1;
MouseDownSpot.Y := y;//TImage(Sender).Top -1;
end;


procedure TFInventario.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Capturing then
begin
TImage(Sender).Left := TImage(Sender).Left - (MouseDownSpot.x - x);
TImage(Sender).Top := TImage(Sender).Top - (MouseDownSpot.y - y);
end;
end;


procedure TFInventario.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Capturing then
begin
ReleaseCapture;
Capturing := false;
TImage(Sender).Left := TImage(Sender).Left - (MouseDownSpot.x - x);
TImage(Sender).Top := TImage(Sender).Top - (MouseDownSpot.y - y);
end;
end;
//FIN CODIGO DELPHI//

Ese es el código.Lo que quiero hacer es que cuando se seleccione una imagen se cree una copia y sea la copia la que se mueva.Por ello debo saber lo que hace.Por ello cualquier ayuda es buena.Muchas gracias de antemano.

roman
01-12-2004, 02:34:26
Pues MouseDownSpot lo usan para almacenar las coordenadas del punto donde comienza a arrastrase la imagen.

Pero si me atengo en lo que mencionabas en el otro hilo (http://www.clubdelphi.com/foros/showthread.php?t=16477) la verdad es que me parece que tte estás complicando la vida.

El arrastre de las imágenes lo puedes lograr más fácil con el mecanismo DragAndDrop que implementa Delphi. Y dado que al soltar la imagen piensas destruir la original no veo para qué quieres crear una copia.

Te dejo un ejemplo, figures_exe.zip (http://www.clubdelphi.com/users/roman/figures_exe.zip) (204kb) y figures_d7.zip (http://www.clubdelphi.com/users/roman/figures_d7.zip) (12.1kb).

Ambos zip contienen el mismo ejecutable sólo que el segundo (más pequeño) sólo podrás ejecutarlo si tienes Delphi 7 instalado.

En la aplicación hay dos agujeros y dos figuras. Pruébala y me dices si es algo similar lo que quieres hacer.

// Saludos

Jan_polero
01-12-2004, 09:42:37
La verdad es que debería de haber explicado todo desde el principio.Ahora mismo estoy con dos Programas a la vez.Pero camo son bastante parecidos pensé en utilizar el mismo código en los dos.
El primero de los proyectos es el de las figuras y los agujeros ya mencionado.Y el exe que me has pasado es justamente lo que buscaba.Por eso te hice caso y lo hice con los eventos de arrastrar y soltar.El segundo proyecto consiste en un inventario donde tienes objetos(Imagenes).Estos objetos se pueden combinar para formar otros.Algo así como en las aventuras gráficas.Lo de la copia de la imagen es simplemente algo visual,ya que los objetos no deben moverse.Sólo la copia de la imgen.
Un ejemplo:
Tengo en el inventario 3 objetos.Una pila,una linterna apagada y un destornillador. Los 2 primeros se pueden combinar.Entonces selecciono la pila,se crearía una copia de la pila que es la que puedo arrastrar con el ratón(sin mover la imagen original).Si la suelto sobre el destornillador no ocurrirá nada,la copia de la imagen se destruirá.Pero si lo hago sobre la linterna se destruirán la pila,la copia de la pila y la linterna,y aparecerá una nueva imagen de una linterna encendida.
Bueno,ahora sí he explicado todo.Por eso el motivo de copiar una imagen.No es realmente necesario pero lo hace más vistoso.
El problema es que no sé cómo hacer que en un click se seleccione la imagen,se cree una nueva,y sin soltar el ratón,se seleccione ésta última para arrastrarla.
Siento no haberme explicado antes.No sois adivinos.
Gracias.

angelf25
15-02-2007, 16:41:19
Pues MouseDownSpot lo usan para almacenar las coordenadas del punto donde comienza a arrastrase la imagen.

Pero si me atengo en lo que mencionabas en el otro hilo (http://www.clubdelphi.com/foros/showthread.php?t=16477) la verdad es que me parece que tte estás complicando la vida.

El arrastre de las imágenes lo puedes lograr más fácil con el mecanismo DragAndDrop que implementa Delphi. Y dado que al soltar la imagen piensas destruir la original no veo para qué quieres crear una copia.

Te dejo un ejemplo, figures_exe.zip (http://www.clubdelphi.com/users/roman/figures_exe.zip) (204kb) y figures_d7.zip (http://www.clubdelphi.com/users/roman/figures_d7.zip) (12.1kb).

Ambos zip contienen el mismo ejecutable sólo que el segundo (más pequeño) sólo podrás ejecutarlo si tienes Delphi 7 instalado.

En la aplicación hay dos agujeros y dos figuras. Pruébala y me dices si es algo similar lo que quieres hacer.

// Saludos

Hola Roman, espero puedas ayudarme. Trato de hacer un juego con arrastre de imagenes, intenté descargar los ejemplos que has puesto pero parece que los enlaces están rotos. Ojala puedas ponerlos otra vez.
Gracias