Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-10-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Transportar imágenes

Me gustaría que alguien pusiera un ejemplo de arrastre de imágenes u otro objeto llevándolo con el ratón. Yo sólo consigo simular un arrastre mediante cambio de cursor, seguido de quitar y poner una imagen.
Funciona pero queda poco realista.
Primero hago coloco en OnDragOver un Accept, y luego al hacer onDownMouse, Button=mbLeft, quito el TLabel. Luego onDropDrag del objeto destino hago visible de nuevo el objeto. Pero el ratón no "coge" el
objeto Source, sólo cambia de cursor.
Me imagino que alguien me podría dar una pista. Es para un programa infantil de colocar letras. Las letras podrían ser TImage, TStaticText o TLabel.
Si este tema se ha tratado, no lo he podido encontrar.
Gracias.
Responder Con Cita
  #2  
Antiguo 24-10-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En mi web tienes varios ejemplos relacionados con el tema, aunque no acabo de entender lo que dices, de que "Funciona, pero queda poco realista"...

Ejemplo de tratamiento de “Planos y figuras”

Seleccionar Shapes visualmente

Mover controles de un form en Runtime

Utilizar un BMP para cambiar el cursor

Arrastrar elementos entre dos TListBox

Crear/destruir comp. en Runtime y moverlas con el ratón



Espero que te sea útil.

NOTA: empieza por el último.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 25-10-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Explanation

Se trata de poner letras bajo un animal, por ej. GATO. Verás, cuando un nano de tres años (q seguro q aún no sabe leer) coge la letra G, la letra desaparece y se convierte en un papel chiquitito que se lo lleva el cursor del ratón. Pero el enano piensa "Qué raro, la letra se ha hecho pequeñísima". Luego al poner el papelito en el cuadro destino vuelve a aparecer la letra agrandada. No sé si ahora está más claro.
Lo que quiero es llevar la letra real, aunque luego al depositarla se haga mayor, o de otro color, pero que el cursor arrastre una letra, no un papelito colgando de la flecha...
Estudio tu código y lo pruebo. Ya casi lo tenía, pero me volvía loco el comportamiento aparentemente errático de la dichosa letra escapista.
Responder Con Cita
  #4  
Antiguo 26-10-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Entonces creo que el que necesitas es este: Utilizar un BMP para cambiar el cursor

En tu caso debes "montar" el BMP con la letra que necesitas arrastrar y utilizarlo como cursor o directamente arrastrar el LABEL con la letra.

Tal vez no te estoy entendiendo. Tú debes tenerlo claro porque sabes de lo que hablas, pero piensa que nosotros, si no nos das información, no lo sam¡bemos y sólo hacemos que imaginar cosas...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 26-10-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
ProbandoProbando

Llamaremos "mover" letra a nuestro propósito, para no confundirlo con el Dragging=Arrastrar. Al principio colisionaba con el Drag. El BeginDrag(True), hacia saltar el cursor de la notita, y se movía de modo raro, así que lo hice únicamente controlando el "mover" con (MouseDown, MouseMove, MouseUp) siguiendo tus instrucciones y va casi perfecto.... hasta que el TLabel pasa por encima de un Dibujo. Entonces la letra (TLabel) se vuelve borrosa y parpadea en exceso, llegando casi a perderse. Si el dibujo-base se hace 'Transparent:=True' mejora un poco, pero no de modo satisfactorio.
Ahora probaré con el BitMap o con un TImage. A ver q pasa esta vez.
Responder Con Cita
  #6  
Antiguo 26-10-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Eureka

Pues añadiendo " (Sender as TLabel).BringToFront" el Label pasa por encima de los componentes visuales. Ahora ando intentando que al posarse en su destino tenga derecho exclusivo en su casilla, frente a otras letras. De manera que una letra no pueda "posarse" donde ya hay otra correcta.
Me gustaría saber para que sirven los eventos Dock y Shift. Sé lo que significan pero no encuentro pistas. Supongo que el Dock será para "aparcar" un objeto que se mueve, ¿pero y el Shift ese?
He entendido que MouseDown acaba en su MouseUp correspondiente del mismo objeto. Con eso me conformo. Gracias.
Responder Con Cita
  #7  
Antiguo 26-10-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Se agradecen las explicaciones.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 27-10-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Se trata de llevar varias letras TLabel para formar una palabra.
El caso es q muevo perfectamente el TLabel, pero pierdo la funcionalidad (Sender, Source) del Mouse por lo que si hay dos letras o más iguales, no se puede dilucidar qué letra se ha movido. Si uso a la vez las dos efectos (Drag + movimientos) se optienen movimientos "locos" del TLabel.
Responder Con Cita
  #9  
Antiguo 29-10-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Cita:
Empezado por bulc Ver Mensaje
Se trata de llevar varias letras TLabel para formar una palabra.
El caso es q muevo perfectamente el TLabel, pero pierdo la funcionalidad (Sender, Source) del Mouse por lo que si hay dos letras o más iguales, no se puede dilucidar qué letra se ha movido. Si uso a la vez las dos efectos (Drag + movimientos) se optienen movimientos "locos" del TLabel.
Los eventos antagonistas tienen prioridad, de manera que al entrar en la Imagen, salta el MouseUp del Sender (TLabel) y pierdo la referencia tan cómoda que facilitan los eventos del Drag (Sender y Source)
¿Cómo puedo hacer para que el objeto Imagen dispare un evento que me indique el Source y el Sender? o lo que es lo mismo; si se mueven las letras TLabel encima de los TImage, ¿cómo puedo discriminar las letrs en el caso de estar repetidas? ¿Se entiende? Espero que sí y que alguien pueda aportar su opinión. Eso espero.... y gracias.
Responder Con Cita
  #10  
Antiguo 29-10-2012
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Cita:
Empezado por bulc Ver Mensaje
Los eventos antagonistas tienen prioridad, de manera que al entrar en la Imagen, salta el MouseUp del Sender (TLabel) y pierdo la referencia tan cómoda que facilitan los eventos del Drag (Sender y Source)
¿Cómo puedo hacer para que el objeto Imagen dispare un evento que me indique el Source y el Sender? o lo que es lo mismo; si se mueven las letras TLabel encima de los TImage, ¿cómo puedo discriminar las letrs en el caso de estar repetidas? ¿Se entiende? Espero que sí y que alguien pueda aportar su opinión. Eso espero.... y gracias.
Añadido: Lo q quiero es, q en vez de arrastrar (y aparezca el Cursor "portanota"), se pueda mover el TLabel pegado al ratón y que al soltarlo sobre un TImage1 (Tapa) , desaparezca el TLabel y aparezca otra imagen que estaba debajo de la "Tapa". Lo puedo hacer si hago Drag and Drop, pero me gustaría poder hacerlo llevando la letra de TLabel durante todo el recorrido. Lo hago pero al soltar la letra (TLabel), la imagen no discrimina qué letra viene (Me refiero a que haya dos letras iguales).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Transportar Programa laukri Varios 6 02-10-2008 01:11:40
transportar datos con un txt PEPE_69 C++ Builder 1 30-03-2007 20:03:55
Problemas al transportar un proyecto CamiloU Varios 3 07-04-2006 22:00:09
Transportar BDE Enan0 Conexión con bases de datos 1 28-09-2005 09:23:04


La franja horaria es GMT +2. Ahora son las 21:53:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi