Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-01-2009
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
CxGrid con CheckBox

Hola amigo del club delphi mi pregunta es la siguiente tengo una cxGrid de QuantumGrid con un lista de facturas por cancelar a determinado cliente, lo que dese es adicionar una columna llamada cancelar con una casilla checbox para que el usuario seleccione q facturas desea cancelar. Pero este campo no existe en la base de datos y deseo q solo exista en memoria este valor para desplegar el form de cancelacion de facturas, el problema es q no se como puedo trabajar con un campo en memoria al tener una consulta, es decri crear un campo de tipo Char y mediante la grilla de la consulta modificar este valor y luego verificar estos valores modificados.

Utilizo firebird 2.0, delphi 7 y los componentes QuantumGrid de DVExpress.

Gracias
Responder Con Cita
  #2  
Antiguo 20-01-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Puedes utilizar el componente TdxMemData que viene en las Quantum. Yo todavía no lo he usado, pero según la ayuda, te crea una tabla en memoria.
__________________

Responder Con Cita
  #3  
Antiguo 20-01-2009
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Gracias contraveneno por tu ayuda, no encuentro este componente q dices, lo q deseo es solo crear un campo en memoria no chequeado y q luego el usuario seleccione los registros que quiere chequeandolos y q esta informacion me quede en memoria para saber cuales chequeo.
Responder Con Cita
  #4  
Antiguo 20-01-2009
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Smile

Otra alternativa sería:

Código SQL [-]
  SELECT CAMPO1, CAMPO2, 'N' AS CANCELAR FROM TABLA1

Con esta solución tendrías que trabajar en cache y luego bajarlo al servidor.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #5  
Antiguo 20-01-2009
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Como se trabaja en cache no me permite chequear.
Responder Con Cita
  #6  
Antiguo 20-01-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Cita:
Empezado por Vlady Ver Mensaje
Gracias contraveneno por tu ayuda, no encuentro este componente q dices, lo q deseo es solo crear un campo en memoria no chequeado y q luego el usuario seleccione los registros que quiere chequeandolos y q esta informacion me quede en memoria para saber cuales chequeo.
Yo lo veo en la paleta de DevExpress, dos lugares abajo del cxGrid (Quantum versión 6.41).

Y la idea es hacer tu consulta (Query) y ligarla a este componente, en el cuál le puedes definir todo lo que necesites y luego controlarlo desde ahí como si fuera un Dataset normal. El usuario con esta tabla en memoria puede hacerlo todos los cambios que quiera y al final validas cuales están seleccionados...

también podrías emplear una tabla temporal y un TClientDataset, pero creo que es mas rollo.
__________________

Responder Con Cita
  #7  
Antiguo 20-01-2009
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Tengo la version 5.11 de los cuantum Grid
Responder Con Cita
  #8  
Antiguo 20-01-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Vlady, puedes utilizar un ClientDataSet para crearte ese campo en memoria, debes relacionar tu DataSet->DataSetprovider->ClientDataSet y al ClientDataSet es al que le aumentas ese campo en memoria, los datos de ese campo no se almacenan en tu BD ya que el campo no existe, pero puedes trabajarlo en memoria como si fuera otro campo, cuando hagas el AppyUpdates ese campo no se graba ni lo toma en cuenta.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #9  
Antiguo 20-01-2009
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Te estas complicando demasiado, el componente QuantumGrid tiene una opción muy sencilla para seleccionar varias filas (registros) y luego saber que filas se seleccionaron. Todo ello sin meterse en broncas de checkboxes y demás. Revisa la documentación que traen, ahi viene un ejemplo precisamente de eso, otra opción es el foro de consultas de los devex, te mandarán seguramente un ejemplito de acuerdo con tu caso.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #10  
Antiguo 21-01-2009
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Pero cual es el ejemplito?
Responder Con Cita
  #11  
Antiguo 21-01-2009
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
mmmmm...si tienes una version registrada seguramente la tienes y seguramente tabien tienes acceso al foro de dudas de DevExp...por lo que veo tienes una copia...que no pagaste...ni modo.

Acoto: luego me dicen el caza-piratas. Si adquiriste el componente, tienes derecho a soporte directo de parte de la gente DevExp, el cual incluye acceso al foro donde les puedes poner CUALQUIER duda respecto a como utilizar tal o cual función, o cmo hacer tal o cual cosa. Normalmente te ponene una solución acompañada de un ejemplo de como usarlo y en casos de que no esté implementado toman nota y lo utilizan par la siguiente versión...todo ello obviamente si eres usuario registrado.

Hasta ahora es nuestra mejor inversión.
__________________
AKA "El animalito" ||Cordobés a mucha honra||

Última edición por AzidRain fecha: 21-01-2009 a las 01:20:05.
Responder Con Cita
  #12  
Antiguo 21-01-2009
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Que tal,
La propuesta que hace caro con el CDS es para mi la mas sencilla, que de hecho yo la tengo implementada en un buen numero de ocasiones. Como dice, puedes crear un campo de tipo "internal data", en CDS y a este asignarle la columna del check. Y si utiliza ApplyUpdates para grabar, este simple y sencillamente es ignorado.
Saludos.
__________________
Ya tengo Firma!
Responder Con Cita
  #13  
Antiguo 21-01-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por juanelo Ver Mensaje
Que tal,
La propuesta que hace caro con el CDS es para mi la mas sencilla, que de hecho yo la tengo implementada en un buen numero de ocasiones. Como dice, puedes crear un campo de tipo "internal data", en CDS y a este asignarle la columna del check. Y si utiliza ApplyUpdates para grabar, este simple y sencillamente es ignorado.
Saludos.
Así es, yo también optaría por la solución de Linett. Es otra de las muchas ventajas de usar ClientDataSets, el hecho de poder añadirle campos de memoria adicionales al conjunto de datos.

Se conocen como InternalCalc.

Saludos.

Al.
Responder Con Cita
  #14  
Antiguo 21-01-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
pues a mi me parece más sencillo utilizar las funciones del mismo cxGrid y simplemente seleccionar las que se quieren cancelar; es decir, no hay necesidad de campos extra, ni de tablas en memoria, ni de checkboxes.
__________________

Responder Con Cita
  #15  
Antiguo 21-01-2009
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Es lo que yo decia contraveneno, ¿verdad que es mas sencillo?
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #16  
Antiguo 21-01-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Hola!

Entiendo que algunas cosas serían más sencillas bajo otro enfoque de interfaz de usuario. De hecho es probable que yo también usaría la selección múltiple en un caso como ese.

Pero si el usar cuadros de verificación (check boxes) es un requerimiento de diseño de Vlady, creo que un campo extra de memoria no sería mala idea para cumplir con ese requerimiento.

Así lo llegué a usar en un caso donde se requería selección rápida y clara por parte de un cajero. Este caso es para marcar de una lista de deudas las que el deudor puede o quiere pagar (con sus respectivas validaciones de correlación y cronología):



Saludos.

Al González.
Responder Con Cita
  #17  
Antiguo 21-01-2009
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Extendiendo el comentario de Al, yo creo que al usuario comun y corriente le es mas intuitivo ver una columna que le indique que hay que checar para que se selecciono y no la multiple seleccion donde ademas interviene la combinacion de teclas simultaneas (shitf, ctrol, flecha arriba o abajo).
Quiza sea un "poco" mas tardado, pero creo que el resultado vale la pena.
Saludos
__________________
Ya tengo Firma!
Responder Con Cita
  #18  
Antiguo 21-01-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
pues a mi me parece más sencillo utilizar las funciones del mismo cxGrid y simplemente seleccionar las que se quieren cancelar; es decir, no hay necesidad de campos extra, ni de tablas en memoria, ni de checkboxes.
Cita:
Empezado por AzidRain Ver Mensaje
Es lo que yo decia contraveneno, ¿verdad que es mas sencillo?
Estoy de acuerdo, puede ser mas sencillo, pero también la solución que di es sencilla, no es complicada. Como es mas sencillo utilizar el cxGrid porque no indican algo de la solución, que propiedades se debe tocar , un poco de codigo para saber por donde ir....., si bien algunos no tenemos los DevExpress (ni pirata), pero el hecho de encontrar comentarios y soluciones sobre algunas cosas que nos toman mas tiempo con componentes standares, nos ayudaría a saber si comprar o no dichos componentes. Lo unico que se me viene a la cabeza para seleccionar varios registros es que sea MultiSelect ¿pero no creo que se esten refiendo a eso verdad?.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 21-01-2009 a las 18:27:27.
Responder Con Cita
  #19  
Antiguo 21-01-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
Se conocen como InternalCalc.
Estaba casi segura que en mi comentario había puesto que el campo debe ser InternalCalc, creo que en estos días ando volando.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #20  
Antiguo 21-01-2009
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Pues el multiselect viene incluido en el grid que trae por defecto Delphi, si no les gusta usar dos teclas para seleccionar simplemente se cambia la tecla a enter o algo asi y listo. El detalle de meter checkboxes es que el usuario solo podra darse cuenta que ha seleccionado un registro por la marquita, en cambio con multiselect se marca toda la fila, con lo que me parece es más que obvio que está seleccionado. Por otro lado, el usar el multiselect es el estandar que usa windows para todo.

Otra forma es habilitar el multiselect y marcar cada registro con un doble click.

Una cosa que podrias hacer si es posible es consultar con los usuarios que tendrá tu sistema y comentarles las opciones que hay para obtener su punto de vista y asi trabajar sobre la opción que se les haga mas fácil de usar. Esta práctica es muy útil y te ayudará a trabajar en lo que efectivamente van a buscar tus usuarios.
__________________
AKA "El animalito" ||Cordobés a mucha honra||

Última edición por AzidRain fecha: 21-01-2009 a las 22:17:21.
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
Problemas con cxGrid Cheyenne Varios 1 03-12-2008 12:18:07
Combobox en cxGrid paladincubano Conexión con bases de datos 2 28-11-2008 16:18:48
Checkbox en uno cxGrid Paulao Varios 4 05-05-2008 17:32:36
Duda con cxGrid paladincubano Varios 2 07-02-2008 13:14:31
Duda con CxGrid El_Perrito Varios 0 12-05-2005 19:08:53


La franja horaria es GMT +2. Ahora son las 07:32:45.


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