PDA

Ver la Versión Completa : Ayuda con Objetos


JerS
11-10-2005, 05:08:34
Buenas amigos de la comunidad de delphi! les escribo para que me ayuden un poco con algo que estoy haciendo, yo estoy moviendo un imagen sobre varios shape en tiempo de ejecucion, y me gustaria saber como hago para captar el nombre del shape sobre el cual estoy arrastrando la imagen, Recuerden que cuando digo que estoy arrastrando la imagen es que la tengo seleccionada con el click del mouse, no hay una manera de que me diga a penas suelte el click del mouse que tengo sobre la imagen, sobre que shape estoy parado?

dec
11-10-2005, 07:43:09
Hola,

Se me ocurre que podrías utilizar el evento "OnMouseMove" de los "TShape". No sería menester que cada uno tuviera "su propio evento", estos podrían compartirlo. En determinada variable podrías guardar la información que te interesa: sobre qué "TShape" se "paró" el ratón. ¿Qué tal? :)

Neftali [Germán.Estévez]
11-10-2005, 09:56:03
Si pones el código que estás utlizando ayudaría...

OscarG
11-10-2005, 10:04:55
Yo con objetos Shape y otros componentes delphi no suelo tratarlos, pero si q he tenido q hacer objetos q se arrastren.

Yo lo q suelo hacer es, digamos q tengo un objeto q se arrastra y otro contenedor, entonces, cuando arrastro un objeto, activo el contenedor para q se ponga en activo, y al soltar el ratón, lo desactivo. Entonces al activar el contenedor, el contenedor mira si el puntero se está posicionando encima de él, si es asi, suelo hacer q el contenedor cambie de forma para q se sepa q estas encima, y si sueltas dentro del contenedor, entonces haría lo q tenga q hacer...para esto podrías quizás sobreescribir las clases o quizás no...

Esto lo hago yo xq me creo mis propios objetos, pero igual el propio delphi tiene otras posibilidades, espero no llevarte por el mal camino...

roman
11-10-2005, 10:21:53
¿Y no sería mejor utilizar el mecanismo de drag&drop que ya implementa Delphi?

1. Se pone la imagen en DragMode = dmAutomatic.
2. A los objetos TShape se les asigna el mismo evento OnDragOver y OnDragDrop.
3. En OnDragOver se pone el parámetro Accept en true para aceptar el arrastre (o se usa algún otro método para determinar si se puede o no soltar ahí la imagen).
4. Ambos eventos cuentan con el parámetro Sender que será el TShape sobre el que se va a soltar la imagen y el parámetro Source que es el objeto que se está arrastrando.
5. En el evento OnDragDrop se usan los parámetros X, Y para determinar la posición donde se suleta la imagen y, en su caso, mover el objeto TImage ahí.

// Saludos

JerS
12-10-2005, 00:04:23
¿Y no sería mejor utilizar el mecanismo de drag&drop que ya implementa Delphi?

1. Se pone la imagen en DragMode = dmAutomatic.
2. A los objetos TShape se les asigna el mismo evento OnDragOver y OnDragDrop.
3. En OnDragOver se pone el parámetro Accept en true para aceptar el arrastre (o se usa algún otro método para determinar si se puede o no soltar ahí la imagen).
4. Ambos eventos cuentan con el parámetro Sender que será el TShape sobre el que se va a soltar la imagen y el parámetro Source que es el objeto que se está arrastrando.
5. En el evento OnDragDrop se usan los parámetros X, Y para determinar la posición donde se suleta la imagen y, en su caso, mover el objeto TImage ahí.

// Saludos

Muchas Gracias a todos por su Ayuda :D, Una pregunta Roman con el evento OnDragDrop yo puedo especificar en que parte del shape me suelte la imagen, asignandolo en la X y Y??. Disculpa mi ignorancia, pero hice todo lo que me dices ahi arriba y cuando intento mover la imagen me sale bloqueada, el Icono que no me deja mover ahora la imagen

dec
12-10-2005, 03:24:34
Hola,

Con el permiso de roman. Estuve jugando un poco con el tema y he preparado un sencillo ejemplo (que adjunto) a ver qué te parece JerS. ;)

JerS
12-10-2005, 17:50:36
Hola,

Con el permiso de roman. Estuve jugando un poco con el tema y he preparado un sencillo ejemplo (que adjunto) a ver qué te parece JerS. ;)
MUCHAS GRACIAS Dec, tu ejmplo era exactamente lo que necesitaba (Y)..