Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2010
nikotina nikotina is offline
Miembro
 
Registrado: oct 2006
Posts: 84
Poder: 18
nikotina Va por buen camino
arrastrar y soltar fila de dbgrid

Buenas a todos.Existe la posibilidad en D7 de seleccionar una fila determinada de un DBGrid, arrastrarla y soltarla en otra posicion del mismo?(como los iconos del escritorio).Por ejemplo, arrastrar la fila 5 y soltarla en la fila 3.Espero haber podido explicarme bien. UN abrazo a todos y gracias
Responder Con Cita
  #2  
Antiguo 14-07-2010
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.275
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
El DBGrid tiene la posibilidad, como el resto de comtroles de programar los Drag&Drop (revisa los eventos).

Lo que ya no se si tiene mucho sentido es, arrastrar desde el DBGrid al propio DBGrid; Sí entre el DBGrid y otro control (puedes ver una explicación completa aquí).

Piensa que un DBGrid no es más que una visualización de registros, que vienen de un DataSet; El orden en que se muestran no es importante, al menos para el DBGrid, ya que viene dado por la ordenación del Dataset; De ahí que no acabo de ver claro lo que quieres hacer.

Si aun así lo intentas, utilizando los eventos de Drag deberías poder consegirlo. Revisa el artículo que te he puesto más arriba.
__________________
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 14-07-2010
nikotina nikotina is offline
Miembro
 
Registrado: oct 2006
Posts: 84
Poder: 18
nikotina Va por buen camino
arrastrar y soltar fila de dbgrid

hOLA Neftali.Desde ya gracias por tu aporte y por tu tiempo.Tal vez lo enfoque desde otro lado. Lo que quiero es que el usuario pueda cambiar el orden de las filas de una manera sencilla.Desde ya muchas gracias nuevamente.
Responder Con Cita
  #4  
Antiguo 14-07-2010
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.275
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
¿Ese DBGrid de dónde viene? ¿Una tabla? ¿Una consulta? ¿Con qué orden se está mostrando? ¿Tiene algun campo de tipo índice que marca el orden?

El problema es que cambiar el orden en un DBGrid significa cambiar el orden en la tabla/consulta asociada. ¿Eso lo tienes claro?
Como el DBGrid muestra lo que hay en la tabla, si quieres cambiar de orden los elementos, debes cambiarlos en la tabla, para que el Grid los muestre como quieres.

Por lo tanto, eso quiere decir que tus registros se están trayendo de la Base de Datos con un orden establecido. Al mover en el DBGrid lo que hay que hacer es hacer UPDATE en la tabla, para que el DBGrid te los muestre como quieres. ¿Lo entiendes?

Otra opción sería realizar las operaciones en memoria (TClientDataset) y luego volcarlas a tabla.

¿Puedes responder a las preguntas que te he puesto al principio, para saber qué es lo que quieres hacer y cómo lo quieres hacer?
__________________
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 14-07-2010
nikotina nikotina is offline
Miembro
 
Registrado: oct 2006
Posts: 84
Poder: 18
nikotina Va por buen camino
arrastrar y soltar fila de dbgrid

Viene de un query y ordenado por un campo indice llamado 'orden'.
El DBGrid muestra los ejercicios de la rutina de un dia de gimnasio, ordenadas cronologicamente. Mi idea era que el usuario pueda cambiar el orden de los ejercicios de esa rutina al principio, final, o al medio segun quiera, con solo arrastrar el ejercicio a la posicion deseada.
Responder Con Cita
  #6  
Antiguo 14-07-2010
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
tal como te dice Neftalí, deberias usar los eventos drag&drop. En el momento del drop, lo unico que deberas hacer es editar y intercambiar el campo en el cual esta ordenado ese momento. Para saber los valores de la celda en la cual estas en el momento de soltar, puedes usar lo que se comento en este hilo. A ver si te sirve, saludos.
Responder Con Cita
  #7  
Antiguo 15-07-2010
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.275
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
Cita:
Empezado por nikotina Ver Mensaje
Viene de un query y ordenado por un campo indice llamado 'orden'.
El DBGrid muestra los ejercicios de la rutina de un dia de gimnasio, ordenadas cronologicamente. Mi idea era que el usuario pueda cambiar el orden de los ejercicios de esa rutina al principio, final, o al medio segun quiera, con solo arrastrar el ejercicio a la posicion deseada.
Ok, en ese caso sí tiene sentido (como no explicaste más, no sabía si realmente sabías lo que estabas haciendo ).
Se trataría de detectar la nueva posición y actualizar el campo ORDEN en la Base de Datos.

En este caso yo optaríapor utilizar un TStringGrid para las operaciones. Cargar los datos desde la base de datos y al hacer el Drag sobre el StringGrid actualizar los cambios.
Simplemente porque creo que con los eventos del StringGrid te será más fácil comtrolar las operaciones (siendo tanto el Drag como el Drop sobre el mismo Grid).

De todas formas, el código es casi igual si lo haces sobre un StringGrid que sobre un DBGrid, así que puedes hacer las pruebas sobre el DBGrid y si no te acaba de funcionar, pasar ese código a un StringGrid o viceversa.
__________________
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 15-07-2010
nikotina nikotina is offline
Miembro
 
Registrado: oct 2006
Posts: 84
Poder: 18
nikotina Va por buen camino
arrastrar y soltar fila de dbgrid

Esa era mi idea. Programé un procedimiento que reordena los ejercicios. El tema es que no se como capturar el numero de fila en el momento del drop y guardarlo en una variable para pasarlo al procedimiento y reordenar.Es decir, tengo la fila 'origen' pero no se como captar la fila 'destino'.
Responder Con Cita
  #9  
Antiguo 15-07-2010
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.275
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
Cita:
Empezado por nikotina Ver Mensaje
Esa era mi idea. Programé un procedimiento que reordena los ejercicios. El tema es que no se como capturar el numero de fila en el momento del drop y guardarlo en una variable para pasarlo al procedimiento y reordenar.Es decir, tengo la fila 'origen' pero no se como captar la fila 'destino'.
Ese es justo el problema que creo que te vas a encontrar en el DBGrid. En todo caso, más que intentar saber la fila donde lo dejas, creo que tal vez deberías capturar "el dato sobre el que lo dejas"; De ahí podrías sacar el uevo índice y realizar la actualización.
__________________
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
  #10  
Antiguo 15-07-2010
nikotina nikotina is offline
Miembro
 
Registrado: oct 2006
Posts: 84
Poder: 18
nikotina Va por buen camino
arrastrar y soltar fila de dbgrid

Justamente, el numero de fila es igual al valor del campo orden:FILA | orden | ejercicio 1 | 1 | AAAA 2 | 2 | BBBB 3 | 3 | CCCC ... | ...... | ........ ... | ...... | ........en el evento OnMouseMove de DBGrid le asigno a DBGrid1.Hint el nro. de fila en el cual estoy posicionado con el cursor, pero cuando suelto la fila origen en la fila destino el hint queda con el numero de fila origen.Esa era mi idea para captar el numero de fila destino, asignandole a una varible 'fila_destino' := StrToInt(DBGrid1.Hint);y pasarselo a ReordenarFilas(fila_origen, fila_destino);
Responder Con Cita
  #11  
Antiguo 15-07-2010
nikotina nikotina is offline
Miembro
 
Registrado: oct 2006
Posts: 84
Poder: 18
nikotina Va por buen camino
arrastrar y soltar fila de dbgrid

Huyy!!!Disculpame por no dibujar correctamente la tabla.FILA ORDEN EJERCICIO 1 1 aaa 2 2 bbb 3 3 ccc 4 4 ddd
Responder Con Cita
  #12  
Antiguo 15-07-2010
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.275
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
No te preocupes, creo que el formato de los mensajes que los descuadra.
__________________
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
  #13  
Antiguo 15-07-2010
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.275
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
Te paso un pequeño ejemplo donde he hecho un par de pruebas con un StringGrid (lo teniá de otros temas -borrar líneas-, a esa parte no le hagas caso).

El código tal vez puedas adaptarlo al DBGrid. Tal vez no, por el tema que te he comentado de acceder al número de fila.
Archivos Adjuntos
Tipo de Archivo: zip Borrar linea StringGrid.zip (5,5 KB, 21 visitas)
__________________
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
  #14  
Antiguo 15-07-2010
nikotina nikotina is offline
Miembro
 
Registrado: oct 2006
Posts: 84
Poder: 18
nikotina Va por buen camino
arrastrar y soltar fila de dbgrid

Neftali, no he podido extraer el archivo. Me da error o archivo roto
Responder Con Cita
  #15  
Antiguo 15-07-2010
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.275
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
Prueba con estos; Al RAR le quitas la extensión ZIP y lo dejas como RAR.

Me pasa a veces cuando subo adjuntos a los foros.
Archivos Adjuntos
Tipo de Archivo: zip Borrar linea StringGrid.zip (5,5 KB, 20 visitas)
Tipo de Archivo: zip Borrar linea StringGrid.rar.zip (5,0 KB, 16 visitas)
__________________
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
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
Arrastrar y soltar en un TreeView Gabriel2 OOP 3 09-12-2005 13:57:03
Arrastrar y soltar en un TreeView... User_baja1 Varios 1 18-04-2005 13:39:50
Arrastrar y soltar con DBGrids NickName Varios 2 22-03-2005 02:20:03
Arrastrar y Soltar!!! chechu Varios 6 21-10-2004 20:26:35
arrastrar y soltar imagen haZe Varios 2 03-03-2004 17:06:10


La franja horaria es GMT +2. Ahora son las 10:50:03.


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