![]() |
Componente de arrastrar
Hola foro, quiero hacerle una consulta, quiero hacer un modulo de cotización, dentro del mudulo de cotización quiero colocar un centelló donde me refleja la tabla de productos en la parte superior del from, debajo de este sentillo debe de estar un dbgrid. Ahora bien yo quisiera arrastrar con el mouse el producto desde el sentillo hasta el dbgrid, alguien tendrá algúna idea de como hacerlo o que componente debo utilizar?
|
Hola
No se que es un centelló ? o sentillo ?. A que te refieres ? Saludos |
Cita:
Cita:
|
Hola
No conocía el poema amigo y eso que viví un tiempo en Venezuela, me sonaba que andaba por algún tipo de modismo nacional, no pensé en el estado de Arauca :), pero sigo sin saber que tiene que ver con delphi.:confused: Estoy igual, no entiendillo nadilla.:D Saludos |
Llamamos sentillo, una franja en la parte superior del from. Para decirlo en otras palabras pudiera ser un grid, un group box, un panel, lo que quiero poderlo hacer con cualquier cosa que pueda contener la informacion de la tabla de producto con su foto. Inicialmente habia pensado un grid horizontal donde en cada celda me aparezca la foto del producto y debajo de ella unos label con la informacion del mismo y al arastrarlo a un dbgrid el el mismo from se carque el producto, con imformacion de costo, cantidad etc.
|
Hola gianfranco.
Ahora sí está un poco más claro, pero de todas maneras no alcanzo a entender la situación o te faltan algunos detalles para que lo haga. Por que si en la parte superior tenés un TDBImage asociado a un TDataSet y debajo un TDBGrid asociado al mismo, al estar seleccionada la imágen, en el DBGrid estará seleccionado el registro del campo que la contiene... De todos modos te pongo un ejemplo de donde quizá puedas sacar alguna idea. Para el mismo agregá un TDBCtrlGrid, un TDBGrid y un TDBImage centrado en el panel del DBCtrlGrid . Logicamente, para la prueba necesitarás un DataSet que contenga un campo con imágen. Saludos. |
1 Archivos Adjunto(s)
Archivo Adjunto 2214
bueno le envío un ejemplo que estoy haciendo: el de abajo es un dbgrid con un clientdataset, lo que esta arriba es Dbctrlgrid. lo que yo quisiera hacer y no se si lo estoy haciendo con la herramienta correcta es que en el edit1 atravez del evento onchange le coloco una consulta sobre la tabla de productos utilizando un like, obviamente en este momento en el Dbctrlgrid deberan aparecerme todos los productos de forma vertical que coincidan con el like, se debe mostrar de esta forma la foto pequeña del productos, debajo de la foto debo ver por ejemplo la cantidad en inventario y la descripcion del producto. ahora bien quiero que el usuario selecione la foto con el mouse y lo arrastre hasta el dbgrid que esta abajo y al soltarlo en el dbgrid debe llenar la columna solo con los datos requeridos, como emeplo co_art, cost_unit. etc. no se si tienen alguna idea de como hacerlo o que herramienta usar para eso. saludos |
Hola Gianfranco.
Si ahora te entiendo perfectamente, pero creo sería mas apropiado usar un componente que pueda mostrar texto y recibir Drag&Drop independientemente de los cambios del TDataSet. Puede ser cualquiera de tu gusto, te pongo un ejemplo simple que usa un TStaticText:
Saludos. |
con cual componente pudiera hacerlo, tomando en cuenta que el de arriba debe ser horizontal y debe mostrarme la imagen y el de abajo puede ser un dbgrid?
|
Cita:
Saludos. Edito: ¿ O el DBGrid estaría relacionado con otro TDataSet ? |
Hola
Con esto de mover componentes me acorde del maestro Neftali y un ejemplo muy bueno que hizo. Con su código he hecho este pequeño juego.:) Con el mouse (click Derecho) tomad la imagen y arrastrarla al dbgrid.;):D Saludos |
oye caral, tu ejemplo es justo lo que estaba buscando, vale eres grande!!! pero ahora tengo una sola duda como hago ya que tu solo tienes 4 imagenes arriba pero yo necesito estar enlazado con la base de datos de productos asi que voy a tener muchissima imagenes la cual la pueda navegar en ella con un scrol ademas quisiera que en un evento onchange de un edit.text colocarle un like para reducirla busqueda, ademas otra cosa debajo de la imagen debe venir un label con la informacion de cantidad y descripcion de producto.
|
Hola
Tu en realidad, segun veo vas a tener solo una imagen que va a ir cambiando, es lo mismo, solo que con una, no creo que sea con muchas. La imagen la puedes poner dentro de un panel y en este poner el label o lo que necesites, a la hora de mmoverla tendra que cambiar el codigo de imagen a panel. Para que filtra hazte un procedimiento y llamalo. Saludos |
al contrario de hecho utilizo un like para reducir la busqueda, sobre una tabla de 1500 productos lo que quiero obtener con el like es que cuando el usuario escriba ejemplo 'ceramica 30X30' obviamente solo en ese modelo tengo 75 productos cada uno distinto, por eso mi duda.
|
Hola
Y recibe 75 imagenes ?. No es mejor que cuando le de click al dbgrid le cambie la imagen ? Saludos |
claro recibo la 75 imágenes pero por supuesto en el panel no pueden ir la 75 por eso deberia tener algo que lo pueda mover con un scrol vertical.
|
Hola
Para hacer eso usa un srollBox (paleta adicional), ya trae el scroll. Saludos |
caral tienes algun ejemplo de como llenar el scollbox con la informacion que requiero?
|
Hola
No se que requieres.? Saludos |
es lo mismo que tu tienes en el ejemplo tu tienes solo 3 productos yo tengo que leer y traerme la información que este en la tabla de productos, donde quiero que me muestre las fotos del productos y debajo de la foto la descripción y el precio, todas estas información esta en una tabla.
|
Hola
Donde estan las fotos?. Saludos |
en la tabla de productos tengo un campo donde se guarda la ruta del del archivo jpg, la misma se esta colocando una carpeta es el servidor donde el nombre del archivo es igual a el código del producto .jpg
|
Hola
Entonces estas usando un loadfromfile para traer la foto según el dato que tienes en el campo + el nombre del campo codigo. Bueno, me parece bien, algo complicado, pero bien. No tengo ningún ejemplo de eso, tendría que currarlo. Esencialmente es sencillo. Haces el filtro de la BD. Traes la informacion al dbgrid. Llamas al archivo de las fotos, las recorres y buscas los nombres que coincidan con los archivos de dataset (dbgrid). Creas Un Tpanel y un TImagen en ejecucion con el tamaño que necesites y los presentas, vas aumentando el left para se vallan presentando, cuando lleguen a un top, automaticamete el srollbox creara el scrollbar. Por ahi anta la cosa. Saludos |
si tienes otra forma mejor de guardar una foto en la tabla o cual seria la mejor opcion de hacerlo?
Ahora bien yo coloco el tpanel pero como hago para que la informacion de la tabla se vea en ella, tomando en cuenta que pueden ser 50, 60 o 30 productos dependiendo de la cosulta que le haga. como explique anteriormente voy utilizar el evento onchange de un edit.text y el la consulta del sql utilizare un like %''%. |
Hola
Con relacion a la foto esta bien que este en un directorio. Con relacion a la informacion y el panel o frame y la imagen con la informacion tienes que crearla por ejecucion o tambien puedes colocar 100 paneles en el scrollbox con sus respectivos timage pero es algo sucio. Saludos |
Hola
Este calendario lo hizo El Maestro Lepe. Lo busque en el FTP pero no estaba asi que lo pongo otra vez, ademas de que te servira de ejemplo para lo que necesitas. Saludos |
lo estoy haciendo con un dbctrlgrid al parecer me esta reflejando lo que necesito apena estoy comenzando luego te cuento, lo que falta es adatar tu ejemplo para arrastrarlo a un dbgrid
|
Hola gianfranco_tont,
En mi opinión, el ejemplo que te esbozó ecfisa desde un principio es el camino a seguir. Tú quieres mostrar una banda de imágenes (y otra información) que provienen de una base de datos, por lo que la opción de usar un DBCtrlGrid es la más adecuada, ya que dicho control te facilita todo el desplazamiento y presentación de los datos. Un pequeño inconveniente es que las imágenes las guardas en archivos fuera de la base de datos, por lo que no te vale colocar un DBImage. Pero no es un gran inconveniente. Coloca en su lugar un Image normal en el panel del DBCtrlGrid y en el evento OnPaintPanel del DBCtrlGrid cargas la imagen que corresponda:
Para arrastrar la imagen únicamente tienes que usar los eventos OnDragOver y OnDragDrop del DBGrid: DragOver:
DragDrop:
Es decir, usas el valor del campo del dataset como requieras. Para iniciar el arrastre, ecfisa usó el evento OnMouseDown del (DB)Image, pero tiene un problema, y es que debes seleccionar primero el panel deseado y luego hacer el arrastre. Es decir, si intentas arrastrar directamente un panel que no está seleccionado no se puede, o al menos es lo que he observado. Para remediar esto basta que uses el evento OnMouseDown del DBCtrlGrid y ahí hagas lo mismo:
// Saludos |
Eso es justamente lo que quiero pedir de su ayuda ya que efectivamente quiero guardar la imagen en la tabla de productos pero no se como hacerla, que tipo de campo crear y como hago finalmente para guardarla. Si tienen algun ejemplo eso me ayudaria mucho mi bd en sql 2008 y esto trabajando con delphi 2009
|
Hola
Aqui te dejo otro ejemplo para que juegues un rato. Este ejemplo crea dentro del scrollBox los paneles, las imágenes y los label (en ejecución). Espero que con esto y todos los demás ejemplos puedas ir armando tu sistema. Ojala te sirva de algo. Saludos PD: He tenido que poner el enlace por que el tamaño del archivo no me deja subirlo aquí. |
gracias caral, aun veo como mejor opción tener las fotos en la base de datos, si tienes un ejemplo de eso si me ayudaria muchissimo, ya que no se que campo crear en la tabla para que me almacene la foto y si este campo funciona igual a cualquier otro para guardar la foto en el.
|
Hola
Tengo ejemplos de eso pero al contener las fotos en la BD excede el espacio limitado. Aqui te pongo el código para que lo veas: Saludos |
ok ya guarde la imagen en la base de datos, creo que como estoy trabajando con sql no creo que debo tener limitaciones o si?
Ahora la guarde pero como hago para que el dbimage me la muestre? |
1 Archivos Adjunto(s)
Cita:
De todas formas, por si te sirve, te pongo un ejemplo usando la técnica que te esbocé, es decir, con las imágenes en archivos separados. El zip contiene un ejecutable, pero sólo podras usarlo si tienes delphi 7. En caso contrario, tendrás que abrir y compilar el proyecto. // Saludos |
Cita:
como pudiera solucionar eso? |
Cita:
|
Cita:
Talvez esto pueda darle una idea del problema que tengo. |
Cita:
|
Hola
No he usado el dbctrlgrid nunca. Pregunto: El dbctrlgrid esta metido dentro de un panel u otro ?. Saludos |
No simplemente esta en el from.
|
La franja horaria es GMT +2. Ahora son las 10:47:09. |
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